首先我们来了解下 petalinux 工程中 device-tree 的文件位置:
工具自动生成的device-tree文件位于
components/plnx_workspace/device-tree/device-tree,
该文件夹下的文件请勿自行修改,供用户编辑的 device-tree 文件位于
project-spec/meta-user/recipes-bsp/device-tree/files
对于大部分错误,通过 petalinux 工具的 error log 已经足够定位错误类型和位置。比如下面,
实际的 log 会非常冗长,我们在其中仔细找 dtc 的报错,其中提示 “duplicate label 'gem0' on /ethernet@ff0b0000 and /amba/ethernet@ff0b0000“,说明 ‘gem0’ 的 label 在多个地方重复定义了。而且报错也提示了错误的位置为“…/system-user.dtsi:3.31-15.9”,我们根据错误提示去删除重复的 gem0 定义即可。
有时候通过 petalinux 的 log 无法定位到具体错误位置,这时候我们可以通过在 petalinux 之外手动编译 device tree文件的方式来获得更具体的错误信息。手动编译需要用到dtc (devicetree compiler), 如果你的机器上还没有 dtc 的话可以从 linux-xlnx/scripts/dtc 位置找到源码并执行 make 来编译生成 dtc 工具。
如前所述 petalinux 下的 device tree 分布在两个位置,我们先把所有 dts/dtsi 文件都拷贝到单独工作目录中方便后续手动编译。
设备树的顶层为 system-top.dts, 并引用了很多其它 dtsi 文件,类似 c 语言中的 include 机制。可以先利用 gcc 来进行预处理,将分立的 dts/dtsi 文件汇总到一个文件中,
gcc -i -e -nostdinc -undef -d__dts__ -x assembler-with-cpp -o .dts .dts
再用 dtc 来编译设备树文件。
dtc -i dts -o dtb -o out.dtb .dts
接下来根据 dtc 的报错信息,就可以容易地定位到错误类型和位置。
PLC指示灯不亮,是PLC电源板烧了吗?
浅谈连接器测试步骤
如何通过修改TCP数据来批量偏移轨迹的方法
半导体“寒冬”到底是个怎样的寒冬?
具有有源输出放电功能的线性稳压器需要快速关断的目标系统
如何在Petalinux下定位decice-tree错误的一些技巧
如何评估数字货币的基本价值
对含DFIG并网的送出变压器涌流影响差动保护等方面进行研究
具有竞争力的基于PUF架构的嵌入式系统OTP解决方案
安全可以被“看见”吗?华云安的答案是“可以,且持续验证”
企业怎样打造一个物联网卡服务器
DS9098P iButton固定圈
压力传感器的分类 各种压力传感器的原理
H.264视频编解码FPGA低延迟解决方案
AD670模数转换电路
各接口传输速率列表分享
G20峰会中美重启贸易磋商,关税取消有望?
IDT推出支持LTE和EGSM的低互调失真混频器IC
中国面板成为大赢家,中国面板企业可望继续保持竞争优势
虹科AR解决方案为仓库和配送中心提高工作效率