ZYNQ平台学习--(4)设备树生成

原创 2016年08月30日 10:54:36

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文件。

Zynq-Linux移植学习笔记之一-入门

1、相关网站 zynq linux软件网站:www.wiki.xilinx.com zynq u-boot github地址:https://github.com/xilinx   2、启动过程 ...

Linux 2.6内核配置说明(11----File systems文件系统)

Second extended fs support Ext2文件系统是Linux的标准文件系统,擅长处理稀疏文件 Ext2 extended attributes Ext2文件系统扩...

基于Zynq平台的设备树指南 --第四部分

获取资源     当内核模块驱动被加载时,就是获取硬件资源的控制权的时机。比如:读取和写入对应的寄存器,并且获取硬件的中断号。     我们仍然分析设备树中的同一个节点 xillybus_0: xil...
  • niu2006
  • niu2006
  • 2014年11月29日 00:47
  • 1027

基于Zynq平台的设备树指南 --第一部分

这个指南的目标读者: 这个指南是基于赛灵思的 Zynq-7000 EPP 设备编写的,但是关于设备树的通用知识也适用于使用设备树的任何Linux 内核。这里的例子运行环境是:在Zedboard上运...
  • niu2006
  • niu2006
  • 2014年11月18日 21:05
  • 815

基于Zynq平台的设备树指南 --第五部分

应用程序相关的数据      正如上面提到的,设备树通常用来传递特定的信息,因此单个驱动可以管理功能类似的硬件。例如:如果硬件是LCD显示驱动,像素尺寸甚至物理尺寸这些信息都有可能出现在设备树中。串口...
  • niu2006
  • niu2006
  • 2014年11月29日 00:50
  • 488

基于Zynq平台的设备树指南 --第二部分

设备树的结构 一个在Zynq上运行Linux的设备树典型格式如下:   /dts-v1/; / {   #address-cells = ;   #size-cells = ;   co...
  • niu2006
  • niu2006
  • 2014年11月24日 06:13
  • 604

基于Zynq平台的设备树指南 --第三部分

定义外围设备          很有可能,你读到这里是因为你想为自己的外围设备编写Linux驱动。推荐学习这方面基础的书是非常有名的 Linux DeviceDrivers.但是在开始为自己的设...
  • niu2006
  • niu2006
  • 2014年11月29日 00:43
  • 600

ZYNQ的Linux开发--使用SDK生成设备树

开发环境: Windows下的Vivado套件 Linux ubuntu Step1:首先从Xilinx GitHub上下载Device Tree Generator(设备树生成器)的BSP h...

tiny4412学习(二)之移植linux-4.x支持设备树

硬件平台:tiny4412系统:linux-4.4文件系统:busybox-1.25编译器: arm-none-linux-gnueabi-gcc (gcc version 4.8.3 2014032...

设备树学习资料

  • 2014年06月19日 22:51
  • 1.11MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ZYNQ平台学习--(4)设备树生成
举报原因:
原因补充:

(最多只允许输入30个字)