【发布时间】:2016-07-05 14:15:46
【问题描述】:
我使用 Yocto 为 Beaglebone Black 创建了一个小型 linux 映像。我想我几乎所有的东西都按我想要的方式工作,除了我需要访问 UART 2 和 4。当我使用标准 Debian 映像时,我使用设备树覆盖和 capemgr 来做到这一点。但是,我发现用 Yocto 构建的内核没有 capemgr。
我的选择似乎是:
- 获取内核以使用 capemgr 构建,或者
- 对设备树文件进行必要的更改。
选项 2 似乎更容易。
UART 的设备树叠加层为 here 和 here。我已经尝试以几种方式包含这些内容。
- 我反编译了我一直使用的设备树 blob 并尝试 从那里包含这些文件。
- 我下载了the full set of dts files 并尝试包含 UART 设备树覆盖在 am335x-boneblack.dts 中。
这两种方法都会产生类似这样的错误:
Error: am335x-boneblack.dts:1.1-2 syntax error
FATAL ERROR: Unable to parse input tree
但是,我注意到在尝试编译 am335x-boneblack.dts 时即使没有修改它也会出现类似的错误,所以我什至可能都没有做对。 (使用命令dtc -I dts -O dtb -o result.dtb am335x-boneblack.dts)
显然我不知道自己在做什么。我怀疑设备树覆盖必须以某种方式进行修改,才能以我尝试使用它们的方式使用。或者我没有正确地包含(只是在文件顶部添加一个#include)。
有人知道我可能做错了什么吗?我正在尝试做的事情是否可能?
【问题讨论】:
-
您可能希望在 .dts 文件的end 中包含您的“覆盖”文件,即在声明其他所有内容之后。普通的.dtsi文件不使用
fragment@0 { target = <&x>; __overlay__ { ... } },所以要删掉。 -
在 Yocto 上编译 DTB:
bitbake -f -c deploy your_kernel_recipe,例如bitbake -f -c deploy linux-imx
标签: linux linux-kernel embedded beagleboneblack device-tree