0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Petalinux工程中設(shè)備樹(shù)的介紹

YCqV_FPGA_EETre ? 來(lái)源:XILINX嵌入式 ? 作者:Terry Ni ? 2021-02-20 16:32 ? 次閱讀

設(shè)備樹(shù)是 Petalinux kernel 的關(guān)鍵組件,接下來(lái)以 2020.1 版本為例,為大家介紹一下在Xilinx Petalinux 工程中的設(shè)備樹(shù)是如何產(chǎn)生,配置以及修改的。

Petalinux 工程中設(shè)備樹(shù)的位置

當(dāng)我們創(chuàng)建了一個(gè) petalinux 工程后(以zcu102為例),在編譯的時(shí)候,會(huì)自動(dòng)生成對(duì)應(yīng)的設(shè)備樹(shù)文件。這些設(shè)備樹(shù)的描述信息通常在以下2個(gè)工程路徑下。

第一個(gè)是在 components/plnx_workspace/device-tree/device-tree 路徑下,這個(gè)路徑下主要保存的都是基于你導(dǎo)入的hdf/xsa后,自動(dòng)生成的設(shè)備樹(shù)信息。通常包括PS的設(shè)備樹(shù),時(shí)鐘的設(shè)備樹(shù),PL 部分 IP 的設(shè)備樹(shù)(Xilinx發(fā)布的包含驅(qū)動(dòng)的IP),以及設(shè)備樹(shù)頭文件。

。/components/plnx_workspace/device-tree/device-tree/zynqmp-clk-ccf.dtsi

。/components/plnx_workspace/device-tree/device-tree/zcu102-revc.dtsi

。/components/plnx_workspace/device-tree/device-tree/pl.dtsi

。/components/plnx_workspace/device-tree/device-tree/system-top.dts

。/components/plnx_workspace/device-tree/device-tree/zynqmp.dtsi

。/components/plnx_workspace/device-tree/device-tree/system-conf.dtsi

。/components/plnx_workspace/device-tree/device-tree/pcw.dtsi

另一個(gè)是在 project-spec/meta-user/recipes-bsp/device-tree/files路徑下,這個(gè)路徑下主要就是用戶(hù)基于自動(dòng)生成的設(shè)備樹(shù),自行添加和修改的部分。這部分可以查看 UG1144 第10章 Device Tree Configuration 節(jié)的內(nèi)容。

。/project-spec/meta-user/recipes-bsp/device-tree/files/openamp.dtsi

。/project-spec/meta-user/recipes-bsp/device-tree/files/system-user.dtsi

。/project-spec/meta-user/recipes-bsp/device-tree/files/pl-custom.dtsi

。/project-spec/meta-user/recipes-bsp/device-tree/files/xen-qemu.dtsi

。/project-spec/meta-user/recipes-bsp/device-tree/files/xen.dtsi

需要注意的是,如果 petalinux-config-》DTGsettings-》MACHINE_NAME 采用的是xilinx開(kāi)發(fā)板預(yù)設(shè)的名稱(chēng)的話(UG1144DTG Settings 章節(jié)中的 Machine name 的說(shuō)明),那么會(huì)自動(dòng)生成對(duì)應(yīng)開(kāi)發(fā)板相關(guān)的設(shè)備樹(shù)信息。

b1c67ca2-71af-11eb-8b86-12bb97331649.png

所以如果使用的是自己的硬件平臺(tái),那么盡量不要使用預(yù)設(shè)的名稱(chēng),這樣可以避免導(dǎo)入多余的設(shè)備樹(shù)信息從而導(dǎo)致編譯失敗或者最終功能不正確。

如何修改設(shè)備樹(shù)

1. 基于自動(dòng)生成的設(shè)備樹(shù),添加和修改節(jié)點(diǎn)。

通過(guò)修改。/project-spec/meta-user/recipes-bsp/device-tree/files/system-user.dtsi,來(lái)實(shí)現(xiàn)對(duì)之前已經(jīng)定義的設(shè)備樹(shù)節(jié)點(diǎn)中的屬性進(jìn)行變更,也可以添加沒(méi)有自動(dòng)生成的設(shè)備樹(shù)節(jié)點(diǎn)。

