我喜欢使用先发制人的 Linux 内核和 Yocto。 作为硬件,使用了 SAMA5D3x Evalboard + SAMA5D35-CM 模块。
Atmel 正在提供元 atmel 层,其中包括“at91-linux_*.bb”配方。此配方为 SAMA5D3x 机器构建内核。
为了使用实时内核,我应该插入实时补丁并在 kernel config 激活它们.
我没有找到如何使用现有内核执行此操作的教程。我的问题是:
如何/在何处修改给定的内核配方以使其成为实时内核(preempt-rt)?
我的测试项目位于 项目目录“/home/user/yocto”。它有以下内容:
- "/yocto git clone "==> Yocto 系统
- "/meta-openembedded "==> 元嵌入式食谱
- "/meta-atmel "==> atmels yocto 层
- "/meta-atmel/recipes-kernel/linux/linux-at91_4.4.bb"==> 内核配方
- "/meta-atmel/conf/machine/sama5d3xek.conf"==> 运行内核的机器
- "/myTest"==> 我的测试项目
- "/myTest/recipes-kernel/linux-at91_%.bbappend"==>替换内核配置+添加自己的设备树
- "/myTest/recipes-kernel/linux/linux-at91/sama5d3xek/defconfig"==> 我自己的内核配置
- /myTest/recipes-kernel/linux/linux-at91/sama5d3xek/myDev.dts ==> 我自己的设备树
关于如何在 Yocto 中激活 RT-Kernel 的任何想法/教程?
最佳答案
一般来说:
在 .../source/poky/recipes-kernel/linux
你应该找到一个 linux-yocto-rt_X.XX.bb
配方来编译一个完整的抢占式RT内核。
对于 meta-atmel 你应该这样做:
- 为您的内核版本下载正确的 RT 补丁,并使用 .bbappend 文件将其应用到您当前的 Linux 内核配方中。您可以找到补丁 HERE
- 将补丁添加到您的
bbappend
文件(存储在您自己的层中的一个已接受的目录中)。 p.e.:SRC_URI += "file://0001-linux-rt.patch"
- 激活抢占式内核。在您所在层的 defconfig 中手动设置
CONFIG_PREEMPT=y
。或者,您可以使用bitbake virtual/kernel -c menuconfig
meta-atmel 的陷阱:
- linux-at91_4.4.bb 配方不关心内核的补丁和子级别(p.e. 4.4.66 -> ..)。如果在 at91-linux 有新版本一段时间后它将进入元 atmel 层。
- linux内核的RT分支并不是每一个新的子级别都提供
- 这意味着不断打破你自己的元层
关于linux - 如何在 Yocto 中为评估板(具有制造商的预设内核)设置抢占式实时内核?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44117102/