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

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

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

使用PetaLinux自定義ZynqMP平臺(tái)

YCqV_FPGA_EETre ? 來源:FPGA開發(fā)圈 ? 2020-06-03 17:00 ? 次閱讀

本篇博文涵蓋了配置設(shè)備樹以將外設(shè)和第三方應(yīng)用詳細(xì)信息添加到 PetaLinux 工程中的基本流程。

在某些情況下,設(shè)備樹無法生成相關(guān)外設(shè)所需的所有必需信息,例如,以太網(wǎng) PHY 信息。

在此類情況下,您需要手動(dòng)將此板級信息和特定開發(fā)板信息添加到設(shè)備樹文件 (system-user.dtsi) 中。

PetaLinux 工具流程的頂級概況:

為 ZynqMP 平臺(tái)創(chuàng)建和配置 PetaLinux 工程的基本步驟:

1. 在 china.xilinx.com 上可通過以下鏈接獲取 Petalinux 安裝程序和 BSP 文件:

https://china.xilinx.com/support/download/index.html/content/xilinx/en/downloadNav/embedded-design-tools.html

2. 使用以下命令獲取 PetaLinux 設(shè)置:

source/settings.sh

3. 創(chuàng)建 PetaLinux ZynqMP 工程:

a. BSP 流程:

petalinux-create -t project -s xilinx-zcu102-v2019.1-final.bsp

(此示例適用于 ZCU102 開發(fā)板)

注:BSP 文件需從china.xilinx.com 下載

b. 模板流程:

petalinux-create --type project --template zynqMP --name custom-project

4.導(dǎo)入HDF

a. petalinux-config--get-hw-description=

b. 將“DTG SETTINGS”中的 MACHINE_NAME 值更改為相應(yīng)的值。機(jī)器名稱可采用下列任一值:ac701-full、ac701-lite、kc705-full、kcu105、zc1275-revb、zcu1285- reva、zc1751-dc1、zc1751-dc2、zc702、zc706、avnet-ultra96-rev1、zcu100-revc、zcu102- rev1.0、zcu104-revc、zcu106-reva、zcu111-reva、zedboard、vcu118- rev2.0 和 sp701-rev1.0

5. 保存并退出工程配置

6.運(yùn)行以下命令以構(gòu)建整個(gè)工程:

petalinux-build

PetaLinux 構(gòu)建流程概述:

成功構(gòu)建工程后,PetaLinux 會(huì)自動(dòng)生成各種設(shè)備樹文件,以及專用于評估的構(gòu)建鏡像或定制平臺(tái)。

以下是構(gòu)建 PetaLinux 工程時(shí)創(chuàng)建的各組件的樹形結(jié)構(gòu):

編輯設(shè)備樹文件以添加以太網(wǎng) PHY 信息的步驟

建議使用 system-user.dtsi文件來添加、修改和刪除各節(jié)點(diǎn)或值。

最后將添加系統(tǒng)用戶 DTSI,這表示其中包含的值優(yōu)先級較高。

您可通過在系統(tǒng)用戶 DTSI 中定義其它 DTSI 來覆蓋其中的任何現(xiàn)有值。

以下是將 PHY 信息添加到 PS 以太網(wǎng)節(jié)點(diǎn)的示例:

/dts-v1/;

/include/ "system-conf.dtsi"

/ {

};

Describe outside this "};".

&gem0{

phy-handle = <&phy0>;

ps7_ethernet_0_mdio: mdio {

phy0: phy@7 {

compatible = "marvell,88e1116r";

device_type = "ethernet-phy";

reg = <7>;

};

};

};

※ Definitions that do not exist in template

/include/ "system-conf.dtsi"

/ {

<< Fill in here >>

};

Define gem0 inzynqmp.dtsi:

gem0: ethernet@ff0b0000 {

compatible = "cdns,zynqmp-gem";

status = "disabled";

interrupt-parent = <&gic>;

interrupts = <0 57 4>, <0 57 4>;

reg = <0x0 0xff0b0000 0x0 0x1000>;

clock-names = "pclk", "hclk", "tx_clk";

#address-cells = <1>;

#size-cells = <0>;

#stream-id-cells = <1>;

iommus = <&smmu 0x874>;

power-domains = <&pd_eth0>;

};

設(shè)備樹文件 system-user.dtsi 用途如下:

1. 添加節(jié)點(diǎn)

- 可將未寄存的節(jié)點(diǎn)或子節(jié)點(diǎn)添加到評估板的設(shè)備樹和 PCW 的設(shè)備樹中。

