本篇博文涵蓋了配置設備樹以將外設和第三方應用詳細信息添加到 PetaLinux 工程中的基本流程。
在某些情況下,設備樹無法生成相關外設所需的所有必需信息,例如,以太網 PHY 信息。
在此類情況下,您需要手動將此板級信息和特定開發板信息添加到設備樹文件 (system-user.dtsi) 中。
PetaLinux 工具流程的頂級概況:
為 ZynqMP 平臺創建和配置 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 設置:
source
3. 創建 PetaLinux ZynqMP 工程:
a. BSP 流程:
petalinux-create -t project -s xilinx-zcu102-v2019.1-final.bsp
(此示例適用于 ZCU102 開發板)
注:BSP 文件需從china.xilinx.com 下載
b. 模板流程:
petalinux-create --type project --template zynqMP --name custom-project
4.導入HDF
a. petalinux-config--get-hw-description=
b. 將“DTG SETTINGS”中的 MACHINE_NAME 值更改為相應的值。機器名稱可采用下列任一值: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.運行以下命令以構建整個工程:
petalinux-build
PetaLinux 構建流程概述:
成功構建工程后,PetaLinux 會自動生成各種設備樹文件,以及專用于評估的構建鏡像或定制平臺。
以下是構建 PetaLinux 工程時創建的各組件的樹形結構:
編輯設備樹文件以添加以太網 PHY 信息的步驟
建議使用 system-user.dtsi文件來添加、修改和刪除各節點或值。
最后將添加系統用戶 DTSI,這表示其中包含的值優先級較高。
您可通過在系統用戶 DTSI 中定義其它 DTSI 來覆蓋其中的任何現有值。
以下是將 PHY 信息添加到 PS 以太網節點的示例:
/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>;
};
設備樹文件 system-user.dtsi 用途如下:
1. 添加節點
- 可將未寄存的節點或子節點添加到評估板的設備樹和 PCW 的設備樹中。
在以下示例中,我們可向 system-user.dtsi 添加信息,以便將原先使用 MIO (RGMII) 的 GEM0 更改為使用 EMIO (GMII) 并通過 GMII to RGMII IP 連接到另一個 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>;
};
};
};
請在此處添加外部 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>;
};
gmii_to_rgmii_0: gmii_to_rgmii_0@8 {
compatible = "xlnx,gmii-to-rgmii-1.0";
phy-handle = <&phy0>;
reg = <8>;
};
};
};
2. 添加節點內容
可添加在評估板的設備樹和 PCW 的設備樹中未寄存的節點內容(參數)。請參閱以下示例中高亮的參數:
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. 更改節點的內容
您可更改在評估板的設備樹和 PCW 的設備樹中已寄存的參數值:
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. 刪除節點中的參數定義
可使用以下命令來刪除評估板的設備樹中已寄存的非必要參數行:/delete-property/
&gem0 {
/delete-property/ pinctrl-names;
/delete-property/ pinctrl-0;
/delete-property/ phy-reset-gpio;
/delete-property/ phy-reset-active-low;
};
5. 刪除節點
您可使用以下命令來刪除評估板設備樹中已寄存的非必要節點和子節點:/delete-node/
&gem0 {
/delete-node/ ethernet-phy@7;// Delete Node
};
請注意,如果在別處引用某個節點,那么刪除或更改該節點的值后,必須刪除該節點。
操作方式如下:
6.使整個驅動定義無效化
您可禁用評估板設備樹和 PCW 設備樹中已啟用的驅動定義。
驅動定義在 pcw.dtsi 中激活,狀態為“okay”;
要將其禁用,請在system-user.dtsi 中寫入以下內容:
&gem0 {
status = “disabled";
};
在 PetaLinux 中構建第三方 Linux 應用
執行如下修改后,可將任意現有實用工具(例如:iperf3)添加到 PetaLinux 工程中
編輯
添加對應 Yocto 腳本可理解的實用程序名稱(例如,iperf3)。
例如:
IMAGE_INSTALL_append = " peekpoke"
IMAGE_INSTALL_append = " gpio-demo"
IMAGE_INSTALL_append = “ iperf3 ”<<= add this line
使用以下命令將此應用作為用戶包添加到 rootfs 中:
Petalinux-config -c rootfs->User Packages -> [*] iperf3
構建完成后,此應用會顯示在 /usr/bin/
-
開發板
+關注
關注
25文章
4949瀏覽量
97204 -
BSP
+關注
關注
1文章
86瀏覽量
26111
原文標題:【開發者分享】使用 PetaLinux自定義ZynqMP平臺
文章出處:【微信號:FPGA-EETrend,微信公眾號:FPGA開發圈】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論