本篇博文涵盖了配置设备树以将外设和第三方应用详细信息添加到 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/settings.sh
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 = ;
ps7_ethernet_0_mdio: mdio {
phy0: phy@7 {
compatible = marvell,88e1116r;
device_type = ethernet-phy;
reg = ;
};
};
};
※ 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 = ;
interrupts = , ;
reg = ;
clock-names = pclk, hclk, tx_clk;
#address-cells = ;
#size-cells = ;
#stream-id-cells = ;
iommus = ;
power-domains = ;
};
设备树文件 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 = ;
status = disabled;
interrupts = ;
clocks = , , ;
clock-names = pclk, hclk, tx_clk;
#address-cells = ;
#size-cells = ;
};
zc702.dtsi:
&gem0 {
phy-handle = ;
pinctrl-names = default;
pinctrl-0 = ;
phy-reset-gpio = ;
phy-reset-active-low;
ethernet_phy: ethernet-phy@7 {
reg = ;
device_type = ethernet-phy;
};
};
pcw.dtsi:
&gem0 {
phy-handle = ;
phy-mode = gmii;
status = okay;
xlnx,ptp-enet-clock = ;
ps7_ethernet_0_mdio: mdio {
#address-cells = ;
#size-cells = ;
gmii_to_rgmii_0: gmii_to_rgmii_0@8 {
compatible = xlnx,gmii-to-rgmii-1.0;
phy-handle = ;
reg = ;
};
};
};
请在此处添加外部 phy 定义。
注:gmii_to_rgmii ip 的定义已作说明。
system-user.dtsi:
&gem0 {
ps7_ethernet_0_mdio: mdio {
#address-cells = ;
#size-cells = ;
phy0: phy@1 {// add this node
reg = ;
microchip,led-modes = ;
};
gmii_to_rgmii_0: gmii_to_rgmii_0@8 {
compatible = xlnx,gmii-to-rgmii-1.0;
phy-handle = ;
reg = ;
};
};
};
2. 添加节点内容
可添加在评估板的设备树和 pcw 的设备树中未寄存的节点内容(参数)。请参阅以下示例中高亮的参数:
system-user.dtsi:
&gem0 {
local-mac-address = [00 0a 35 00 1e 53];
gmii2rgmii-phy-handle = ;
xlnx,has-mido = ; // add these
ps7_ethernet_0_mdio: mdio {
#address-cells = ;
#size-cells = ;
phy0: phy@1 {
reg = ;
microchip,led-modes = ;
};
gmii_to_rgmii_0: gmii_to_rgmii_0@8 {
compatible = xlnx,gmii-to-rgmii-1.0;
phy-handle = ;
reg = ;
};
};
};
3. 更改节点的内容
您可更改在评估板的设备树和 pcw 的设备树中已寄存的参数值:
system-user.dtsi:
&gem0 {
local-mac-address = [00 0a 35 00 1e 53];
gmii2rgmii-phy-handle = ;
xlnx,has-mido = ;
phy-handle = ;// 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 工程中
编辑 /project-spec/meta-user/recipes-core/images/petalinux-image.bbappend
添加对应 yocto 脚本可理解的实用程序名称(例如,iperf3)。
例如:
image_install_append = peekpoke
image_install_append = gpio-demo
image_install_append = “ iperf3 ”
[*] iperf3
构建完成后,此应用会显示在 /usr/bin/
造船码头行车限位器与驾驶室控制柜无线通讯
禾赛科技激光雷达累计交付突破30万台
GARD接地故障保护继电器
Maxim时分复用(TDMoP)技术问题解答
坚果Pro2s和小米8SE哪个性价比最高
使用PetaLinux自定义ZynqMP平台
我们没有用银联闪付银行那个恨呀:支付宝微信接二连三的推广无现金消费 最终惹怒央视银行
2020年新能源补贴时代将结束 2019年成为最后的闯关年
2022有什么耳机音质好又便宜?便宜音质好的蓝牙耳机推荐
DS1870采用外接电阻时的调节范围/分辨率
浅析中国封装技术的机遇和挑战
哈工智能携工业机器人工博会
MC34063+MOSFET大电流稳压器,MC34063+MOSFET High-current regulator
基于ISL9208的大容量锂电池组系统设计
干货分享:WAYON维安智慧新能源充电桩解决方案集锦
兆驰超7亿净利“独占鳌头”
市场技术行情:什么引爆了OLED电视市场?
ATA-2021H高压放大器概述及特点
下一站,人工智能
采用MAX871的三路电容式电压反相器