拿到一个树莓派之后,最好uname -a ,看一下内核版本号,比如同样的树莓派4B ,不同出厂批次和时间,是有一定改动的,比如有些是4.14,4.19 ,而有些是5.4,5.15 等,较新的树莓派如果向下刷固件,比如用树莓派最新的4B 刷ubuntu18.04 ,会出现
解决方法可以参考:
树莓派 | “start4.elf: is not compatible” 问题解决_J1FengZ的博客-CSDN博客
但是,为了最大化树莓派的性能,自己选用了64bit 的raspiOS ,用树莓派官方刷机工具刷入最新的raspiOS , uname 内核版本是 5.15, 刷机完毕
二:安装实时内核补丁
目前,树莓派官方已经制作好两个版本的打入补丁的内核,需要我们下载下来交叉编译,省去了自己打补丁的步骤
内核地址/
其他内核版本的暂时没有,所以得根据自己的系统内核,如果内核是4.14,4.19 ,32bit 系统那么恭喜,省略了打补丁步骤,可以直接参考如下网站:
四足机器人高算力、低成本主控第一步:给树莓派打上RT实时补丁
Raspberry Pi 4B: Real-Time System using Preempt-RT (kernel 4.19.y) - LeMaRiva Tech
但是,如果内核不是这两个,需要自己打补丁了,推荐使用64bit OS ,充分发挥硬件能力
详细步骤参考如下:
64bit RT Kernel Compilation for Raspberry Pi 4B . : 5 Steps - Instructables
注意:在这个步骤:
一定一定要选择自己的系统内核号,否则不兼容,导致开机卡在树莓LOGO 界面。
比如,我选择的是:
git clone ttps://github.com/raspberrypi/linux.git -b rpi-5.15.y
而补丁网站:
Index of /pub/linux/kernel/projects/rt/
选择自己的补丁型号:
wget https://mirrors.edge.kernel.org/pub/linux/kernel/projects/rt/5.15/older/patch-5.15.36-rt41.patch.gz
编译方式是交叉编译;
补丁打入完成,开机,uname -a,那么自己系统的实时内核就可以用了
如果不想交叉编译,直接使用编译好的内核,可以从这下载:
链接:https://pan.baidu.com/s/1WyB3VfRSWjvDsd7IUVWICA
提取码:7zg2
注意到: 树莓派通常支持两种实时内核方法,一种preemPT, 另一种是 xenomai,
关于这两个系统介绍,可以参考,
本文位草稿,继续填坑中
想要在preemPT 上创建高精度定时器,请参考linux posix 编程。