我想在我的RPi项目中禁用并启用一些引脚。 这些是GPIO 6,GPIO 5和GPIO 26.我喜欢在我自己的内核驱动程序中使用这些PIN。
对于这个项目,我通过GPIO连接一个简单的电路板。最小的系统是通过yocto构建的。我想更改设备树文件以禁用/启用GPIO。
我需要更改或制作自己的dts文件。为此,我想我需要:
我该怎么做?或者我在哪里可以找到来源?
其实我很难找到我正在使用的RPi2的dts文件。我正在检查" raspberrypi2-poky-linux-gnueabi"配方结果(并且找不到任何文件)。
我没有找到任何教程如何设置yocto + meta-raspberrypi +自己的dts。如果我们能够找到必要的步骤,那就太好了。
答案 0 :(得分:2)
首先,您需要找到yocto项目中使用的内核,配方是linux-raspberry.bb或类似linux - * .bb。首选内核可能设置在local.conf
或machine.conf
:PREFERRED_PROVIDER_virtual/kernel ?= "linux-raspberry"
中
这是通过" meta-raspberrypi / conf / machine / include / rpi-default-providers.inc"间接设置的。它包含在" rpi-base.inc"
找到后,查看配方,在右侧分支上克隆内核的git存储库,然后在右侧SRCREV
重置。
下载后,dts文件位于/path/of/my/kernel/linux-raspberry/arch/arm/boot/dts/
。您可以使用变量local.conf
machine.conf
或KERNEL_DEVICETREE = "..."
中使用的设备文件的名称
对于选择的meta-raspberry和rpi2,可以在<path to build dir>/linux-raspberrypi2-standard-build/source/arch/arm/boot/dts/
中找到dts文件。源目录是git源的链接目录。
您可以通过创建dtsi / dts文件来添加新的dtb(不要忘记将其添加到Makefile中)。
创建补丁,将其添加到内核配方中:
SRC_URI += "file://0001-mypatch.patch"
并将补丁文件放在元
中├── files
│ └── 0001-mypatch.patch
└── linux-raspberry.bb
修改KERNEL_DEVICETREE
变量以添加新的dtb。
现在你可以咬你的内核/图像,你的新dtb就会被创建。
答案 1 :(得分:1)
我不认为这个问题已经得到了很好的回答,所以让我花几分钟时间并记录一下我为将设备树覆盖添加到yocto版本中所做的工作。
这是一个多问题的过程。
我将做一些假设: *您在外壳中获取oe-init-build-env的资源,并在终端中手动进行bitbake构建(或者您知道如何使用等效的工具来进行构建) *您知道(或已经在学习)device trees ...
的基础知识*-overlay.dts
源文件。您可以从一个简单的占位符开始,然后将其塞满(在字面上)任何地方在您的系统上。下一步,我们将使用bitbake将其导入到您的meta层,以进行一些分阶段以及不适合我们的事情。recipetool appendsrcfile -wm rpi /path/to/your-layer-meta virtual/kernel /path/to/your-overlay.dts 'arch/${ARCH}/boot/dts/overlays/your-overlay.dts
在这一点上,您应该以一个recipes-kernel/linux
目录结尾,并带有一个针对$MACHINE
类型的-wm
(如上所示的rpi)的bbappend,准备复制设备树将源文件放入适当的位置,以便在构建内核时进行bitbake查找。但是它仍然不会包含在您的内核构建中。
我们需要将覆盖参考添加到KERNEL_DEVICETREE
变量中,该覆盖范围应覆盖以下范围:linux
,bootfiles
和meta-中的sdcard_image-rpi.bbclass
树莓派。
在第3步中创建的linux bbappend中,添加KERNEL_DEVICETREE += "overlays/your-overlay.dtbo"
以使linux内核构建将您的dts包含在内,以便编译为dtbo。
要使sdcard_image-rpi.bbclass复制文件,您需要在图像配方中添加KERNEL_DEVICETREE = +“ overlays / your-overlay.dtbo”。
要使覆盖层处于活动状态,您需要创建一个recipes-bsp/bootfiles/rpi-config_git.bbappend
,您可以在其中添加do_deploy步骤以将dtoverlay=your
行添加到config.txt
。
我将我的图层用于多个项目,因此让dts与每个内核一起编译感到很不错,但仅将其复制到我的 image 配方将其添加到KERNEL_DEVICETREE的图像中。为了进一步保证我不会让这些东西干扰我不希望它们出现的图像,我的rpi-config附加项进行了测试,以查看是否应将dtoverlay行添加到config.txt
当然,所有这些都假设您将使用自己的本地DTS,而不是从内核源DTS开始。整个过程大致相同,但是您可以修补现有的文件,或对其进行复制,或者在Linux配方中进行任何操作。
我希望这会有所帮助!我知道这是一个老问题。