디바이스 트리 예제

특히 프로세서별 .dtsi 파일에서 모든 주변 장치를 정의하는 것이 일반적이며, 대다수는 “상태” 속성을 “사용 안 함”으로 설정하여 커널이 이러한 주변 장치를 무시하도록 합니다. 그런 다음 보드 수준 장치 트리에는 프로세서 별 파일이 포함되고 원하는 주변 장치에 “okay”가 있는 “상태”를 할당하고 일부 보드별 매개 변수를 설정할 수 있습니다. 이는 보드별 DTS 파일을 깔끔하고 깔끔하게 유지하는 일반적인 방법입니다. ARM 아키텍처는 Linux 커뮤니티에서 큰 골칫거리가 되었습니다: 프로세서가 동일한 컴파일러와 많은 기능을 공유하더라도 각 구현체(즉, 칩)에는 레지스터에 대한 자체 주소와 약간 다른 구성이 있습니다. 그 위에, 각 보드에는 자체 외부 구성 요소 집합이 있습니다. 그 결과 커널 트리의 헤더 파일, 패치 및 특수 구성 매개 변수의 야생 포리스트가 생성되며, 각 조합은 특정 보드와 ARM 프로세서가 포함된 특정 칩과 일치합니다. 요컨대, 그것은 아무도 정말 좋아하지 않는 해킹의 추하고 유지 보수 할 수없는 더미로 밝혀졌다. 이 튜토리얼은 마음에 Xilinx `Zynq-7000 EPP 장치 (FPGA와 결합 ARM 피질-A9)로 작성되었지만, 일반적인 개념은 장치 트리를 사용하여 모든 리눅스 커널에 적용됩니다. 예제는 Zedboard에 대한 Xillinux 배포판이 사용된다고 가정합니다. 우리 대부분에게 장치 트리는 커널이 추가하거나 제거한 특정 하드웨어(즉, PL 논리)에 대해 커널에 알리는 위치이므로 커널이 이를 처리하기 위해 올바른 드라이버를 시작할 수 있습니다(또는 하드웨어가 제거된 경우) 이를 자제할 수 있습니다. 하드웨어에 대한 특정 정보가 전달되는 위치이기도 합니다. |사양 | 시스템 하드웨어를 설명하기 위해 devicetree라는 구문지정을 지정합니다.

부팅 프로그램은 devicetree를 클라이언트 프로그램의 메모리에 로드하고 장치 트리에 대한 포인터를 클라이언트에 전달합니다. 장치 트리 노드가 실제 하드웨어를 설명하는 데 사용할 수있는 방법에 대한 아이디어를 얻기 위해이 항목을 세분화 하자 : GIC의 인터럽트 장치 트리 바인딩 형식은 리눅스 커널 문서에서 여기에서 찾을 수 있습니다 : Devicetree.org 많은 회사와 개인이 f에 대한 커뮤니티 노력입니다. Devicetree 표준의 미래 발전을 촉진합니다. 장치 트리에 대한 간략한 소개와 커널과 관련된 방법에 대한 자세한 내용은 토마스 페타조니의 “인형을 위한 장치 트리” 슬라이드 데크를 참조하십시오. 또 다른 유용한 리소스는 그랜트 가능성과 조쉬 보이어에 의해 종이 “맛의 교향곡 : 임베디드 하드웨어를 설명하는 장치 트리를 사용하여”입니다. 실행 중인 커널에 대해 적용되는 장치 트리는 devicetree의 각 노드가 노드의 특성을 설명하는 속성을 가지는 DTS 형식으로 가져올 수 있습니다. 속성은 이름과 값으로 구성됩니다. devicetree는 시스템의 장치를 설명하는 노드가 있는 트리 데이터 구조입니다. 각 노드에는 표현되는 장치의 특성을 설명하는 속성/값 쌍이 있습니다.