• 欢迎访问伊栖物联网社区,聚焦物联网技术和解决方案QQ群:735553309
  • ,从传感器到片上嵌入式系统,无线接入,边缘计算,在这里您可以讨论一切
  • 参加最新的物联网研讨会报名
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏伊栖Eccee

嵌入式Linux如何打上RT PREEMPT成为实时Linux系统

片上系统 Robin TU 2年前 (2022-02-24) 1284次浏览 0个评论

本文将以Digi的 ConnectCore 6UL为例,演示给基于NXP的i.MX6UL片上系统模块的嵌入式Linux打上实时补丁的过程。

DIGI ConnectCore 6UL片上系统模块以极小和超薄的封装集成了恩智浦 NXP i.MX6UL嵌入式处理器和Flash,内存,安全芯片,Wifi/BT等组件,构成的最小系统,为物联网提供便捷的核心主控平台,以及配套的嵌入式Linuxt系统和软件硬件工具,加快产品开发和上市。这款核心主控模块只有2.85mm X 2.85mm大小,非常的薄,极像一块芯片,但它是五脏俱全的核心板,具有非常低的功耗和多种多样的接口,跑最新的Linux内核,有完整的源码,并且提供和NXP处理器一样的长达10年以上的供货保证。用户可以用它快速开发长期使用的工业产品,其相关的BSP底层驱动则由Digi公司维护,让用户可以专注于应用的实现,减少开发风险。

在开始操作之前,请确保您已经安装好DEY系统开发环境,并成功编译了基础的Linux镜像。
如果您还没有编译过镜像,那么至少需要先编译好Linux内核,可以用下面命令:

先编译一个可用的Linux内核,如果您刚编译完dey的镜像,可以不用这个操作,因为Linux系统已经编译好了

bitbake -c compile virtual/kernel

我们需要修改Linux内核,打上RT Peempt补丁,为了找到合适的内核版本,先Linux内核配置选项菜单

bitbake -c menuconfig virtual/kernel

在这个页面,可以看到对应的内核版本,请记录下来,以便后续下载对应版本的补丁。

首先要了解哪些地方是系统内核源码和对应的配置文件,以DEY 3.0为例:
真正的内核源码在 tmp/work/ccimx6ulsbc-dey-linux-gnueabi/linux-dey/5.4-r0/git下,这是个链接文件,指向tmp/work-shared/ccimx6ulsbc/kernel-source,通常我们可以在主机上操作这个目录,而无需进入devshell来操作。
内核的配置文件是在tmp/work/ccimx6ulsbc-dey-linux-gnueabi/linux-dey/5.4-r0/defconfig,在DEY编译过程中会引用这里的选项进行操作,事实上在编译过程中会根据它在tmp/work/ccimx6ulsbc-dey-linux-gnueabi/linux-dey/5.4-r0/build目录下生成.config,这也是真正的内核配置文件。对于内核修改的备份,以defconfig为宜,因此可以在首次编译完成后就把这个defconfig添加到自己的项目文件夹下的版本库中,比如

git add ./work/ccimx6ulsbc-dey-linux-gnueabi/linux-dey/5.4-r0/defconfig
git commit -m "initial commit, original defconfig"
git push

如果我们改动了内核配置,担心改得不对,恢复的方法是:
bitbake -c cleanall virtual/kernel
这样会清除内核目录:./tmp/work/ccimx6ulsbc-dey-linux-gnueabi/linux-dey/5.4-r0/ 和内核目录等,用bitbake -c compile virtual/kernel重新生成一套默认的内核文件源码

下面是打上RT-Patch的过程:

cd tmp/work-shared/ccimx6ulsbc/kernel-source
wget https://mirrors.edge.kernel.org/pub/linux/kernel/projects/rt/5.4/older/patch-5.4.84-rt47.patch.xz
xzcat ./patch-5.4.84-rt47.patch.xz | patch -p1
cd ../../../..
bitbake -c menuconfig virtual/kernel

在General Setup里有一项Preemptible相关的选项,打开它并选中Full Preemptible那项,然后保存.config,并退出。

bitbake -c savedefconfig virtual/kernel

这会在./tmp/work/ccimx6ulsbc-dey-linux-gnueabi/linux-dey/5.4-r0/ build目录下生成defconfig

注意,我们如果用这个build目录下的东西编译,应该用bitbake -C ,因此

bitbake -C compile virtual/kernel来生成新的rt-patch内核

bitbake core-image-base来打包新内核到固件镜像


ECCEE版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:嵌入式Linux如何打上RT PREEMPT成为实时Linux系统
喜欢 (1)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址