章節描述:
介紹如何通過SDK生成設備樹,以用於arm-Linux環境。
背景
開發環境:
- Windows:Vivado 2018.3
- Linux :ubuntu 16.04
介紹:
Device Tree是一種描述硬件的數據結構,由一系列被命名的結點(node)和屬性(property)組成,而結點本身可包含子結點。所謂屬性,其實就是成對出現的name和value。在Device Tree中,可描述的信息包括(原先這些信息大多被hard code到kernel中):CPU的數量和類別,內存基地址和大小,總線和橋,外設連接,中斷控制器和中斷使用情況,GPIO控制器和GPIO使用情況,Clock控制器和Clock使用情況。
通常由.dts文件以文本方式對系統設備樹進行描述,經過Device TreeCompiler(dtc)將dts文件轉換成二進制文件binary device tree blob(dtb),.dtb文件可由Linux內核解析,有了device tree就可以在不改動Linux內核的情況下,對不同的平台實現無差異的支持,只需更換相應的dts文件即可。
步驟
下載設備樹工具
在Xilinx GitHub上下載Device Tree Generator(設備樹生成器)的BSP,地址為device-tree-xlnx。
## 下載設備樹工具
git clone https://github.com/Xilinx/device-tree-xlnx.git
## 切換版本
cd device-tree-xlnx
git checkout xilinx-v2018.3
配置SDK
1、打開SDK。
2、選擇:Xilinx
-> Repositories
3、在Local Repositories
中點擊New,將在github中下載的文件夾路徑添加進去。
4、點擊OK
,等待編譯完成,大概需要2分鍾。
使用Device Tree Generator生成設備樹
還是在SDK中。
1、新建BSP:File
->New
->Board Support Package
2、在Board Support Package OS
中選擇device_tree
,點擊Finish
3、在BSP彈出的設置中,按照自己板子的設定將內核啟動參數填寫,填寫完后點擊OK
4、在SDK目錄下會看到生成的設備樹文件夾。
Makefile pl.dtsi system-top.dts system.mss
pcw.dtsi skeleton.dtsi system.dts zynq-7000.dtsi
修改設備樹
Linux系統下。
將設備樹文件下的system.dts文件復制到Linux下,與petalinux下的system-top.dts文件進行對比修改,完善自己的設備樹功能。修改之后開始就可以繼續進行內核移植了。
編譯設備樹
Linux系統下。
使用dtc生成設備樹文件即完成。
dtc -I dts -O dtb -o system.dtb system.dts