在以下示例中,我們可向 system-user.dtsi 添加信息,以便將原先使用 MIO (RGMII) 的 GEM0 更改為使用 EMIO (GMII) 并通過 GMII to RGMII IP 連接到另一個(gè) PHY 芯片

zynq-7000.dtsi

gem0: ethernet@e000b000 {

compatible = "cdns,zynq-gem", "cdns,gem";

reg = <0xe000b000 0x1000>;

status = "disabled";

interrupts = <0 22 4>;

clocks = <&clkc 30>, <&clkc 30>, <&clkc 13>;

clock-names = "pclk", "hclk", "tx_clk";

#address-cells = <1>;

#size-cells = <0>;

};


zc702.dtsi:

&gem0 {

phy-handle = <ðernet_phy>;

pinctrl-names = "default";

pinctrl-0 = <&pinctrl_gem0_default>;

phy-reset-gpio = <&gpio0 11 0>;

phy-reset-active-low;

ethernet_phy: ethernet-phy@7 {

reg = <7>;

device_type = "ethernet-phy";

};

};


pcw.dtsi:

&gem0 {

phy-handle = <&phy0>;

phy-mode = "gmii";

status = "okay";

xlnx,ptp-enet-clock = <0x69f6bcb>;

ps7_ethernet_0_mdio: mdio {

#address-cells = <1>;

#size-cells = <0>;

gmii_to_rgmii_0: gmii_to_rgmii_0@8 {

compatible = "xlnx,gmii-to-rgmii-1.0";

phy-handle = <&phy0>;

reg = <8>;

};

};

};


請?jiān)诖颂幪砑油獠?PHY 定義。

注:gmii_to_rgmii IP 的定義已作說明。

system-user.dtsi:

&gem0 {

ps7_ethernet_0_mdio: mdio {

#address-cells = <1>;

#size-cells = <0>;

phy0: phy@1 {// Add this node

reg = <1>;

microchip,led-modes = <1>;

};

gmii_to_rgmii_0: gmii_to_rgmii_0@8 {

compatible = "xlnx,gmii-to-rgmii-1.0";

phy-handle = <&phy0>;

reg = <8>;

};

};

};

2. 添加節(jié)點(diǎn)內(nèi)容

可添加在評估板的設(shè)備樹和 PCW 的設(shè)備樹中未寄存的節(jié)點(diǎn)內(nèi)容(參數(shù))。請參閱以下示例中高亮的參數(shù):

system-user.dtsi:

&gem0 {

local-mac-address = [00 0a 35 00 1e 53];

gmii2rgmii-phy-handle = <&gmii_to_rgmii_0>;

xlnx,has-mido = <0x1>;// Add these

ps7_ethernet_0_mdio: mdio {

#address-cells = <1>;

#size-cells = <0>;

phy0: phy@1 {

reg = <1>;

microchip,led-modes = <1>;

};

gmii_to_rgmii_0: gmii_to_rgmii_0@8 {

compatible = "xlnx,gmii-to-rgmii-1.0";

phy-handle = <&phy0>;

reg = <8>;

};

};

};

3. 更改節(jié)點(diǎn)的內(nèi)容

您可更改在評估板的設(shè)備樹和 PCW 的設(shè)備樹中已寄存的參數(shù)值:

system-user.dtsi:

&gem0 {

local-mac-address = [00 0a 35 00 1e 53];

gmii2rgmii-phy-handle = <&gmii_to_rgmii_0>;

xlnx,has-mido = <0x1>;

phy-handle = <&phy0>;// Change the Value

};

4. 刪除節(jié)點(diǎn)中的參數(shù)定義

可使用以下命令來刪除評估板的設(shè)備樹中已寄存的非必要參數(shù)行:/delete-property/

&gem0 {

/delete-property/ pinctrl-names;

/delete-property/ pinctrl-0;

/delete-property/ phy-reset-gpio;

/delete-property/ phy-reset-active-low;

};

5. 刪除節(jié)點(diǎn)

您可使用以下命令來刪除評估板設(shè)備樹中已寄存的非必要節(jié)點(diǎn)和子節(jié)點(diǎn):/delete-node/

&gem0 {

/delete-node/ ethernet-phy@7;// Delete Node

};

請注意,如果在別處引用某個(gè)節(jié)點(diǎn),那么刪除或更改該節(jié)點(diǎn)的值后,必須刪除該節(jié)點(diǎn)。

操作方式如下:

6.使整個(gè)驅(qū)動(dòng)定義無效化

