使用SkyEye来模拟运行RT-Thread [win32]
本文将说明如何在Win32环境下搭建RT-Thread的开发环境及如何使用skyeye来模拟运行/调试RT-Thread。
Win32开发环境的搭建
当前RT-Thread只支持ARM7TDMI平台,所以也需要一个交叉编译平台,来在Windows系统上生成具备ARM指令的操作系统二进制文件。Windows平台上用得比较多的是ADS或RealView中的ARM编译器,由于这两套平台都是商业化的系统,所以RT-Thread并没有选择它们,而是采用了支持更多不同CPU的GNU gcc平台,也就是GNU系统了。
在Windows平台上为了获得GNU的环境,需要安装额外的软件,为了简化安装,这里选择了Windows平台下最小的GNU环境:MSys,先请安装Msys,下载地址:
http://heanet.dl.sourceforge.net/sourceforge/mingw/MSYS-1.0.10.exe
安装截图如下:
对于初次使用Msys,建议采用默认选择,安装在C盘。
安装过程中会跳出一个命令行窗口,如下:
请直接选择n
然后随意按一键继续。MSys就算安装完成了。
它会在开始菜单中生成一个菜单:
运行msys,会出现类似linux rxvt的终端窗口:
安装ARM交叉编译器
ARM交叉编译器是配合Msys一起使用的,请到如下网址下载:
http://gro.clinux.org/frs/download.php/1335/arm-elf-0.1.zip
这是一个zip压缩,请解压后放到Msys的安装目录(默认Msys安装目录是C:\msys\1.0)
Msys和ARM交叉编译器的目录结构最终应该是这样的。
在Msys的终端窗口中输入/arm-elf/bin/arm-elf-gcc –v 应该会有如下输出:
开始RT-Thread
请先下载RT-Thread v0.2.1源代码,下载地址:http://openlab.rt-thread.com/rtt-download/rtt-0.2.1.tar.bz2,并放置到D:盘根目录下
在Msys终端中请运行如下命令行来解压缩源代码:
[code:1]cd /d/
tar jxvf rtt-0.2.1.tar.bz2[/code:1]
编译RT-Thread
进入到rtt的目录,设置好ARM 交叉编译器的路径,运行make即可:
[code:1]cd /d/rtt-0.2.1
export PATH=/arm-elf/bin:$PATH
make[/code:1]
稍微等待几分钟,编译出来的RT-Thread操作系统映像文件将成功的产生。
使用Skyeye运行RT-Thread
请先安装下载skyeye的windows二进制文件:http://gro.clinux.org/frs/download.php/1135/skyeye0.9.5.win32.rar
解压后应有skyeye.bat,运行它
请打开RT-Thread的内核映像文件: D:/rtt-0.2.1/kernel/bsp/lumit4510/rtthread-lumit4510
点击 [Run]
到这里已经进入到skyeye中了,再继续输入run
现在RT-Thread就启动起来了。
在rtt-0.2.1\kernel\testsuite下还有更多的内核映像例子,也可以用同样的方法加载。
使用skyeye调试RT-Thread
请直接运行skyeye.win32\bin\skyinsight.exe (不经过skyeye.bat),如下图所示
用File->Open菜单打开D:/rtt-0.2.1/kernel/bsp/lumit4510/rtthread-lumit4510
用View->Console菜单打开调试控制台
并输入
[code:1]target sim
load
b rtthread_startup[/code:1]
如下图所示
然后输入run,开始运行,RT-Thread启动后会自动停留在rtthread_startup位置处:
到这一步就可以开始单步调试,运行RT-Thread了(提示一点,不要在skyeyeinsight中一直运行下去,因为它不能中途断下来,请在运行的路径中设置断点)。
在 Ubuntu 上的编译和模拟方法:
安装软件
下载并安装 Sourcery G++ Lite
安装 SCons :
代码: 全选
# apt-get install scons
安装客制化的 qemu-system-arm
下载源码:
代码: 全选
$ git clone git://repo.or.cz/qemu/mini2440.git mini2440-qemu
下载上面的补丁并打上:
代码: 全选
$ patch -d mini2440-qemu/ -p1 <mini2440.patch
安装依赖库:
代码: 全选
# apt-get install zlib1g-dev
# apt-get install libsdl-gfx1.2-dev libsdl1.2-dev
编译
代码: 全选
$ cd mini2440-qemu
$ ./configure --target-list=arm-softmmu
$ make
下载 RT-Thread 源码:
代码: 全选
$ svn checkout http://rt-thread.googlecode.com/svn/trunk/ rt-thread
修改文件 rt-thread/bsp/mini2440/rtconfig.py :指定 CodeSourcery 编译器所在的正确位置
代码: 全选
if CROSS_TOOL == 'gcc':
PLATFORM = 'gcc'
# EXEC_PATH = 'E:/Program Files/CodeSourcery/Sourcery G++ Lite/bin'
EXEC_PATH = '/home/user/CodeSourcery/Sourcery_G++_Lite/bin'
编译:
代码: 全选
$ cd rt-thread/bsp/mini2440/
$ scons
解压缩 rt-thread/tools/SDCARD.zip
可将之前编译的 qemu-system-arm 从 mini2440-qemu/arm-softmmu 拷贝至 rt-thread/tools
进行测试
开个终端,输入
代码: 全选
$ cd rt-thread/tools/
$ ./qemu-system-arm \
-M mini2440 $* \
-kernel ../bsp/mini2440/rtthread-mini2440.axf \
-show-cursor \
-sd SDCARD \
-serial telnet:127.0.0.1:1200,server \
-serial file:virtualkbd
再开个终端,输入
代码: 全选
$ telnet 127.0.0.1 1200
就 O 了,回头我再试试 debug 。
附件是我编译的 qemu-system-arm (64位版)。由于附件名称的限制,下载后请先改名为 7z.001 和 7z.002 ,再解压缩。