실행중인 커널의 / sys를 사용하여 장치 트리에 대한 정보를 얻을 수 있습니까?


20

일반적으로 arm 시스템의 경우 장치 트리는 하드웨어 정보를 커널 (Linux)에 제공합니다. 이러한 장치 트리는 컴파일되어 커널에로드되는 dts (장치 트리 소스) 파일로 존재합니다. 문제는 그러한 dts파일에 액세스 할 수 없으며 파일에도 액세스 할 수 없다는 것 dtb입니다.

나는에 액세스 할 수 있습니다 /sys/proc시스템에서와 나는 그 날은 DTS에서 사용되는 "올바른 값을 추측"할 수 있도록 것인지 물어보고 싶은게?

또한이 질문에 대한 답변이 장치 트리 인터페이스가 처음에 사용되었는지 (즉 dtb, 커널에 제공되어 커널에 제공 되었는가 ) 더 많은 해킹 대신 "바닐라에서 우회하는 경우"에 따라 잠재적 인 답변이 측면을 추가로 강조 할 수 있습니다. 커널 전용 장치 정보 문제를 해결하기 위해 커널을 패치하십시오. "-solution?


부팅 이미지에 액세스 할 수 있습니까? 거기에서 장치 트리를 추출 할 수 있습니다. 내가 도움이 될 수 있습니다.
phk

답변:


27

/proc/device-tree 또는 /sys/firmware/devicetree/base

나는 둘 다 별칭이라고 생각 /sys/firmware/devicetree/base하고 길들이기 후에 더 나은 선택 일 것입니다 /proc.

그런 다음 파일에서 dts 속성에 액세스 할 수 있습니다.

 hexdump /sys/firmware/devicetree/base/apb-pclk/clock-frequency

정수의 출력 형식은 이진이므로 hexdump필요합니다.

dtc -I fs

파일 시스템에서 전체 장치 트리를 가져옵니다.

sudo apt-get install device-tree-compiler
dtc -I fs -O dts /sys/firmware/devicetree/base

dts를 stdout으로 출력합니다.

참조 : 커널 장치 트리를 나열하는 방법 | 유닉스 및 리눅스 스택 교환

dtc Buildroot에서

Buildroot에는 루트 파일 시스템 안에 BR2_PACKAGE_DTC=y넣을 수 있는 설정이 dtc있습니다.

QEMU -machine dumpdtb

QEMU 내에서 Linux를 실행하는 경우 QEMU는으로 명시 적으로 제공하지 않으면 DTB를 자동으로 생성 -dtb하므로 다음과 같이 직접 DTB 를 덤프 할 수도 있습니다.

qemu-system-aarch64 -machine virt -cpu cortex-a57 -machine dumpdtb=dtb.dtb

https://lists.gnu.org/archive/html/qemu-discuss/2017-02/msg00051.html 에서 언급했듯이

Linux 커널 v4.19 arm64 에서이 QEMU + Buildroot 설정 으로 테스트했습니다 .


4

내가 당신을 올바르게 이해하는지 잘 모르겠습니다.

dtb를 사용하여 부팅 한 시스템을 사용하는 경우 debugfs 내에서 장치 트리에 액세스 할 수 있어야합니다.

Pantelis Antoniou의 dtc 도구를 사용해 볼 수도 있습니다. 여기에는 bdt에서 dts를 인쇄하는 fdtdump 및 fdtget이 포함되어 있습니다.

장치 트리가없고 dtb에서 부팅하지 않았다면 머신 코드를 직접 살펴보고 모든 장치 별 속성과 노드를 dts에 추가해야합니다. 이러한 부팅에 대해 생성 된 "합성"장치 트리가 없습니다. 출발점은 비슷한 기계 또는 부모이며 시스템별로 시스템을 작동시킵니다.


명확히하기 위해 감사합니다. (가)있는 기회가 dtbdebugfs의를 통해 액세스 할 수 있습니다 아직이 의존하는 것 CONFIG_DEBUG_FS.config심지어 그들이 실제로 사용하는 것이 여전히 세트 단순한 변덕에 경우 dtb로 시작, 나는이 권리를 읽습니까은? 그래서 "나쁜 운"으로 그들은 장치 트리 인터페이스에 설치된 직접적인 커널 패치를 사용하지 않았으며, 맞습니까? 따라서 이것이 GPLv2를 위반하고 커널을 클로즈 소스한다는 점을 고려할 때 최후의 수단은 머신 코드라는 의미입니다.
humanandANDpeace

처음 두 개는 그렇습니다. 마지막으로, IANAL이지만 머신 arch / ??? / mach-??? / board-???. c는 이전 커널의 머신에 존재하는 특수 장치를 포함합니다. 이것은 GPL에 의해 커버되어야하며 유료로 제공되어야합니다. 개별 장치 드라이버는 폐쇄 된 소스 일 수 있으며 위반하지 않을 수 있습니다.
FRob
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.