최근 글
-
QNX란? 왜 자동차는 QNX를 사랑할까? 마이크로커널과 실시간성의 비밀임베디드 개발 환경 이야기 2025.09.28 21:55
이전까지의 내용은 주로 '임베디드 리눅스'의 세계에 머물러 있었습니다.커널, BSP, systemd, 디바이스 트리 등 리눅스 생태계에 대해 공부했습니다.하지만 자동차, 특히 생명과 직결된 안전 시스템(ADAS, 에어백, 클러스터)의 세계로 오면, 우리는 '리눅스'만큼이나, 아니 그보다 더 자주 'QNX'라는 이름을 듣게 됩니다.QNX는 단순한 또 하나의 OS가 아닙니다.시스템의 안정성과 응답 속도가 그 무엇보다 중요한 환경을 위해 탄생한, 근본부터 다른 철학을 가진 RTOS (실시간 운영체제)입니다.Part 1. QNX란 무엇인가? - 단순한 OS가 아닌 RTOS ⏱️먼저 RTOS(Real-Time Operating System, 실시간 운영체제)가 무엇인지 짚고 넘어가야 합니다.일반 OS (Linux..
-
IPC(Inter-Process Communication)란? 프로세스들의 대화법, IPC의 세계임베디드 개발 환경 이야기 2025.09.15 14:36
우리는 지금까지 커널, systemd, 부트로더 등 시스템의 근간을 이루는 요소를 배웠습니다.systemd가 수많은 프로세스(서비스, 애플리케이션)를 실행하면, 우리의 AVN 시스템은 비로소 생명을 얻게 됩니다.그런데 여기서 중요한 질문이 생깁니다.내비게이션 앱은 경로 안내 음성을 내보내기 위해 오디오 서비스에게 어떻게 말을 걸어야 할까요?미디어 플레이어는 현재 재생 중인 곡 정보를 홈스크린 UI에 어떻게 알려줄 수 있을까요?이들은 모두 별개의 집(독립된 메모리 공간)에 사는 별개의 프로세스입니다.옆집에 소리를 질러도 들리지 않는 것처럼, 한 프로세스는 다른 프로세스의 메모리를 직접 들여다보거나 함수를 호출할 수 없습니다.바로 이 '소통의 장벽'을 넘기 위해 운영체제가 제공하는 공식적인 대화 채널이 바로..
-
Device Tree란? 하드웨어의 청사진, Device Tree 완벽 해부임베디드 개발 환경 이야기 2025.09.15 14:35
우리는 부트로더가 커널을 깨우는 과정을 살펴보았습니다.그런데 여기서 한 가지 의문이 생깁니다.잠에서 막 깨어난 리눅스 커널은 자신이 올라가 있는 이 보드에 어떤 하드웨어 장치들이, 어디에, 어떻게 연결되어 있는지 어떻게 알 수 있을까요?과거에는 이 모든 하드웨어 정보가 커널 소스 코드 안에 C 언어로 덕지덕지 붙어있었습니다.이는 끔찍한 비극을 낳았죠.오늘은 이 비극을 해결하기 위해 등장한 영웅, 디바이스 트리(Device Tree)에 대해 깊이 있게 알아보겠습니다.Part 1. 디바이스 트리는 왜 태어났을까?디바이스 트리가 등장하기 전, ARM 아키텍처의 리눅스 커널은 '보드 파일(Board File)'이라는 C 코드(arch/arm/mach-xxx/board-yyy.c)를 통해 각 보드의 하드웨어 정보..
-
부트로더(Bootloader)란? 시스템의 첫 숨결, 부트로더와 U-Boot 깊이 보기임베디드 개발 환경 이야기 2025.09.15 14:33
우리는 지금까지 커널이 부팅되고, systemd가 서비스를 실행하며, ADB로 시스템을 제어하는 등, 이미 운영체제가 동작하고 있는 세상에 대해 탐험했습니다.하지만 시간을 거슬러 올라가, 시스템에 전원이 인가되는 바로 그 순간으로 돌아가 봅시다.텅 빈 메모리(RAM)와 아직 잠들어 있는 CPU. 운영체제라는 개념조차 존재하지 않는 이 태초의 상태에서, 과연 누가 가장 먼저 일어나 시스템에 첫 숨결을 불어넣는 걸까요?그 주인공이 바로 오늘 다룰 부트로더(Bootloader)입니다.Part 1. 부트로더란 무엇인가? - 운영체제를 깨우는 작은 거인부트로더(Bootloader)는 이름 그대로 운영체제(커널)가 부팅될 수 있도록 사전 준비 작업을 하고, 커널을 로드(Load)하는 역할을 하는 작은 초기화 프로그..
-
ADB란? ADB(Android Debug Bridge) 사용법 완벽 가이드임베디드 개발 환경 이야기 2025.09.15 14:32
우리는 지금까지 BSP와 커널을 통해 시스템의 가장 깊은 곳을 탐험했고, init 시스템과 systemd를 통해 시스템이 어떻게 살아 움직이는지 배웠습니다. 이제 시스템의 내부 구조에 대한 이론은 어느 정도 갖추어졌습니다.하지만 여기서 가장 중요한 질문이 남습니다."이 모든 것을 개발자의 PC에서 어떻게 제어하고, 들여다보고, 디버깅할 수 있을까?"AVN 타겟 보드에는 키보드나 마우스가 연결되어 있지 않습니다.우리는 어떻게 저 작은 보드 안으로 들어가 명령을 내리고, 로그를 확인하고, 파일을 옮길 수 있을까요?그 해답이 바로 오늘 우리가 연마할 필수 무기, ADB(Android Debug Bridge) 입니다.Part 1. ADB란 무엇인가? - PC와 타겟을 잇는 만능 다리ADB(Android Debu..