作者:huxiaokai2005
来源:http://bbs.eetop.cn/thread-378193-1-1.html
ARM Device Tree起源于OpenFirmware (OF),在过去的Linux中,arch/arm/plat-xxx和arch/arm/mach-xxx中充斥着大量的垃圾代码,相当多数的代码只是在描述板级细节,而这些板级细节对于内核来讲,不过是垃圾,如板上的platform设备、resource、i2c_board_info、spi_board_info以及各种硬件的platform_data。为了改变这种局面,Linux社区的大牛们参考了PowerPC等体系架构中使用的Flattened Device Tree(FDT),也采用了Device Tree结构,许多硬件的细节可以直接透过它传递给Linux,而不再需要在kernel中进行大量的冗余编码。
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文件,即可满足。
因此本节介绍一下基于zynq的device tree生成方法,主要参考xilinx wiki上Device Tree Generator方法:http://wiki.xilinx.com/device-tree-generator
1. 下载Device Tree Generator(Ubuntu平台)
首先通过Git下载xilinx网站上的Device TreeGenerator工具,笔者的平台是Ubuntu11.04,脚本如下:
2. EDK/SDK配置(Windows平台)
由于笔者在ubuntu平台上没有安装ISE套件,因此直接在Windows平台上配置EDK/SDK。
在EDK中建立了系统,通过“Export Hardware Design to SDK”导入到SDK中,如图1所示,硬件配置已导入到了SDK中,
图1
然后将Ubuntu平台上下载的Device Tree Generator工具拷贝到windows中,文件如图2所示。
device-tree.zip (1.85 MB)
图2
打开Xilinx Tools->Respositories工具
图3
在Local Repositories中点击New,加载到Device TreeGenerator工具的目录,然后点击Rescan Repositories,点击OK完成配置,如图4所示
图4
3. Device Tree Generator工具使用(Windows平台)
点击File->New->Xilinx Board Support Package
图5
可以发现在Board Support Package OS选项中有device-tree,在未配置Device Tree Generator工具之前只有standalone
图6
点击Finish进入BSP的设置
图7
首先设置console device,笔者在EDK配置中只配置了PS部分的UART口,如图8所示,此处只能选择ps7_uart_1
图8
然后是Bootargs,默认设置是console=ttyS0 root=/dev/ram
console参数是需要与consoledevice参数相同;
root参数是引导Linux内核到此参数设置的位置处寻找文件系统,这个位置可以在RAM、compact 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所示。
图9
4. dtb生成(Ubuntu平台)
dtb文件需要DTC工具转换dts文件得到,在《Linux内核》这节中下载了linux-digilent,其中就有DTC工具。因此这一步需要转换到Ubuntu平台上执行。
将xilinx.dts文件拷贝到linux-digilent文件夹中,执行以下脚本可生成dtb文件,如图10所示。
图10
本视频基于Xilinx公司的Artix-7FPGA器件以及各种丰富的入门和进阶外设,提供了一些典型的工程实例,帮助读者从FPGA基础知识、逻辑设计概念
本课程为“从零开始大战FPGA”系列课程的基础篇。课程通俗易懂、逻辑性强、示例丰富,课程中尤其强调在设计过程中对“时序”和“逻辑”的把控,以及硬件描述语言与硬件电路相对应的“
课程中首先会给大家讲解在企业中一般数字电路从算法到流片这整个过程中会涉及到哪些流程,都分别使用什么工具,以及其中每个流程都分别做了
@2003-2020 中国电子顶级开发网