21.2.3. 타겟 보드 구성 파일(.px4board)을 통한 펌웨어 컴파일
지금까지 우리는 21.2.1 단원에서 Kconfig 트리로 ’의존성 논리’를 세웠고, 21.2.2 단원에서 CMake 구조로 ’번역 및 결합 규칙’을 정교하게 깎아 왔다. 이는 마치 최상급 엔진(커스텀 모듈)을 완벽하게 설계하고 결합 매뉴얼까지 써둔 것과 같다.
하지만 아무리 훌륭한 엔진이라도 ’이 기체에 탑재하라’는 장군의 최종 출격 명령서가 떨어지지 않으면 공장 라인에 투입되지 못한다. PX4 빌드 아키텍처에서 이 출격 명령서 역할을 하는 것이 바로 boards/ 디렉터리에 흩어져 있는 .px4board (타겟 보드 구성) 파일들이다.
1. make 명령어의 종착지
개발자들이 픽스호크 펌웨어를 빌드할 때 습관적으로 치는 명령어, make px4_fmu-v6x_default를 분해해 보자.
px4: 제조사 벤더 명칭fmu-v6x: 칩셋 보드 모델 (STM32H753)default: 빌드 성격 (예:default,rtps,bootloader등)
이 짧은 명령어는 정확하게 소스 트리 상의 boards/px4/fmu-v6x/default.px4board 파일을 정조준하는 좌표계이다. Make 도구는 이 좌표계를 따라가 해당 텍스트 파일을 열고, 그 파일 안에 빼곡히 적혀 있는 수백 줄의 Kconfig 변수 목록을 메모리로 흡수하기 시작한다.
2. .px4board: 100만 줄의 소스 코드를 재단하는 가위
default.px4board 파일 안에는 PX4가 지원하는 100여 개의 모듈 중에서 이 특정 기체(예: v6x)에 무엇을 살리고 무엇을 죽일지가 y와 n이라는 알파벳 하나로 결정되어 있다.
# boards/px4/fmu-v6x/default.px4board 파일 내부 예시
CONFIG_DRIVERS_DISTANCE_SENSOR_TFMINI=y
CONFIG_DRIVERS_UAVCAN=y
CONFIG_MODULES_EKF2=y
# CONFIG_MODULES_CUSTOM_APP is not set
위 예시에서 볼 수 있듯, 방금 전 21.2.1 단원에서 Kconfig 메뉴를 띄우기 위해 선언했던 CONFIG_MODULES_CUSTOM_APP 변수 역시 이 보드 설정 파일 안에 기록되어야만 비로소 생명력을 얻는다.
만약 저 값이 is not set 이나 n으로 주석 처리되어 있다면, CMake는 여러분의 src/modules/custom_app 폴더를 쳐다보지도 않은 채 펌웨어 빌드를 끝내버린다. 여러분의 모듈을 펌웨어 안으로 욱여넣는 유일한 방법은 저 값을 수동으로 열어 =y 로 고치거나, make px4_fmu-v6x_default boardconfig (GCS 메뉴 화면)를 열어 스페이스바로 체크박스를 켜서 시스템이 알아서 저 파일에 =y를 쓰게 만드는 것뿐이다.
그렇다면 이 작은 .px4board 파일 안에 박힌 CONFIG_MODULES_CUSTOM_APP=y라는 단 한 줄의 텍스트가, 어떻게 그토록 거대한 CMake 엔진을 깨워서 내 폴더까지 도달하게 만드는 것일까? 이 트리거(Trigger)의 파싱(Parsing) 메커니즘을 이어지는 21.2.3.1 단원에서 현미경으로 들여다보자.