본문 바로가기

VEDA 복습/리눅스, 리눅스 프로그래밍

VEDA 56일차 - 리눅스 커널 프로그래밍 및 디바이스 드라이버

반응형

 

디바이스 트리

보드 위에는 많은 장치들이 존재

plug-n-play : plug - driver load - play 과정이 내부적으로 진행된다.

ex) connect -> 전기적으로 인식(회로) -> OHCI(EHCI) USB adapter controller가 인식 => device tree를 바탕으로 장치 드라이버가 존재하는 경우 실행(완전히 다르지 않는 이상 드라이버는 다른 유사한 장치에서도 사용 가능하다.)

ACPI

device tree : document, 현재 기기 상태에 대한 정보를 표기, .dts(device tree, 하드웨어 기술), .dtsi(include 파일, 하드웨어 기술) => .dtc(컴파일러) => dtb(device tree blob), .dtbo(dtb + overlay)

driver.o => (obj-y : zImage, kernel, 커널과 함께 실행 / obj-m : /lib/modules/..../driver.ko.xz, 디스크 상에 존재, 아직 메모리에 올라오지는 않음)

 

kernel porting 

1. porting boot loader : u-boot(리눅스, cpu, ram, uart etc 프로그램이 하드웨어에 대한 이해가 필요하다. => device tree source의 등장 // Open Firmware Group, OF_xxxxxx)

 

아직까지는 physical address이다.

 

2. kernel porting(cpu, ram, hdd,(mmcblock), uart, eth) -> 수작업 > automatic - Yocto

3. device drivers(etc devices)

4. applications

5. root file system

 

디바이스 트리= 노드{속성(키 : 값), 자식 노드}, 키와 값으로 구성된 한 쌍 형태

/ { Node 1{cn1, cn2}, Node 2{cn1} };
인터럽트 관계

 

디바이스 트리로 pinctrl이 가능하다. 이 부분은 더 학습이 필요할 듯 하다.

반응형