Raspberry Pi 树莓派硬实时补丁PREEMPT_RT配置与内核编译

quote标准的Linux内核的实时特性只能满足软实时应用的要求,为用户空间提供简基本的POSIX操作,但是无法保证严格的程序运行时间期限。而实时抢占补丁PREEMPT_RT和具有高分辨率的通用时钟事件层则可以为Linux内核增添硬实时的能力,PREEMPT_RT补丁也因此引起了工业界的关注。由于其简洁的设计和与内核主线的一致性,PREEMPT_RT在专业的音频、工业控制等硬实时应用中得到了广泛的关注。

最近正在进行信息物理系统(Cyber Physical System,CPS)相关的平台开发。CPS的控制对时间非常敏感,因此需要平台底层提供硬实时的支持。目前的测试平台是在树莓派上,因此需要为树莓派的Linux内核源码打上PREEMPT_RT补丁并重新编译。这个过程用了不少时间,也走了一些弯路,在完成之余也把自己的经验留给有需要的人。

编译树莓派内核所需的工具大部分已经集成在Raspbian发行版,唯一需要安装的是浮点运算工具bc

$ sudo apt-get install bc

获取树莓派Linux内核源码

$ git clone --depth=1 https://github.com/raspberrypi/linux
cd linux

获取树莓派内核编译配置文件.config,该文件可从/proc/config.gz中获取,或者通过make生成
方法1:

$ sudo modprobe configs
$ zcat /proc/config.gz > .config

方法2:对于树莓派1代

$ KERNEL=kernel
$ make bcmrpi_defconfig

对于树莓派2代

$ KERNEL=kernel7
$ make bcm2709_defconfig

获取并部署PREEMPT_RT补丁

$ wget https://www.kernel.org/pub/linux/kernel/projects/rt/4.1/patch-4.1.12-rt13.patch.xz
$ xzcat patch-4.1.12-rt13.patch.xz | patch -p1

通过make menuconfig配置PREEMPT_RT编译开关

$ make menuconfig

进入Kernel Features -> Preemption Model中,选择Fully Preemptible Kernel (RT)

Linux 内核编译 PREEMPT RT 配置

开始编译,并将编译好的内核安装到/boot分区中

$ make -j4 zImage modules dtbs
$ sudo make modules_install
$ 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/
$ sudo chmod a+x scripts/mkknlimg
$ sudo scripts/mkknlimg arch/arm/boot/zImage /boot/$KERNEL.img

其中’make -j4’是指采用四条线程同时进行编译,充分利用树莓派CPU中的四个核心,可以大大提高编译速度。

编译并安装完成后重启,如果在

$ uname -a

中可以看到PREEMPT RT,则说明内核编译并安装成功。

Linux 内核 PREEMPT RT 补丁安装成功

参考文档
[1] https://rt.wiki.kernel.org/index.php/RT_PREEMPT_HOWTO
[2] https://www.raspberrypi.org/documentation/linux/kernel/building.md
[3] https://www.raspberrypi.org/forums/viewtopic.php?f=29&t=39951

评论 (4)
  • 二月 24, 2016

    前辈您好,想请问您一个问题,我也是正在做这个树莓派的实时补丁,可是按着您的步骤一步步的做下来,发现输入make menuconfig 这个指令就报错误,您知道是怎么回事吗?很恳切想得到你的回复。

    • 寒枫秋叶

      四月 25, 2016

      具体的错误信息是什么呢

  • 小七

    五月 17, 2016

    make menuconfig时候,终端需要在在/usr/src/linux

  • wangluolaowu

    八月 10, 2016

    您好!按照你的文档,我成功打上了rt补丁, 但发现打上补丁后, 系统占用率一直在60%以上,请问这个问题您遇到过吗? 万分感谢!

发表评论

* 必须填写

浏览器版本过低,无法访问该网站 试用Google Chrome