您可禁用評估板設(shè)備樹和 PCW 設(shè)備樹中已啟用的驅(qū)動(dòng)定義。

驅(qū)動(dòng)定義在 pcw.dtsi 中激活,狀態(tài)為“okay”;

要將其禁用,請?jiān)趕ystem-user.dtsi 中寫入以下內(nèi)容:

&gem0 {

status = “disabled";

};

在 PetaLinux 中構(gòu)建第三方 Linux 應(yīng)用

執(zhí)行如下修改后,可將任意現(xiàn)有實(shí)用工具(例如:iperf3)添加到 PetaLinux 工程中

編輯 /project-spec/meta-user/recipes-core/images/petalinux-image.bbappend

添加對應(yīng) Yocto 腳本可理解的實(shí)用程序名稱(例如,iperf3)。
例如:
IMAGE_INSTALL_append = " peekpoke"

IMAGE_INSTALL_append = " gpio-demo"

IMAGE_INSTALL_append = “ iperf3 ”<<= add this line

使用以下命令將此應(yīng)用作為用戶包添加到 rootfs 中:

Petalinux-config -c rootfs->User Packages -> [*] iperf3

構(gòu)建完成后,此應(yīng)用會(huì)顯示在 /usr/bin/

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

    關(guān)注

    25

    文章

    5090

    瀏覽量

    97800
  • BSP
    BSP
    +關(guān)注

    關(guān)注

    1

    文章

    88

    瀏覽量

    26194

原文標(biāo)題:【開發(fā)者分享】使用 PetaLinux自定義ZynqMP平臺(tái)

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

