嵌入式Real-time Linux开发

大家常用的Linux系统基本是分时系统,任务调度比较慢,当处理紧急的任务的时候可能就会捉襟见肘了。比如,EtherCAT。之前公司使用和Linux非常类似的QNX操作系统,实时性较好,不过昂贵的费用却让小公司望而却步。这里给大家介绍免费的嵌入式Real-time Linux开发的方案,就是PREEMPT_RT Linux项目,这个也是开源Linux项目之一。

给嵌入式设备开发实时内核的话,首先确定设备的内核版本。

查看Linux内核版本命令:

root@myir:~# cat /proc/version

Linux version 5.4.31 (oe-user@oe-host) (gcc version 9.3.0 (GCC)) #1 SMP PREEMPT Tue Nov 2 07:05:34 UTC 2021

root@myir:~# uname -a

Linux myir 5.4.31 #1 SMP PREEMPT Tue Nov 2 07:05:34 UTC 2021 armv7l armv7l armv7l GNU/Linux

然后,在开源Linux项目网站上找对应的内核补丁包。

有两个git存储库托管着Linux主线内核版本的源代码,并附加了PREEMPT_RT补丁。
http://git.kernel.org/cgit/linux/kernel/git/rt/linux-rt-devel.git
http://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git
第一个补丁包含当前开发的PREEMPT_RT补丁和相应的Linux主线源代码。当焦点切换到下一个主线版本时,特定版本的开发通常会停止。一旦一个新的稳定的候选者被释放,这种情况就会发生。在此之后,开发版本被转移到第二个存储库,并由Steven Rostedt维护。第一个git库的维护者是Sebastian Siewior和Thomas Gleixner。

PREEMPT_RT补丁的不同版本还可以作为tar球使用。它们托管在kernel.org网站上。
https://cdn.kernel.org/pub/linux/kernel/projects/rt/

下载好实时内核补丁以后,针对嵌入式arm板的内核源码打实时补丁。可以使用patch,或者手动修改源码。

配置内核

 

 

交叉编译内核,解决编译问题。下载验证。

将编译生成的内核文件,拷贝到arm板对应的目录下面。注意加rt补丁号。比如:5.4.31-rt20  

 

可以看到驱动模块成功加载,并且版本名字也改为实时Linux版本。

 注意:

不要把实时内核里面的文件拷贝到之前的内核文件夹中,比如5.4.31。否则会有模块无法加载的问题。执行sudo dmesg命令,会有disagrees about version of symbol module_layout的错误。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AllenSun-1990

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值