Zynq Linux设备树文件的创建

转自:http://blog.chinaaet.com/cuter521/p/5100001052

一、准备工作

l         开发环境:

a)         Vivado 2014.2

b)        SDK 2014.2

l         利用Vivado搭建硬件环境,生成bitstream。

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

a)         下载链接:https://github.com/Xilinx/device-tree-xlnx/releases (2014.2之后的版本)

b)        我下载的是device-tree-xlnx-xilinx-v2014.2.01.zip,将之解压到E:\vivado\sw_repo路径下(设置repository路径要用到)

l         设置软件Repositories,GUI操作方法如下:

在SDK中操作点击菜单: Xilinx Tools > Repositories 

  

图1-1

点击New按钮,选择刚才的设置的路径下解压出来的文件夹,点击OK则设置完毕。

  

图1-2

二、Device-tree文件的创建

2.1、利用SDK GUI操作创建dts文件

在Vivado中通过Launch SDK指令打开SDK。

按照上述方法设置repository。

新建BSP。

图2-1

设置正确的话,在弹出的对话框内(图2-2)可以看到红色方框内的device-tree选项。

  

图2-2

选中,并点击Finish。

会弹出一个BSP设置窗口,如图2-3所示:

图2-3

打开设备树BSP的system.mss文件并点击“修改BSP设置”也能够弹出该窗口。

修改相应选项如下:

“boot args”参数用于指定启动时传递给内核的参数

“console device”参数用于指定所使用的串口输出设备

boot args的Value填为:

console=ttyPS0,115200 root=/dev/ram rw initrd=0x800000,8M earlyprintk rootfstype=ext4 rootwait devtmpfs.mount=0

console device选择ps7_uart_1

点击OK,发现dtsi文件和dts成功生成,如图2-4所示,在device_tree_bsp_0文件夹下可以找到对应文件。

图2-4

过程中遇到的错误一:

21:33:21 ERROR    :  [Hsm 55-1545] Problem running tcl command ::sw_device_tree::device_tree_drc : invalid command name "hsi::utils::add_new_child_node"

    while executing

"hsi::utils::add_new_child_node $os_handle "global_params""

    (procedure "::sw_device_tree::device_tree_drc" line 3)

    invoked from within

"::sw_device_tree::device_tree_drc device_tree"

 [Hsm 55-1440] Error(s) while running DRCs.

21:33:21 ERROR    : Error generating bsp sources: Failed to generate BSP.

21:33:21 ERROR    : Failed to regenerate sources for BSP project device_tree_bsp_0

org.eclipse.core.runtime.CoreException: Internal error occurred while generating bsp sources. Please check the SDK Log view for further details.

    at com.xilinx.sdk.sw.ui.handlers.RegenBspSourcesHandler.internalGenerateBsp(RegenBspSourcesHandler.java:178)

    at com.xilinx.sdk.sw.ui.handlers.RegenBspSourcesHandler.access$2(RegenBspSourcesHandler.java:163)

    at com.xilinx.sdk.sw.ui.handlers.RegenBspSourcesHandler$1$1.run(RegenBspSourcesHandler.java:131)

    at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2344)

    at com.xilinx.sdk.sw.ui.handlers.RegenBspSourcesHandler$1.run(RegenBspSourcesHandler.java:135)

    at org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:121)

这里遇到的错误实际上是因为所下载的设备树生成资源包版本和SDK版本不匹配造成的。刚开始由于粗心,一直以为自己下载的是device-tree-xlnx-xilinx-v2014.2.zip,在网上找了好久解决办法,找不到,然后就下载另一个版本,下载完发现之前下载的是device-tree-xlnx-xilinx-v2015.4.zip。因为这个粗心造成的错误,干耗了俩小时。

2.2、采用hsm指令快速生成dts文件

还有另一种更简单的方式,可以通过Xilinx命令行快速生成dts文件。

在SDK的Xilinx Tools菜单下选择Launch Shell指令打开Xilinx命令行窗口。

7.bmp

图2-5

逐条或者一次性将如下指令粘贴至命令行:

hsm

open_hw_design E:/vivado/zed_linux/zed_linux.sdk/system_wrapper_hw_platform_0/system.hdf

set_repo_path E:/vivado/sw_repo/device-tree-xlnx-xilinx-v2014.2.01

create_sw_design device-tree -os device_tree -proc ps7_cortexa9_0

generate_target -dir my_dts

注意:hdf文件的路径,repository路径要根据自己的实际情况修改。生成的my_dts文件夹位置,在命令行窗口提示的路径下,如图2-6所示:

   

图2-6

发现对应路径下生成了my_dts文件夹,该文件夹内文件如图2-7所示:

图2-7

其中,ps.dtsi和system.dts是我们需要的文件,刚开始我并没有在意ps.dtsi,所以又被小小地坑了一下,本以为自己生成的dts文件会和digilent提供的Linux自带的dts文件一致,所以就比较了一下:

艾玛,不一样的地方太多了,官方的N行,我生成的10来行的样子,再怎么骗自己也觉得过不去啊。

看了半天才发现,自己生成的system.dts虽然少了一大片,但多了一行:

/include/ "ps.dtsi"

既然有个include,是不是把ps.dtsi文件包含进来的意思呢,打开ps.dtsi文件,果然发现有很多内容,虽然两个文件差别还很大,但综合来看system.dts该有的节点都有了。

参考文献

http://www.wiki.xilinx.com/Build+Device+Tree+Blob

猜你喜欢

转载自blog.csdn.net/timeless_2014/article/details/82223480