xilinx——zynq7000之设备树生成

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文件,即可满足。

1.下载用于生成device-tree文件的资源包

在ubuntu下使用指令下载对应版本的资源包。 
$ git clone https://github.com/Xilinx/device-tree-xlnx.git 
$ cd device-tree-xlnx 
$ git checkout xilinx-v2015.4

2.SDK配置

将device-tree-xlnx文件夹从ubuntu中拷贝到windows中,存放到xilinx安装目录下的SDK\2015.4\data\embeddedsw\lib\bsp文件下,并重命名为device-tree-xlnx_v2015_4。 
使用SDK打开第一节建立的工程。然后打开Xilinx Tools->Respositories工具。如图1所示。 


图1 SDK配置

在Local Repositories中点击New,加载到设备树资源包的目录,然后点击Rescan Repositories,点击OK完成配置,如图2所示。 


图2 加载资源包

3.创建设备树

点击File->New->Xilinx Board Support Package,在弹出的窗口中,输入设备树的名字,并在Board Support Package OS选择device_tree。如图3所示。 


图3 创建设备树

然后弹出Board Support Package Settings窗口,或者打开设备树项目的system.mss文件,点击Modify this BSP’s Settings也可以打开,如图4所示。 


图4 配置设备树

console device参数用于指定所使用的串口输出设备,在这里我们使用Uart_1。 
boot args参数用于指定启动时传递给内核的参数。输入下面参数: 
console=ttyPS0,115200 root=/dev/mmcblk0p2 rw earlyprintk rootfstype=ext4 rootwait devtmpfs.mount=0
 
console:指定控制台的设备以及波特了 
root:指定挂载的根文件系统,这里是/dev/mmcblk0p2,当时在创建linaro的sd卡镜像时会特别提示需要在SD卡中创建两个分区,第一个分区是FAT文件系统,存放内核,设备树,BOOT.bin等,而第二个就是存放Linaro文件系统了,这里也就是对应的mmcblk0p2设备。 
rootfstype:制定跟文件系统的类型,这里是ext4 
rw:rw参数告诉内核以读写方式加载根文件系统。 ro参数告诉内核以只读方式加载根文件系统,以便进行文件系统完整性检查,比如运行fsck; 
earlyprintk:在console设备注册前(也就是printk注册之前)提供对打印函数的支持,这个之前就可以使用early_printk()函数来代替printk()函数 
rootwait:让内核等待所有设备都被初始化完成后,再去执行root文件系统的挂载工作。这样可以避免根文件系统驱动初始化成功之前就挂载根文件系统

然后点击”OK”生成设备树文件。

4.dtb生成

将整个设备树的文件夹拷贝到ubuntu中。进入该文件夹,打开终端。输入如下指令: 
dtc -I dts -O dtb -o system.dtb system.dts 
既可以生产dtb文件。


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文件,即可满足。

1.下载用于生成device-tree文件的资源包

在ubuntu下使用指令下载对应版本的资源包。 
$ git clone https://github.com/Xilinx/device-tree-xlnx.git 
$ cd device-tree-xlnx 
$ git checkout xilinx-v2015.4

2.SDK配置

将device-tree-xlnx文件夹从ubuntu中拷贝到windows中,存放到xilinx安装目录下的SDK\2015.4\data\embeddedsw\lib\bsp文件下,并重命名为device-tree-xlnx_v2015_4。 
使用SDK打开第一节建立的工程。然后打开Xilinx Tools->Respositories工具。如图1所示。 


图1 SDK配置

在Local Repositories中点击New,加载到设备树资源包的目录,然后点击Rescan Repositories,点击OK完成配置,如图2所示。 


图2 加载资源包

3.创建设备树

点击File->New->Xilinx Board Support Package,在弹出的窗口中,输入设备树的名字,并在Board Support Package OS选择device_tree。如图3所示。 


图3 创建设备树

然后弹出Board Support Package Settings窗口,或者打开设备树项目的system.mss文件,点击Modify this BSP’s Settings也可以打开,如图4所示。 


图4 配置设备树

console device参数用于指定所使用的串口输出设备,在这里我们使用Uart_1。 
boot args参数用于指定启动时传递给内核的参数。输入下面参数: 
console=ttyPS0,115200 root=/dev/mmcblk0p2 rw earlyprintk rootfstype=ext4 rootwait devtmpfs.mount=0
 
console:指定控制台的设备以及波特了 
root:指定挂载的根文件系统,这里是/dev/mmcblk0p2,当时在创建linaro的sd卡镜像时会特别提示需要在SD卡中创建两个分区,第一个分区是FAT文件系统,存放内核,设备树,BOOT.bin等,而第二个就是存放Linaro文件系统了,这里也就是对应的mmcblk0p2设备。 
rootfstype:制定跟文件系统的类型,这里是ext4 
rw:rw参数告诉内核以读写方式加载根文件系统。 ro参数告诉内核以只读方式加载根文件系统,以便进行文件系统完整性检查,比如运行fsck; 
earlyprintk:在console设备注册前(也就是printk注册之前)提供对打印函数的支持,这个之前就可以使用early_printk()函数来代替printk()函数 
rootwait:让内核等待所有设备都被初始化完成后,再去执行root文件系统的挂载工作。这样可以避免根文件系统驱动初始化成功之前就挂载根文件系统

然后点击”OK”生成设备树文件。

4.dtb生成

将整个设备树的文件夹拷贝到ubuntu中。进入该文件夹,打开终端。输入如下指令: 
dtc -I dts -O dtb -o system.dtb system.dts 
既可以生产dtb文件。


猜你喜欢

转载自blog.csdn.net/su3752/article/details/79523603