华人操作系统项目列表 使用SkyEye来模拟运行RT-Thread


使用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 ,再解压缩。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
"多谢关注realboard,请访问慧至科技官方网站www.hugacy.com" 感谢大家关注realboard,再三感谢,尤其是众多发email过来询问的网友。 鉴于有网友怀疑realboad速度比qemu慢,事实胜于雄辩,提供测试方法如下: 测试方法: 分别运行两个batch程序,用秒表或PC时钟计时(大概1分钟左右结束) 计时方法: 程序启动开始计时; 出现UI画面结束计时. 测试代码(rt-thread 0.4.0 relese): 如果对测试代码有疑问,请联系rt-thread咨询 bsp/mini2440/sdcard.c rt_uint8_t sd_init(void) { //-- SD controller & card initialize int i; sd_delay(1000000); //此处增加一行对ARM仿真性能进行压力测试 /* Important notice for MMC test condition */ /* Cmd & Data lines must be enabled by pull up resister */ SDIPRE = PCLK/(INICLK)-1; SDICON = (0<<4) | 1; // Type A, clk enable SDIFSTA = SDIFSTA | (1<<16); SDIBSIZE = 0x200; /* 512byte per one block */ SDIDTIMER=0x7fffff; /* timeout count */ /* Wait 74SDCLK for MMC card */ for(i=0; i<0x1000; i++); sd_cmd0(); 参考配置: Pentium(R) Dual-Core CPU E5400 @ 2.70GHz 2.69GHz, 3.46GB of RAM 参考结果: qemu为47秒, realboard为28秒 realboard之所有没有达到23秒以内,是因为Timer处理和外设IO还有专门优化。 早期曾经对realboard核心指令集模拟器做过多媒体解码测试,综合性能是qemu的2倍。 详情请参考我的CSDN blog realboard -- 继续挑战ARM高性能软件仿真极限 <** 任何个人或团体学习者,教育培训机构,自由项目开发组织,在非商业赢利前提下,均可以无偿体验和使用realboard,商业使用请联系作者获得授权, email : lxzhg@hotmail.com **> 测试包中所含其它资源为自由软件开发组织所有,请参考各自许可协议。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值