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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章