18.8.1. 다기종 칩셋 간 통신(Inter-Processor Communication): uORB over UART

18.8.1. 다기종 칩셋 간 통신(Inter-Processor Communication): uORB over UART

현대의 고성능 자율 주행 로보틱스 및 무인 항공기 하드웨어 플랫폼은 결코 단일 마이크로컨트롤러(MCU) 하나만으로 복잡다단한 운영체제 태스크를 홀로 감당하지 않는다. 비행체의 고차원 코어 로직과 EKF 추정을 관장하는 메인 FMU(Flight Management Unit), 모터 PWM 신호의 하드-리얼타임(Hard Real-time) 독립 출력을 전담하는 안전 보조 IO 코프로세서(IO Coprocessor), 그리고 고수준의 비전 AI 알고리즘을 구동하는 별도의 컴패니언 컴퓨터(Companion Computer)가 물리적으로 엄격히 나뉘어 하드웨어적 분산 병렬 처리(Distributed Processing)를 지향한다. 본 절에서는 오직 단일 칩셋의 RAM 내부 공간에서만 통용되던 폐쇄적 uORB 미들웨어가, 어떻게 시스템의 경계를 넘어 물리적인 구리선(UART)을 타고 이종 프로세서 간의 전역적(Global) 통신 척추로 경이롭게 확장하는지 그 아키텍처를 심층 분석한다.

1. 물리적 단절과 uORB 공간의 논리적 브릿징(Bridging) 확장

단일 통합 칩 내에서 orb_publishorb_copy 함수 호출은 철저히 동일한 가상 주소 공간(Virtual Address Space) 위에서의 포인터 주소 참조 및 memcpy 메모리 복사 연산으로 귀결된다. 그러나 칩셋이 물리적으로 둘로 쪼개지는 순간, FMU의 C++ 스레드는 더 이상 상대방 IO 칩의 RAM 영역에 레지스터 레벨로 얼쩡거릴 수 없는 거대한 장벽과 마주한다.

이러한 물리적 단절을 극복하기 위해 PX4-Autopilot은 “로컬 캐시 구독 프록시 브릿지(Local Cache Subscription Proxy Bridge)” 디자인 패턴을 활용하여 이종 간의 IPC(Inter-Processor Communication) 기틀을 구현해 낸다.

  1. 물리적 직렬 포트 연결: FMU 메인 칩과 IO MCU 보조 칩 사이는 아키텍처상 통상 1.5Mbps 이상의 매우 높은 대역폭을 지닌 고속 하드웨어 UART(혹은 시리얼 포트 규격) 버스로 핀투핀(Pin-to-Pin) 결선이 이루어진다.
  2. 직렬화(Serialization) 에이전트 주둔: FMU 측에는 외부 송신을 전담하는 백그라운드 uORB 에이전트 스레드가 상주하며, 바깥으로 전달해야 할 토픽(예: 하위 모터를 움직이라는 actuator_outputs)을 조용히 구독(Subscribe)한다. 반대편 IO MCU 측에는 반대로 수신만을 전담하는 리스너 에이전트가 대칭으로 존재한다.
  3. 바이너리 패키징 및 전송 릴레이: FMU 송신 에이전트가 로컬 통신 버퍼에서 새로운 명령 상태를 읽어 내면, 이를 통신 칩에 맞도록 바이너리 직렬화(Serialization)하여 UART 하드웨어 TX 버퍼에 마구 밀어 넣는다. 물리적 구리 케이블을 타고 반대편 칩의 RX 버퍼로 전압 파동이 도달(수신)되면, IO MCU 측 에이전트가 이를 수학적으로 역직렬화(Deserialization) 복원하여 자신의 로컬 uORB VFS 공간에 마치 로컬에서 일어난 일인 양 동일한 이름(actuator_outputs)으로 다시 발행(Publish)한다.

이러한 투명한 섀도우 프록시(Proxy) 아키텍처 지원 덕분에, 최상위 제어 로직을 작문하는 코어 개발자는 “이 토픽 데이터가 현재 우리 칩 안에서 돌고 있는지, 험난한 선을 타고 저쪽 칩으로 넘어가는지“를 시스템 레벨에서 전혀 의식할 필요 없이, 오직 단일하고 투명한(Transparent) orb_publish 인터페이스 하나만을 바라보고 자유롭게 무결성 프로그래밍을 전개할 수 있다.

2. 시리얼 통신 대역폭 딜레마와 선별적 필터 동기화

단일 칩 내부 RAM의 무식한 메모리 통복사는 나노초(ns) 혹은 최악이어야 수 마이크로초(us) 단위로 광속 처리되지만, UART 버스 채널은 기껏해야 초당 최대 1~2 메가바이트(MB/s) 단위로 허덕이는 매우 치명적인 물리적 병목 구간(Bottleneck)이다. 만일 FMU 내부 센서군에서 발생하는 수백 개의 모든 비행 토픽 해일을 무작정 115200bps 등비의 좁은 시리얼 선으로 욱여넣어 밀어버리면, 버스 백플레인은 즉시 처참하게 폭주(Saturation)하고 제어 명령 큐가 통째로 마비되고 만다.

따라서 PX4의 이기종 IPC 브릿지 에이전트는 결단코 무작위적인 전체 전역 동기화(Global Sync)를 맹목적으로 수행하지 않는다. 오직 사전에 아키텍트에 의해 화이트리스트(Whitelist)로 엄격히 통과 승인된, 생존에 꼭 필요한 기체 제어 및 센서 폴백 상태 토픽들(예: 모터 회전 제어 타겟, 라디오 조종기 스틱 신호 등) 만을 족집게처럼 선택적으로 타겟팅하여 양방향 펌프 브릿징한다. 이는 IPC 아키텍처가 방대한 지식의 하드 동기화보다는, 칩 간 핵심 명령의 지시적 하달과 생존 리포트의 수합이라는 명확한 수직적 군사 릴레이(Relay)에 기술 초점이 날카롭게 맞추어져 있음을 여실히 시사한다.

결론적으로 PX4 시스템의 uORB over UART 매커니즘은, 공간적으로 철저히 분산 격리된 이기종 하드웨어 칩셋들을 논리적으로는 하나의 거대한 전역 토픽 생태계로 굳건히 결속시키는 투명한 혈관 파이프라인이며, 다중 MCU 설계의 기형적 복잡도를 미들웨어 하단 공간으로 추상화하여 우아하게 은닉해 버리는 임베디드 항공 통신 공학의 눈부신 모범 교보재를 제시한다.