在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 11416|回复: 5

[活动] 【zynq征文】设备树生成

[复制链接]
发表于 2013-2-20 15:10:13 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
本帖最后由 huxiaokai2005 于 2013-2-21 10:11 编辑


ARM Device Tree
起源于OpenFirmware (OF),在过去的Linux中,arch/arm/plat-xxxarch/arm/mach-xxx中充斥着大量的垃圾代码,相当多数的代码只是在描述板级细节,而这些板级细节对于内核来讲,不过是垃圾,如板上的platform设备、resourcei2c_board_infospi_board_info以及各种硬件的platform_data。为了改变这种局面,Linux社区的大牛们参考了PowerPC等体系架构中使用的Flattened Device TreeFDT),也采用了Device Tree结构,许多硬件的细节可以直接透过它传递给Linux,而不再需要在kernel中进行大量的冗余编码。


Device Tree
是一种描述硬件的数据结构,由一系列被命名的结点(node)和属性(property)组成,而结点本身可包含子结点。所谓属性,其实就是成对出现的namevalue。在Device Tree中,可描述的信息包括(原先这些信息大多被hard codekernel中):CPU的数量和类别,内存基地址和大小,总线和桥,外设连接,中断控制器和中断使用情况,GPIO控制器和GPIO使用情况,Clock控制器和Clock使用情况。


通常由.dts文件以文本方式对系统设备树进行描述,经过Device TreeCompiler(dtc)dts文件转换成二进制文件binary device tree blob(dtb).dtb文件可由Linux内核解析,有了device tree就可以在不改动Linux内核的情况下,对不同的平台实现无差异的支持,只需更换相应的dts文件,即可满足。



因此本节介绍一下基于zynqdevice tree生成方法,主要参考xilinx wikiDevice Tree Generator方法:http://wiki.xilinx.com/device-tree-generator

1. 下载Device Tree Generator(Ubuntu平台)


首先通过Git下载xilinx网站上的Device TreeGenerator工具,笔者的平台是Ubuntu11.04,脚本如下:





  1. git clone git://git.xilinx.com/device-tree.git bsp/device-tree_v0_00_x


复制代码

2. EDK/SDK配置(Windows平台)


由于笔者在ubuntu平台上没有安装ISE套件,因此直接在Windows平台上配置EDK/SDK


EDK中建立了系统,通过“Export Hardware Design to SDK”导入到SDK中,如图1所示,硬件配置已导入到了SDK中,

Snap1.jpg

1


然后将Ubuntu平台上下载的Device Tree Generator工具拷贝到windows中,文件如图2所示。 device-tree.zip (1.85 MB, 下载次数: 359 )


Snap2.jpg

2


打开Xilinx Tools->Respositories工具

Snap3.jpg

3


Local Repositories中点击New,加载到Device TreeGenerator工具的目录,然后点击Rescan Repositories,点击OK完成配置,如图4所示

Snap4.jpg

4

3. Device Tree Generator工具使用(Windows平台)


点击File->New->Xilinx Board Support Package

Snap5.jpg

5


可以发现在Board Support Package OS选项中有device-tree,在未配置Device Tree Generator工具之前只有standalone

Snap6.jpg

6


点击Finish进入BSP的设置

Snap7.jpg

7


首先设置console device,笔者在EDK配置中只配置了PS部分的UART口,如图8所示,此处只能选择ps7_uart_1

Snap8.jpg

8

然后是Bootargs,默认设置是console=ttyS0 root=/dev/ram


console
参数是需要与consoledevice参数相同;


root
参数是引导Linux内核到此参数设置的位置处寻找文件系统,这个位置可以在RAMcompact flash disk或者远程计算机共享的网络文件系统NFS中,相应参数设置如表1所示。

1

  root filesystem location    bootarg options  
  ramdisk
  
  root=/dev/ram
  
  compact flash disk
  
  root=/dev/xsysace/disc0/partN (N表示文件系统的分区号)
  
  nfs
  
  root=/dev/nfs nfsroot=<nfs  server>:<nfs share>,tcp
  


BSP
设置完成后点击Build Project,会生成xilinx.dts文件,如图9所示。

Snap9.jpg

9


4. dtb生成(Ubuntu平台)


dtb
文件需要DTC工具转换dts文件得到,在《Linux内核》这节中下载了linux-digilent,其中就有DTC工具。因此这一步需要转换到Ubuntu平台上执行。


xilinx.dts文件拷贝到linux-digilent文件夹中,执行以下脚本可生成dtb文件,如图10所示。






  1. cd linux-digilent
  2. ./scripts/dtc/dtc -I dts -O dtb -o ./devicetree.dtb ./xilinx.dts


复制代码

Snap10.jpg

10

发表于 2013-5-20 10:27:57 | 显示全部楼层
好东西,正是我要找的
发表于 2013-6-27 09:28:33 | 显示全部楼层
十分感谢楼主,正是紧急需要的,谢谢
发表于 2014-2-19 08:50:18 | 显示全部楼层
很好,今天试一试。
发表于 2014-6-10 22:43:45 | 显示全部楼层
感谢楼主分享!!
发表于 2016-3-24 20:17:10 | 显示全部楼层
mark  goood
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条


小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-25 08:54 , Processed in 0.030001 second(s), 10 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表