linux - 如何在 Yocto 中为评估板(具有制造商的预设内核)设置抢占式实时内核?

标签 linux linux-kernel real-time embedded-linux yocto

我喜欢使用先发制人的 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 你应该这样做:

  1. 为您的内核版本下载正确的 RT 补丁,并使用 .bbappend 文件将其应用到您当前的 Linux 内核配方中。您可以找到补丁 HERE
  2. 将补丁添加到您的 bbappend 文件(存储在您自己的层中的一个已接受的目录中)。 p.e.: SRC_URI += "file://0001-linux-rt.patch"
  3. 激活抢占式内核。在您所在层的 defconfig 中手动设置 CONFIG_PREEMPT=y。或者,您可以使用 bitbake virtual/kernel -c menuconfig

meta-atmel 的陷阱:

  1. linux-at91_4.4.bb 配方不关心内核的补丁和子级别(p.e. 4.4.66 -> ..)。如果在 at91-linux 有新版本一段时间后它将进入元 atmel 层。
  2. linux内核的RT分支并不是每一个新的子级别都提供
  3. 这意味着不断打破你自己的元层

关于linux - 如何在 Yocto 中为评估板(具有制造商的预设内核)设置抢占式实时内核?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44117102/

相关文章:

linux - 无法写入/sys/kernel/以在 OVH CentOS 7 上禁用 MongoDB 的透明大页面 (THP)

r - 在 Linux 上为 R 安装 PostgreSQL 包时没有这样的文件错误 libpq-fe.h

android-emulator - 将新编译的 Linux 内核镜像加载到 android 模拟器 (1.5) 时出错

hadoop - Storm 创造拓扑

linux - linux 中的 sed 命令

linux - debuginfo-install 使用本地文件

c - getchar() 在内部是如何工作的?

linux-kernel - Linux (x86-64) 中的多个大页面大小?

asp.net - 为高消息流量 Web 应用程序横向扩展 SignalR 而不使用 Redis

python - 如何使用 tweepy 流式传输 Twitter 提及?