๋ณธ ๋ฆฌํฌ์งํ ๋ฆฌ๋ ๋์ [๋ฆฌ๋ ์ค ์ปค๋์ ๊ตฌ์กฐ์ ์๋ฆฌ 1, 2๊ถ]์ ๊ธฐ๋ฐ์ผ๋ก, ํ์ ์์ ์๊ตฌํ๋ ํต์ฌ ์ปค๋ ๋๋ฒ๊น ๋ฐ ๋๋ฐ์ด์ค ๋๋ผ์ด๋ฒ ๊ฐ๋ฐ ์ญ๋์ ๋จ๊ธฐ๊ฐ์ ๋ง์คํฐํ๊ธฐ ์ํ ์ค์ต ๋ฐ ํธ๋ฌ๋ธ์ํ ๊ธฐ๋ก์ ๋๋ค.
๋จ์ํ ์ด๋ก ๊ณต๋ถ๋ฅผ ๋์ด, ํธ์คํธ PC์์ ํฌ๋ก์ค ์ปดํ์ผ์ ์ํํ๊ณ ํ๊ฒ ๋ณด๋(Raspberry Pi 4)์ ๋์ ์ผ๋ก ๋ชจ๋์ ์ ์ฌํ๋ฉฐ ๋ฐ์ํ๋ ๋ค์ํ ์ด์๋ค์ ํด๊ฒฐํ๋ ๊ณผ์ ์ ๋ด๊ณ ์์ต๋๋ค.
๋ฒ์ ์ด 1์๋ฆฌ๋ง ๋ฌ๋ผ๋ ๋์์ด ๋ฌ๋ผ์ง๋ ์ปค๋์ ํน์ฑ์, ์ฒ ์ ํ๊ฒ ํต์ ๋ ํ๊ฒฝ์์ ์ค์ต์ ์งํํฉ๋๋ค.
- Target Board:
Raspberry Pi 4 Model B (4GB) - ARM64 - Target OS:
Raspberry Pi OS(64-bit) - Kernel Version:
6.18.34-v8+ - Host OS:
Ubuntu 24.04 LTS(Docker Container) - Cross-Compiler:
aarch64-linux-gnu-gcc - SSH & Terminal:
MobaXterm - Network Analysis:
tcpdump(Target) +Wireshark(Host)
ํ์ ๋๋ฐ์ด์ค ๋๋ผ์ด๋ฒ ๊ฐ๋ฐ์ ์ฆ์ ํฌ์ ๋ ์ ์๋๋ก ํต์ฌ ์ฝ์ด ์์ฃผ๋ก ์ปค๋ฆฌํ๋ผ์ ์ฌ๊ตฌ์ฑํ์ต๋๋ค.
-
00_env_setup/: ํฌ๋ก์ค ์ปดํ์ผ ํ๊ฒฝ ๊ตฌ์ถ ๋ฐ ์ปค๋ ์์ค ํธ๋ฆฌ(Module.symvers) ๋๊ธฐํ -
01_hello_module/: ๊ธฐ๋ณธ ์ปค๋ ๋ชจ๋ ์ ์ ๋ฐ ์ ์ฌ ์ค์ต -
02_ftrace_debugging/: ์ปค๋ ๋ด๋ถ ํจ์ ํธ์ถ ํ๋ฆ ์ถ์ (ํ์ ํ์ ๋๋ฒ๊น ํด)
-
03_process_thread/: ํ์คํฌ(Task) ์์ฑ ๋ฐ ์ค์ผ์ค๋ง ์ด๋ก /์ค์ต -
04_interrupt/: ํ๋์จ์ด ์ธํฐ๋ฝํธ(IRQ) ์ฒ๋ฆฌ ๊ตฌ์กฐ ๋ฐ ํธ๋ค๋ฌ ๋ฑ๋ก -
05_synchronization/: ๋ฉํฐ์ฝ์ด ํ๊ฒฝ์ ๋๊ธฐํ ๊ธฐ๋ฒ (Spinlock, Mutex) -
06_deferred_work/: ํ๋ฐ๋ถ ์ฒ๋ฆฌ ๊ธฐ๋ฒ (Workqueue, Tasklet)
๐ก ๊ฐ ๋๋ ํ ๋ฆฌ ๋ด๋ถ์๋ ์ค์ต ์์ค ์ฝ๋(.c, Makefile)์ ํจ๊ป, ์๋ฌ ํด๊ฒฐ ๊ณผ์ ์ ๋ด์ README.md๊ฐ ํฌํจ๋์ด ์์ต๋๋ค.