u-Boot dtb 파일이란 무엇이며 어떻게 사용합니까 (BeagleBoard xM)?


13

BeagleBoard xM (Rev. C) 용 사용자 지정 Linux를 구축하려고합니다. 저는 많은 C / C ++를 사용하지만 처음부터 Linux를 빌드하고 설치하는 초보자입니다.

유망한 것처럼 보이는 Yocto Project 빌드 어플라이언스 ( https://www.yoctoproject.org/ )를 사용했습니다. u-Boot 부트 로더, Linux 커널 및 루트 파일 시스템 용 파일을 빌드했습니다.

이 페이지 는 Yocto에서 생성 된 파일을 사용하여 마이크로 SD 카드를 설정하는 지침을 제공합니다. 그러나 이미지 파일에는 설정 지침에 언급되지 않은 ".dtb"파일이 포함되어 있습니다.

이 파일은 보드 하드웨어와 관련이 있습니까? 여러 사이트에서 dtd 파일로드 (uEnv.txt에있을 수 있습니까?)에 대해 언급했지만 자세한 정보를 찾지 못했습니다.

위의 지침을 사용하여 MLO 및 u-boot.img로 부팅 파티션을 설정하고 uEnv.txt로 약간 엉망이되었습니다. 또한 루트 파일 시스템으로 두 번째 파티션을 설정했습니다.

부팅 및 로그인 (직렬 포트 콘솔을 통해) 할 수 있었지만 대부분의 보드 하드웨어 (예 : 비디오 및 이더넷을 포함한 모든 USB 장치)가 작동하지 않는 것 같습니다. .dtb 파일을 사용하지 않았기 때문일 수 있습니까?

누군가 dtb를 설명하고 비글 보드에서 사용하는 방법을 설명 할 수 있습니까? 감사!


파일 이름을 잘못 읽은 것으로 판명되었습니다. 원래는 ".dtd"파일이라고 생각했지만 실제로는 ".dtb"이므로 정보를 찾을 수 없었습니다. 질문이 업데이트되었습니다.
Jeremy

개념을보다 잘 이해하기위한 QEMU 가상 장치의 최소 예 : stackoverflow.com/questions/17488320/…
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件

답변:


13

무엇을 검색해야하는지 알아 낸 후에 내 자신의 질문에 대답합니다. "dtb"파일에는 장치 트리 Blob (또는 이진)이 포함되어 있습니다 ( 여기서 설명 ). 보드에 대한 하드웨어 정보를 Linux 커널에 전달하는 새로운 방법입니다.

u-Boot에 의해 메모리에로드되고 커널로 전달 될 수 있습니다.

내가 사용한 u-Boot 명령은 다음과 같습니다.

setenv bootargs 'console=tty0 console=ttyO2,115200n8 root=/dev/mmcblk0p2 rootwait rootfstype=ext4 rw'
fatload mmc 0:1 0x80300000 zImage
fatload mmc 0:1 0x815f0000 beagle-xm.dtb
bootz 0x80300000 - 0x815f0000

zImage는 커널이고 beagle-xm.dtb는 장치 트리 Blob입니다. uEnv.txt에 "uenvcmd = ..."변수를 설정하여 부팅 프로세스를 자동화했습니다 (위의 내용이 포함됨).

부팅되고 장치 트리가로드되었다고 표시됩니다. 그러나 여전히 USB 장치 또는 비디오가 없습니다 (알 수있는 한). 그러나 나는 그것이 다른 문제 일 수 있다고 생각합니다.


3
보드에 대한 하드웨어 정보를 Linux 커널에 전달하는 새로운 방법입니다. 이전에는 하드웨어 정보를 커널로 전달할 수있는 방법이 없었습니다. 대신 커널은 모든 정보를 정적으로 포함해야하므로 모든 매핑을 나열하기 위해 보드 별 C 파일이 있어야합니다. 이것은 커널 관점에서 볼 때 유지 관리의 악몽이었습니다.
BatchyX

감사! dtb 파일을로드하는 방법을 알아 냈고 Linux가 부팅되어 드라이버로드에 대한 다양한 메시지를 발행하지만 USB 장치 (이더넷 모듈 포함)를 볼 수 없습니다. 새로운 질문을보십시오 : link . Linux에서 수동으로 구성해야 할 것이 있습니까?
Jeremy

그러나 dtb 파일에 어떤 주소를 사용해야합니까? 예를 들어, 내 zImage가 0x80300000 이상의 예제 대신 주소 0x43000000으로 이동하면 dtb는 어디로 가야합니까?
André van Schoubroeck

2

비글 본 블랙에서 우분투 14.04를 사용하고 있으므로 설정이 약간 다를 수 있지만 다음은 사용자 정의 dtb를로드하는 방법입니다.

uEnv.txt에서 다음과 같은 줄을 추가하십시오. dtb=name-of-desired.dtb

검색된 위치는 여기에 지정되어 있어야합니다 . 나를 위해 이것은 /boot/dtbs/linux-kernel/linux-kernel 이로 드 된 버전의 이름입니다.


0

2 dtb가 있습니다. u-boot dtb와 커널 dtb. 그것들은 2 가지입니다. U- 부트 보드 dts / dtb는 항상 사용되는 것은 아니며 필수는 아닙니다. u-boot에서 btw "u-boot"dtb를 사용하여 u-boot에 포함 시키거나 u-boot에 연결할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.