我喜欢玩一个先发制人的Linux内核和Yocto。 作为硬件,使用SAMA5D3x Evalboard + SAMA5D35-CM模块。
Atmel 提供了一个元 atmel 层,其中包括"at91-linux_*.bb"配方。此配方为 SAMA5D3x 计算机构建内核。
为了使用实时内核,我应该插入实时补丁并在内核配置中激活它们。
我没有找到如何使用现有内核执行此操作的教程。我的问题是:
如何/在哪里修改给定的内核配方以使其成为实时内核(preempt-rt)?
我的测试项目位于 项目目录"/home/user/yocto"。它有以下内容:
- "/yocto git clone" ==> Yocto 系统
- "/元开放嵌入式" ==>元嵌入式配方
- "/meta-atmel" ==> Atmels yocto layer
- "/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内核?
一般来说:
在.../source/poky/recipes-kernel/linux
你应该找到一个linux-yocto-rt_X.XX.bb
配方来编译一个完整的抢占式 RT 内核。
对于元 atmel,您应该执行以下操作:
- 下载适用于您的内核版本的正确 RT 补丁,并使用 .bbappend 文件将其应用于您当前的 Linux 内核配方。你可以在这里找到补丁
- 将修补程序添加到您的
bbappend
文件中(存储在您自己的层中,位于接受的 direcotries 之一中)。 体育:SRC_URI += "file://0001-linux-rt.patch"
- 激活抢占式内核。在层的 defconfig 处手动设置
CONFIG_PREEMPT=y
。或者,您可以使用bitbake virtual/kernel -c menuconfig
元阿特梅尔的陷阱:
- Linux-at91_4.4.bb 配方不关心内核的补丁和子级别(P.E. 4.4.66 -> ..)。 如果 AT91-Linux 有新版本,它将在一段时间后进入元 Atmel 层。
- 没有为每个新的子级别提供 Linux 内核的 RT 分支
- 这意味着您自己的元层不断中断