Linux2015. 4. 29. 10:06

디바이스 트리는

하드웨어 종속적인 부분(GPIO/timer 등등)을 커널에서 분리시켜 별도의 파일로 관리하는 것으로

기존의 board_*.c 파일을 대체하는 기술이다.


ARM 커널 패치등이 워낙 오래걸려 메인 트리를 적용하는데 오래 걸리다 보니 이런식으로 분리하는데

2013년 정도 부터 적용되었고 그 이전에 2년 정도 코드를 정리하는데 시간이 소요된 것으로 보인다.

그래서 imx6 시리즈 와 같이 2013년 이후 SoC 들에 대한 권장사항으로 device tree를 사용하도록 한다.


[링크 : http://www.devicetree.org/Main_Page]

[링크 : http://en.wikipedia.org/wiki/Device_tree]

    [링크 : http://www.elinux.org/images/a/ad/Arm-soc-checklist.pdf]


dtc는 device tree compiler로

텍스트 파일을 바이너리로 컴파일 해주며 일종의.. 구조체로 변환하는 느낌이다.

[링크 : https://git.kernel.org/cgit/utils/dtc/dtc.git]

[링크 : http://forum.falinux.com/zbxe/index.php?document_srl=613440&mid=lecture_tip]


fdtdump 를 통해서 바이너리의 내용을 덤프 할 수 있다.

$ dtc -@ -I dts -O dtb -o 1st-overlay.dtb 1st-overlay.dts

$ fdtdump 1st-overlay.dtb


/dts-v1/;

// magic:           0xd00dfeed

// totalsize:       0x106 (262)

// off_dt_struct:   0x38

// off_dt_strings:  0xe8

// off_mem_rsvmap:  0x28

// version:         17

// last_comp_version:    16

// boot_cpuid_phys: 0x0

// size_dt_strings: 0x1e

// size_dt_struct:  0xb0


/ {

    compatible = "brcm,bcm2708";

    fragment@0 {

        target = <0xdeadbeef>;

        __overlay__ {

            status = "okay";

        };

    };

    __fixups__ {

        i2s = "/fragment@0:target:0";

    };

};


[링크 : https://www.raspberrypi.org/documentation/configuration/device-tree.md] 


'Linux' 카테고리의 다른 글

IIO - Industrial I/O  (2) 2015.09.03
insmod / modprobe 차이  (0) 2015.08.25
커널 컴파일 옵션 neon 과 cpu feature  (0) 2015.04.28
쓰레드 / 프로세스  (0) 2015.04.27
리눅스 1분만에 커널 빌드하기  (0) 2015.04.06
Posted by 구차니