树莓派实时内核(RT-kernel)的配置和编译

鉴于网上研究树莓派实时系统的文章很少,在此记录一篇关于树莓派实时内核编译的过程。

树莓派内核的编译主要分为两种:本地编译和交叉编译。本地编译速度较慢,但是方便;交叉编译速度快,但是操作麻烦。本篇介绍本地编译的过程。

一、编译环境
(1)树莓派3B
(2)操作系统:https://www.raspberrypi.org/downloads/raspbian/ (2019-07-10-raspbian-buster)

二、安装编译工具

sudo apt-get install bc
sudo apt-get install libncurses-dev libssl-dev
sudo apt-get install build-essential kmod cpio flex cpio bison

这里把可能需要安装的工具都列出来,具体的操作要根据你的实际情况而定,缺啥补啥。

三、搭建工作环境
(1)创建kernel工作目录

mkdir ~/kernel && cd ~/kernel

(2)下载源码
下载地址:https://github.com/raspberrypi/linux 此处注意下载的版本,目前github上关于rt-kernel的源码有两个版本rpi-4.14.y-rt和rpi-4.19.y-rt。这里我们选择rpi-4.14.y-rt,能够很好的兼容树莓派3B的硬件。尝试了rpi-4.19.y-rt,导致树莓派开不了机。可能这个版本是在新出的树莓派4上使用的,这里有待验证。
在这里插入图片描述
(3)将压缩包移动到kernel目录下并解压

unzip linux-rpi-4.14.y-rt
cd linux-rpi-4.14.y-rt

(4)编译前配置内核文件

KERNEL=kernel7
make bcm2709_defconfig

在这里插入图片描述
(5)实时内核配置

make menuconfig

选择Kernel Features
在这里插入图片描述
找到Preemption Model(Fully Preemptible Kernel (RT))
在这里插入图片描述
选择Fully Preemptible Kernel (RT)
在这里插入图片描述
最后保存修改并退出
在这里插入图片描述
四、开始编译
(1)编译,需要花两三个小时的时间

make -j4 zImage modules dtbs

(2)编译完成后,安装模块

sudo make modules_install

(3)将编译好的文件复制到/boot文件夹中

sudo cp arch/arm/boot/dts/*.dtb /boot/
sudo cp arch/arm/boot/dts/overlays/*.dtb* /boot/overlays/
sudo cp arch/arm/boot/dts/overlays/README /boot/overlays/

(4)替换内核

sudo chmod a+x scripts/mkknlimg
sudo scripts/mkknlimg arch/arm/boot/zImage /boot/$KERNEL.img

或者将$KERNEL.img修改成自己定义的.img文件,例:kernel-my.img
然后在/boot/config.txt的最后一行添加kernel=kernel-my.img,可以通过这个方法切换内核。
(5)重启

sudo reboot

五、检验和测试
(1)重启后查看内核是否替换成功

uname -a

在这里插入图片描述
(2)安装测试工具并运行

sudo apt-get install rt-tests 
sudo cyclictest -t 5 -p 80 -n 

注释: 运行五个线程,线程优先级为80,无限循环
cyclictest运行结果详解

T: 0 序号为0的线程
P: 0 线程优先级为0
C: 9397 计数器。线程的时间间隔每达到一次,计数器加1
I: 1000 时间间隔为1000微秒(us)
Min: 最小延时(us)
Act: 最近一次的延时(us)
Avg:平均延时(us)
Max: 最大延时(us)

测试示例
在这里插入图片描述

  • 3
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值