전체 흐름
Zephyr는 작은 RTOS지만 단순한 super-loop가 아닙니다. kernel object, scheduler, interrupt, workqueue, device model, devicetree, Kconfig, west workspace가 서로 맞물려 하나의 firmware image를 만듭니다. 그래서 한 파일을 외우는 방식보다 "빌드 시점에 결정되는 것"과 "런타임에 상태가 바뀌는 것"을 나눠서 읽어야 합니다.
Kernelthread, scheduler, IRQ, timer
BuildKconfig, CMake, west, generated files
Hardwaredevicetree, board, pinctrl, driver
RuntimeIPC, workqueue, network, power
Debugmap, .config, zephyr.dts, logs
각 글은 이 네 축 중 하나만 보지 않고, 빌드 산출물이 런타임 상태로 바뀌는 지점을 코드와 그림으로 같이 표시합니다.
버전 기준
이 시리즈는 Zephyr v3.7.0 LTS3 태그의 소스를 분석합니다. 3.7 LTS 계열의 후속 유지보수 패치가 이 태그에 포함됐다는 뜻은 아닙니다. 제품 적용 전에는 공식 릴리스와 보안 수정을 별도로 확인해야 합니다. RC는 정식 릴리스와 구분합니다.
토픽 목록
Documents
Zephyr 공식 문서 한국어 번역
Zephyr 3.7.0 공식 문서를 요약·해설, 접을 수 있는 영어 원문, 한국어 전문 번역의 세 부분으로 읽습니다.
Kernel
Kernel Architecture
부팅 직후 z_cstart(), init level, iterable section, kernel object가 초기화되는 순서를 분석한다. 소스 코드 위치와 실제 사용 패턴을 함께 정리했습니다.
Kernel
Thread / Scheduler
k_thread, stack object, ready queue, cooperative/preemptive priority, timeout이 scheduler 결정에 들어가는 길을 읽는다. 소스 코드 위치와 실제 사용 패턴을 함께 정리했습니다.
Kernel
Interrupt / Exception
IRQ_CONNECT, irq_enable, ISR context, nested interrupt, deferred work의 경계를 실제 코드 흐름으로 읽는다. 소스 코드 위치와 실제 사용 패턴을 함께 정리했습니다.
Kernel
Memory Management
스택, 힙, mem_slab, mem_pool의 메모리를 누가 확보하고 해제하는지 살펴본다. 메모리 도메인, MPU, 사용자 모드가 접근 권한을 어떻게 제한하는지도 구분해 확인한다. 소스 코드 위치와 실제 사용 패턴을 함께 정리했습니다.
Device / Board
Device Model
DEVICE_DT_DEFINE 계열 macro, config/data 분리, API vtable, init level, device_is_ready의 의미를 읽는다. 소스 코드 위치와 실제 사용 패턴을 함께 정리했습니다.
Device / Board
Driver Model
DT_INST_FOREACH_STATUS_OKAY, DEVICE_DT_INST_DEFINE, compatible binding이 driver instance를 찍어내는 과정을 읽는다. 소스 코드 위치와 실제 사용 패턴을 함께 정리했습니다.
Device / Board
Devicetree
dts, overlay, binding yaml, generated header, ordinal, DEVICE_DT_GET이 하나의 빌드 파이프라인으로 이어지는 과정을 읽는다. 소스 코드 위치와 실제 사용 패턴을 함께 정리했습니다.
Build / Config
Kconfig
symbol, default, select, imply, depends on, prj.conf, board defconfig가 최종 .config로 수렴하는 과정을 읽는다. 소스 코드 위치와 실제 사용 패턴을 함께 정리했습니다.
Build / Config
Build System / west
west workspace, manifest, modules, CMake, generated files, build directory가 어떻게 Zephyr app 하나를 만드는지 읽는다. 소스 코드 위치와 실제 사용 패턴을 함께 정리했습니다.
Runtime Services
IPC / Synchronization
semaphore, mutex, queue, msgq, event, poll이 wait queue와 timeout으로 어떻게 수렴하는지 읽는다. 소스 코드 위치와 실제 사용 패턴을 함께 정리했습니다.
User Mode
사용자 권한과 메모리 보호
메모리 도메인과 커널 객체 권한을 구분하고, 사용자 시스템 호출의 검증 및 오류 처리 경로를 살펴본다.
Testing
Twister 테스트 실행
시나리오와 플랫폼 선택부터 빌드·실행·결과 보고까지, 통과한 단계와 미검증 범위를 구분한다.
Testing
Ztest 스위트와 판정
케이스 선언, 픽스처 수명, 사용자 테스트와 assertion·assumption·SKIP 결과를 연결해 읽는다.
Runtime Services
Timer / Workqueue
k_timer, timeout queue, delayed work, system workqueue가 interrupt와 thread 사이의 완충층이 되는 과정을 읽는다. 소스 코드 위치와 실제 사용 패턴을 함께 정리했습니다.
Runtime Services
Networking
net_if, net_pkt, net_buf, L2 드라이버, 소켓 API가 버퍼 소유권과 스레드 우선순위를 어떻게 함께 관리하는지 살펴본다. 소스 코드 위치와 실제 사용 패턴을 함께 정리했습니다.
Device / Board
Board Porting
board.yml, board DTS, defconfig, runner, pinctrl, flash/debug 설정이 하나의 board target으로 묶이는 과정을 읽는다. 소스 코드 위치와 실제 사용 패턴을 함께 정리했습니다.