在raspbian系统上打rt补丁

来源:互联网 发布:汉诺塔递归算法干嘛的 编辑:程序博客网 时间:2024/04/28 12:20

描述:raspbian系统是针对raspberry pi专门优化、基于Debian的系统;这款OS对浮点运算有更好的支持;但该系统是软实时系统,需要打上rt补丁,将系统修改成硬实时系统,以此保证实时任务在1ms内得到相应;


下面记录完整步骤:

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

      $ sudo apt-get install bc

 

 

b、获取树莓派Linux内核源码:

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

   此行命令默认是找最新版本的内核版本,现在默认是获取4.4.14+版本,但后面的rt补丁网站上找不到相对应版本补丁;这样就会导致部署freempt_rt补丁错误;所以要想找到对应版本的Linux内核和rt补丁,就需要在https://github.com/raspberrypi/linux上下载各种Linux内核版本,然后再rt补丁网站上找相对应的版本,进行测试验证;如果编译通过,证明二者相对应;

   我下载的内核版本是:linux-rpi-4.4.y_irq;

       $  cd linux

  

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

 

此处利用红框内命令;

 

d、获取并部署PREEMPT_RT补丁:

$wget https://www.kernel.org/pub/linux/kernel/projects/rt/4.4/older/patch-4.4-rt2.patch.xz 

$xzcat patch-4.4-rt2.patch.xz  | patch -p1

 

运行xzcat命令,中间不需要人工任何参与,否则只能代表你找的rt补丁版本和Linux内核版本不相对应;

 

e、安装ncurses软件包:

如果不安装此软件包,运行make menuconfig 命令会报如下错误:

 

离线下载ncurses软件包,安装命令如下:

pi@raspberrypi:~$ chmod -R 777 ncurses-5.9.tar.gz

pi@raspberrypi:~$ tar -zxvf ncurses-5.9.tar.gz

pi@raspberrypi:~$ cd ncurses-5.9/

pi@raspberrypi:~/ncurses-5.9$ sudo su

root@raspberrypi:/home/pi/ncurses-5.9# ./configure

root@raspberrypi:/home/pi/ncurses-5.9# make -j4

root@raspberrypi:/home/pi/ncurses-5.9# make install

 

安装ncureses之后,然后再运行 $make menuconfig 命令,即可进行内核配置了;

 

f、通过make menuconfig配置PREEMPT_RT编译开关:

$ make menuconfig

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

 

 

 

 

g、开始编译,并将编译好的内核安装到/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’是指采用4条线程同时进行编译,充分利用树莓派CPU中的四个核心,可以大大提高编译速度。

编译并安装完成后重启。

h、重启完成后,利用如下命令查看是否编译并安装成功,如果看到PREEMPT RT,则说明内核编译并安装成功:

$ uname -a

 

 

i、Cyclictest 安装与测试:

$ git clone git://git.kernel.org/pub/scm/utils/rt-tests/rt-tests.git

$ cd rt-tests

$ make all

$ sudo cp ./cyclictest /usr/bin/

$ cyclictest --help

 

测试命令:


 

非实时性系统测试结果及系统内核版本:

 


 

 

实时性系统测试结果及系统内核版本:

 

 

树莓派在编译程序的情况下(make -j4),同时运行实时性测试命令:

$sudo cyclictest -l1000000 -m -n -a0 -t1 -p99 -i400 -h400 -q

 

从上图来看,raspbian rt 系统能够保证任务在1ms内相应。


0 0
原创粉丝点击