利用RT-Thread VMM组件实现对Linux实时性改造的实践

利用RT-Thread VMM组件,可以将Linux/RT-Thread双系统并行执行, RT-Thread和Linux双系统并行的好处是显而易见的,它既克服了Linux硬实时的不足,同时又有效利用了Linux生态系统,双剑合璧,可以针对复杂的应用场景释放系统能力。这篇文章利用RTT SDK提供的补丁和VMM组件,在virtualbox虚拟机中利用qemu来搭建一个双系统的运行环境,并对其原理进行一些简要分析。

在RT-Thread&Linux双系统中,RT-Thread充当hypvisor的角色,Linux相当于RT-Thread的idle task(这样RTT岂不是就没有idle task了?先按下不表,后面深入分析),简略架构如下图所示:

下面开始:

 准备开发环境

  1.VirtualBox安装Ubuntu 14.04.5 LTS系统

  2.安装依赖

sudo apt-get install build-essential git zlib1g-dev libsdl1.2-dev libglib2.0-dev "automake*" "autoconf*" libtool libpixman-1-dev
sudo apt-get install lib32gcc1 lib32ncurses5 scons
sudo apt-get install gcc-arm-none-eabi libnewlib-arm-none-eabi qemu-system-arm git vim

下载代码:

  RTT中的内核补丁只针对Linux-3.8.13版的内核代码,首先下载下来:

wget -c https://mirrors.edge.kernel.org/pub/linux/kernel/v3.x/linux-3.8.13.tar.xz

其次是RTT内核,码云下载比较快:

git clone https://gitee.com/rtthread/rt-thread.git

打VMM补丁:

在source平级目录新建source目录workspace,并解压内核到此目录,在workspace下,执行如下命令打补丁:

patch -d /home/vmm/rttvmms/workspace/linux-3.8.13 -p1 < /home/vmm/rttvmms/source/rt-thread/components/vmm/linux_patch-v3.8/0001-RTT-VMM-implement-dual-system-running-on-realview-pb.patch

补丁共有两个,继续打第二个:

Linux内核的补丁就打好了。

两个补丁的总体效果修改或添加的文件如下图所示:

 

搭建环境过程非常复杂,幸好搜到台湾一位前辈之前做过同样的事情,并且提供了完美的教程和链接.

下载环境:

git clone https://github.com/AdrianHuang/rt-thread-vmm-builder.git

环境提供了一套构建脚本,将打补丁,编译,文件系统生成等过程自动化.

下载过来后,执行make即可自动完成代码下载,打补丁和编译等操作。

执行make qemu

ctrl+alt +3 进入到linux console,输入密码root 登录。

执行insmod ./rtvmm.ko,加载rtt内核并运行

然后执行ctrl+alt+4 进入到RTT终端,可以看到双系统跑起来了。

ctrl+alt+3和ctrl+alt+4可以在linux console和rtt console之前来回切换。

结束!

猜你喜欢

转载自blog.csdn.net/tugouxp/article/details/116831375