그라운드 임베디드 EN 유튜브 구독

노트 / 임베디드 리눅스

디바이스 트리: 보드 구성을 커널에 알리기

어떤 장치가 어떤 주소와 핀에 붙어 있는지 적은 파일. 같은 커널이 여러 보드에서 돌 수 있는 이유.

GROUND EMBEDDED · 정리 노트임베디드 리눅스 04디바이스 트리 1&i2c1 { 2 status = "okay"; 3 clock-frequency = <400000>; 4 tmp102@48 {

왜 필요한가

보드 설명.dts컴파일.dtb커널이 읽음맞는 드라이버 연결
같은 커널이 디바이스 트리만 바꿔 여러 보드에서 돕니다.

MCU 펌웨어는 보드마다 코드에 핀 번호를 적었습니다. 리눅스는 같은 커널 바이너리를 여러 보드에 쓰기 위해 보드 구성을 데이터 파일로 분리합니다. 이것이 디바이스 트리(.dts → 컴파일 → .dtb)입니다.

예: I2C에 온도 센서 추가

&i2c1 {
    status = "okay";
    clock-frequency = <400000>;
    tmp102@48 {
        compatible = "ti,tmp102";
        reg = <0x48>;
    };
};
  • compatible: 이 문자열과 맞는 드라이버를 커널이 찾아 연결
  • reg: 주소 (I2C 주소, 메모리 맵 주소)
  • status = "okay": 기본은 꺼져 있는 컨트롤러를 켬
무료 전자책이 주제를 한 권으로 이어 읽기 (PDF 3권)→

오버레이

라즈베리 파이 같은 보드는 기본 .dtb 위에 오버레이(.dtbo)를 얹어 확장 보드 구성을 추가합니다. config.txt의 dtoverlay= 한 줄이 그것입니다.

확인

  • 부팅 후 /proc/device-tree/에서 실제로 적용된 트리 확인
  • dmesg | grep tmp102로 드라이버가 붙었는지 확인
  • 핀 기능 선택(pinctrl)이 빠지면 컨트롤러는 켜졌는데 신호가 핀으로 안 나옵니다
영상으로 이어 보기제품은 어떻게 동작할까 시리즈 8편하늘 위 떠다니는 드론은 어떻게 동작할까? 프로펠러 4개로 뜨고 기우는 원리부터 비행 제어기 · PID · 센서 퓨전까지FREE PDF무료 전자책 3권 받기이 주제를 한 권으로 이어서 읽고 싶다면. BLDC 모터 제어, 직렬통신, 센서를 책 분량으로 묶었습니다. 이메일만 남기면 바로 받습니다.무료로 받기 →