/dts-v1/;

/include/ “system-conf.dtsi”

/ {

};

&gem0 {

phy-handle = 《&phy0》;

ps7_ethernet_0_mdio: mdio {

phy0: phy@7 {

compatible = “marvell,88e1116r”;

device_type = “ethernet-phy”;

reg = 《7》;

};

};

};

gpio-leds {

compatible = “gpio-leds”;

led-ds23 {

label = “l(fā)ed-ds23”;

gpios = 《&ps7_gpio_0 10 0》;

default-state = “on”;

linux,default-trigger = “heartbeat”;

};

};

有時(shí)候?yàn)榱朔奖阍O(shè)備樹(shù)的管理,可以定義多個(gè)設(shè)備樹(shù)文件,然后在 system-user.dtsi 中將這些設(shè)備樹(shù)文件都包含進(jìn)去,如下所示。

/include/ “system-conf.dtsi”

/include/ “system-user-1.dtsi”

/include/ “system-user-2.dtsi”

/include/ “system-user-3.dtsi”

/ {

};

當(dāng)添加了其他的dtsi文件后,還需要修改。/project-spec/meta-user/recipes-bsp/device-tree/device-tree.bbappend 文件,將這些 dtsi 文件的路徑信息包含進(jìn)去。如下所示。

SRC_URI += “file://system-user.dtsi”

SRC_URI += “file://system-user-1.dtsi”

SRC_URI += “file://system-user-2.dtsi”

SRC_URI += “file://system-user-3.dtsi”

2. 完全使用自己的設(shè)備樹(shù)

我們還可以更改 petalinux-config-》 Auto Config Settings 中的配置,直接使用自己編寫(xiě)好的設(shè)備樹(shù)。

取消 Devicetree autoconfig,使能 Specify a manual device tree include directory, 然后指定設(shè)備樹(shù)的路徑地址。

b209458c-71af-11eb-8b86-12bb97331649.png

怎么描述設(shè)備樹(shù)

設(shè)備樹(shù)中描述的信息都是要與 kernel中設(shè)備的驅(qū)動(dòng)互相對(duì)應(yīng)的。如果驅(qū)動(dòng)中需要某個(gè)參數(shù),但是設(shè)備樹(shù)中并沒(méi)有包含,很可能就會(huì)編譯錯(cuò)誤或者直接使用了默認(rèn)值,從而導(dǎo)致工作異常。kernel 的設(shè)備驅(qū)動(dòng)中,一般都會(huì)包含設(shè)備樹(shù)的描述說(shuō)明來(lái)保證設(shè)備樹(shù)的正確。你可以在 git上的 kernel 源碼中找到響應(yīng)的設(shè)備樹(shù)說(shuō)明。以 GPIO 驅(qū)動(dòng)為例。你可以找到相關(guān)的設(shè)備樹(shù)描述信息如下。

https://github.com/Xilinx/linux-xlnx/blob/xlnx_rebase_v5.4_2020.1/Documentation/devicetree/bindings/gpio/gpio-zynq.txt

Example:

gpio@e000a000 {

#gpio-cells = 《2》;

compatible = “xlnx,zynq-gpio-1.0”;

clocks = 《&clkc 42》;

gpio-controller;

interrupt-parent = 《&intc》;

interrupts = 《0 20 4》;

interrupt-controller;

#interrupt-cells = 《2》;

reg = 《0xe000a000 0x1000》;

};

另外,你可以查看 xilinx wiki上 linux driver 的主題頁(yè)面來(lái)獲取所有 Xilinx 支持的設(shè)備驅(qū)動(dòng)內(nèi)容,其中包含有各個(gè)設(shè)備樹(shù)的例子以及相關(guān)配置等說(shuō)明。

https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/18841873/Linux+Drivers

反編譯設(shè)備樹(shù)

為了最終確認(rèn)設(shè)備樹(shù)是否正確,我們可以通過(guò) dtc 這個(gè)小應(yīng)用,將 dtb 文件反編譯成 dts 設(shè)備樹(shù)文件。這個(gè)設(shè)備樹(shù)文件,從 system-top.dts 這個(gè) top 文件開(kāi)始,把所有包含的設(shè)備樹(shù)內(nèi)容都整合到了一個(gè) dts 文件中,便于我們確認(rèn)最終的設(shè)備樹(shù)是否正確。其命令格式如下