收藏 人收藏

    評論

    相關(guān)推薦

    think-cell:自定義think-cell(四)

    C.5 設(shè)置默認(rèn)議程幻燈片布局 think-cell 議程可以在演示文稿中使用特定的自定義布局來定義議程、位置和議程幻燈片上的其他形狀,例如標(biāo)題或圖片。通過將此自定義布局添加到模板,您可以為整個(gè)組織
    的頭像 發(fā)表于 01-13 10:37 ?51次閱讀
    think-cell:<b class='flag-5'>自定義</b>think-cell(四)

    智能語音識(shí)別照明解決方案,平臺(tái)自定義,中英切換

    智能語音識(shí)別照明方案引入NRK3502芯片,支持平臺(tái)自定義,離線控制,中英雙語切換。NRK3502具備高性能和靈活自定義能力,可推動(dòng)智能照明革新,控制其他智能設(shè)備,為國際用戶提供全方位智能生活體驗(yàn)。
    的頭像 發(fā)表于 01-10 13:23 ?47次閱讀
    智能語音識(shí)別照明解決方案,<b class='flag-5'>平臺(tái)</b><b class='flag-5'>自定義</b>,中英切換

    think-cell;自定義think-cell(一)

    本章介紹如何自定義 think-cell,即如何更改默認(rèn)顏色和其他默認(rèn)屬性;這是通過 think-cell 的樣式文件完成的,這些文件將在前四個(gè)部分中進(jìn)行討論。 第五部分 C.5 設(shè)置默認(rèn)議程幻燈片
    的頭像 發(fā)表于 01-08 11:31 ?99次閱讀
    think-cell;<b class='flag-5'>自定義</b>think-cell(一)

    TPS659xx應(yīng)用程序自定義工具

    電子發(fā)燒友網(wǎng)站提供《TPS659xx應(yīng)用程序自定義工具.pdf》資料免費(fèi)下載
    發(fā)表于 11-06 10:02 ?0次下載
    TPS659xx應(yīng)用程序<b class='flag-5'>自定義</b>工具

    創(chuàng)建自定義的基于閃存的引導(dǎo)加載程序(BSL)

    電子發(fā)燒友網(wǎng)站提供《創(chuàng)建自定義的基于閃存的引導(dǎo)加載程序(BSL).pdf》資料免費(fèi)下載
    發(fā)表于 09-19 10:50 ?0次下載
    創(chuàng)建<b class='flag-5'>自定義</b>的基于閃存的引導(dǎo)加載程序(BSL)

    如何創(chuàng)建TestStand自定義步驟

    在之前的課程中簡單地介紹過TestStand自帶的一些步驟類型,如測試、消息彈窗、賦值、標(biāo)簽等等,這些簡單的步驟從TestStand的插入選版中就可以添加到序列中。那么在使用中如果碰到需要實(shí)現(xiàn)更加靈活、復(fù)雜的功能,使用自帶的一些步驟類型可能難以滿足,這時(shí)就需要使用到自定義步驟。
    的頭像 發(fā)表于 09-11 14:46 ?1190次閱讀
    如何創(chuàng)建TestStand<b class='flag-5'>自定義</b>步驟

    EtherCAT運(yùn)動(dòng)控制器PT/PVT實(shí)現(xiàn)用戶自定義軌跡規(guī)劃

    EtherCAT運(yùn)動(dòng)控制器PT/PVT實(shí)現(xiàn)用戶自定義軌跡規(guī)劃。
    的頭像 發(fā)表于 08-15 11:49 ?672次閱讀
    EtherCAT運(yùn)動(dòng)控制器PT/PVT實(shí)現(xiàn)用戶<b class='flag-5'>自定義</b>軌跡規(guī)劃

    NVIDIA NeMo加速并簡化自定義模型開發(fā)

    如果企業(yè)希望充分發(fā)揮出 AI 的力量,就需要根據(jù)其行業(yè)需求量身定制的自定義模型。
    的頭像 發(fā)表于 07-26 11:17 ?781次閱讀
    NVIDIA NeMo加速并簡化<b class='flag-5'>自定義</b>模型開發(fā)

    【AWTK使用經(jīng)驗(yàn)】如何自定義combo_box下拉框樣式

    AWTK是基于C語言開發(fā)的跨平臺(tái)GUI框架?!禔WTK使用經(jīng)驗(yàn)》系列文章將介紹開發(fā)AWTK過程中一些常見問題與解決方案,例如:如何加載外部資源?如何設(shè)計(jì)自定義進(jìn)度條?這些都會(huì)在系列文章進(jìn)行解答。假設(shè)
    的頭像 發(fā)表于 05-23 08:25 ?492次閱讀
    【AWTK使用經(jīng)驗(yàn)】如何<b class='flag-5'>自定義</b>combo_box下拉框樣式

    stm32cubemx中如何自定義lwip平臺(tái)?

    有人知道stm32cubemx中,如何自定義lwip平臺(tái)。(默認(rèn)只
    發(fā)表于 05-22 07:50

    HarmonyOS開發(fā)案例:【 自定義彈窗】

    基于ArkTS的聲明式開發(fā)范式實(shí)現(xiàn)了三種不同的彈窗,第一種直接使用公共組件,后兩種使用CustomDialogController實(shí)現(xiàn)自定義彈窗
    的頭像 發(fā)表于 05-16 18:18 ?1405次閱讀
    HarmonyOS開發(fā)案例:【 <b class='flag-5'>自定義</b>彈窗】

    TSMaster 自定義 LIN 調(diào)度表編程指導(dǎo)

    LIN(LocalInterconnectNetwork)協(xié)議調(diào)度表是用于LIN總線通信中的消息調(diào)度的一種機(jī)制,我們收到越來越多來自不同用戶希望能夠通過接口實(shí)現(xiàn)自定義LIN調(diào)度表的需求。所以在
    的頭像 發(fā)表于 05-11 08:21 ?713次閱讀
    TSMaster <b class='flag-5'>自定義</b> LIN 調(diào)度表編程指導(dǎo)

    HarmonyOS開發(fā)案例:【UIAbility和自定義組件生命周期】

    本文檔主要描述了應(yīng)用運(yùn)行過程中UIAbility和自定義組件的生命周期。對于UIAbility,描述了Create、Foreground、Background、Destroy四種生命周期。對于頁面
    的頭像 發(fā)表于 05-10 15:31 ?1303次閱讀
    HarmonyOS開發(fā)案例:【UIAbility和<b class='flag-5'>自定義</b>組件生命周期】

    HarmonyOS開發(fā)實(shí)例:【自定義Emitter】

    使用[Emitter]實(shí)現(xiàn)事件的訂閱和發(fā)布,使用[自定義彈窗]設(shè)置廣告信息。
    的頭像 發(fā)表于 04-14 11:37 ?1025次閱讀
    HarmonyOS開發(fā)實(shí)例:【<b class='flag-5'>自定義</b>Emitter】

    鴻蒙ArkUI實(shí)例:【自定義組件】

    組件是 OpenHarmony 頁面最小顯示單元,一個(gè)頁面可由多個(gè)組件組合而成,也可只由一個(gè)組件組合而成,這些組件可以是ArkUI開發(fā)框架自帶系統(tǒng)組件,比如?`Text`?、?`Button`?等,也可以是自定義組件,本節(jié)筆者簡單介紹一下自定義組件的語法規(guī)范。
    的頭像 發(fā)表于 04-08 10:17 ?667次閱讀