dtc-I dtb -O dts -o system.dts system.dtb

原文標(biāo)題:開(kāi)發(fā)者分享 | Petalinux 工程中設(shè)備樹(shù)的介紹

文章出處:【微信公眾號(hào):FPGA開(kāi)發(fā)圈】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

責(zé)任編輯:haq

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • Xilinx
    +關(guān)注

    關(guān)注

    71

    文章

    2155

    瀏覽量

    120853

原文標(biāo)題:開(kāi)發(fā)者分享 | Petalinux 工程中設(shè)備樹(shù)的介紹

文章出處:【微信號(hào):FPGA-EETrend,微信公眾號(hào):FPGA開(kāi)發(fā)圈】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    請(qǐng)問(wèn)PCM1864的驅(qū)動(dòng)在設(shè)備樹(shù)該如何描述?

    請(qǐng)問(wèn)PCM1864的驅(qū)動(dòng)在設(shè)備樹(shù)該如何描述呢: 1. 我使用的不是TI的LINUX內(nèi)核,是另外一款SOC的LINUX內(nèi)核 2. 我在設(shè)備樹(shù)做了以下描述: ps7-i2c@e00040
    發(fā)表于 10-23 07:30

    在CubeMX上面配合STM32MP135D的DDR設(shè)備樹(shù)后,燒錄程序時(shí)產(chǎn)生了報(bào)錯(cuò)怎么解決?

    在燒錄程序之前,我已經(jīng)將生成的所有設(shè)備樹(shù)參數(shù)替換到原程序,請(qǐng)問(wèn)有人能指導(dǎo)一下我是哪里處理出了問(wèn)題嗎
    發(fā)表于 03-18 06:46

    消防設(shè)備電源監(jiān)控系統(tǒng)在地鐵工程的設(shè)計(jì)與應(yīng)用

    消防設(shè)備電源監(jiān)控系統(tǒng)在地鐵工程的設(shè)計(jì)與應(yīng)用 安科瑞電氣股份有限公司? 上海嘉定 【摘要】 : 本文介紹了地鐵工程消防
    的頭像 發(fā)表于 01-30 13:24 ?305次閱讀
    消防<b class='flag-5'>設(shè)備</b>電源監(jiān)控系統(tǒng)在地鐵<b class='flag-5'>工程</b>的設(shè)計(jì)與應(yīng)用

    MCP251X can驅(qū)動(dòng)移植nuc980采樣用設(shè)備樹(shù)配置時(shí),中斷如何配置設(shè)備樹(shù)?

    MCP251X can驅(qū)動(dòng)移植nuc980 采樣用設(shè)備樹(shù)配置時(shí),中斷如何配置設(shè)備樹(shù)? spi0: spi@b0061000 { status = \"okay\"
    發(fā)表于 01-17 06:43

    NUC980設(shè)備樹(shù)DTB文件如何通過(guò)NUWrite燒錄到SPI-Flash,燒錄的地址是多少?

    NUC980設(shè)備樹(shù)DTB文件如何通過(guò)NUWrite燒錄到SPI-Flash,燒錄的地址是多少;內(nèi)核編譯設(shè)備樹(shù)后卡死在“Calibratin
    發(fā)表于 01-17 06:29

    如何修改內(nèi)核設(shè)備樹(shù)

    如何修改內(nèi)核設(shè)備樹(shù)
    的頭像 發(fā)表于 12-14 14:06 ?750次閱讀
    如何修改內(nèi)核<b class='flag-5'>設(shè)備</b><b class='flag-5'>樹(shù)</b>

    如何修改內(nèi)核設(shè)備樹(shù)

    本文檔介紹了內(nèi)核設(shè)備樹(shù)的位置和包含關(guān)系 1.內(nèi)核設(shè)備樹(shù)位置 文件 備注 dts longan/device/config/chips/t50
    發(fā)表于 12-14 13:42

    時(shí)鐘樹(shù)是什么?介紹兩種時(shí)鐘樹(shù)結(jié)構(gòu)

    今天來(lái)聊一聊時(shí)鐘樹(shù)。首先我先講一下我所理解的時(shí)鐘樹(shù)是什么,然后介紹兩種時(shí)鐘樹(shù)結(jié)構(gòu)。
    的頭像 發(fā)表于 12-06 15:23 ?1559次閱讀

    使用自旋表啟動(dòng)的平臺(tái)設(shè)備樹(shù)cpu節(jié)點(diǎn)介紹

    補(bǔ)充一下一個(gè)使用自旋表作為啟動(dòng)方式的平臺(tái)設(shè)備樹(shù)cpu節(jié)點(diǎn): arch /arm64/ boot /dts/ xxx.dtsi: cpu@ 0 { device_type = "cpu
    的頭像 發(fā)表于 12-05 16:19 ?778次閱讀

    數(shù)字IC設(shè)計(jì)的分段時(shí)鐘樹(shù)綜合

    為什么需要分段去做時(shí)鐘樹(shù)呢?因?yàn)樵谀承┣闆r下,按照傳統(tǒng)的方法讓每一個(gè)clock group單獨(dú)去balance,如果不做額外干預(yù),時(shí)鐘樹(shù)天然是做不平的。
    的頭像 發(fā)表于 12-04 14:42 ?1769次閱讀
    數(shù)字IC設(shè)計(jì)<b class='flag-5'>中</b>的分段時(shí)鐘<b class='flag-5'>樹(shù)</b>綜合

    【米爾-TIAM62開(kāi)發(fā)板-接替335x-試用評(píng)測(cè)】+(三)手把手創(chuàng)建Uboot設(shè)備樹(shù)與內(nèi)核設(shè)備樹(shù)實(shí)戰(zhàn)

    這一數(shù)據(jù)結(jié)構(gòu)進(jìn)行了深入的研究和學(xué)習(xí)。設(shè)備樹(shù)是一種特殊的語(yǔ)法格式,用于描述嵌入式系統(tǒng)的硬件信息。這種數(shù)據(jù)結(jié)構(gòu)允許我們?cè)诓恢苯釉L問(wèn)硬件的情況下,通過(guò)軟件來(lái)識(shí)別和控制硬件設(shè)備。 首先,我了
    發(fā)表于 11-28 09:54

    zedboard petalinux構(gòu)建工程錯(cuò)誤是什么原因造成的?

    這是我的錯(cuò)誤: 注: 執(zhí)行設(shè)置環(huán)境任務(wù) 注: 執(zhí)行運(yùn)行隊(duì)列任務(wù) ERROR: 設(shè)備- 樹(shù)- xilinx gitAUTOINC b7466bbeee-r0 do_ config: 函數(shù)失敗
    發(fā)表于 11-28 07:33

    樹(shù)與二叉樹(shù)的定義

    表示。樹(shù)型結(jié)構(gòu)在計(jì)算機(jī)領(lǐng)域中也得到了廣泛應(yīng)用。 Part1 樹(shù) 1.1 樹(shù)的定義 樹(shù)(Tree) 是n(n>=0)n(n>=0) n ( n >=0)個(gè)結(jié)點(diǎn)的有限集,在任意一棵非空
    的頭像 發(fā)表于 11-24 15:57 ?1247次閱讀
    <b class='flag-5'>樹(shù)</b>與二叉<b class='flag-5'>樹(shù)</b>的定義

    大型多GHz時(shí)鐘樹(shù)的相位偏差設(shè)計(jì)

    電子發(fā)燒友網(wǎng)站提供《大型多GHz時(shí)鐘樹(shù)的相位偏差設(shè)計(jì).pdf》資料免費(fèi)下載
    發(fā)表于 11-22 16:56 ?0次下載
    大型多GHz時(shí)鐘<b class='flag-5'>樹(shù)</b><b class='flag-5'>中</b>的相位偏差設(shè)計(jì)

    在Linux啟動(dòng)過(guò)程, 想將PC13 pin配置為輸出/拉起,如何修改設(shè)備樹(shù)?

    在 Linux 啟動(dòng)過(guò)程, 我想將 PC13 pin 配置為輸出/ 拉起 。 我該如何修改設(shè)備樹(shù) 。
    發(fā)表于 11-13 06:21