QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 2825|回复: 0

在ubutntu的skyeye环境下调试ucos-ii

[复制链接]
发表于 2011-11-25 18:09:03 | 显示全部楼层 |阅读模式
在ubutntu的skyeye环境下调试ucos-ii


这篇文章我是从我的csdn博客上转过来的,原文http://blog.csdn.net/chenvsa/article/details/7011562

我是新手,昨天刚刚学习skyeye,参照了一些帖子调试成功了ucos,记录一下学习过程。

要用的工具是:

1.skyeye

2.arm-elf-tools

3.ucos-ii4skyeye



    1.在ubuntu中,如果源中有skyeye的话安装最简单,sudo apt-get installskyeye,这样安装的skyeye不是最新版本的(但是对个人学习应该也够了),如果想安装最新版本或源中没有skyeye也可以去官网下载源码,然后安装。如果是源码安装,需要解决一些依赖问题,这方面的帖子多的很。

    2.arm-elf-tools是linux下arm的交叉编译器,是用来编译源文件的。在网上搜索很容易下载到,我下载的是arm-elf-tools-20030314.sh。切换到其所在目录,执行sudo sh./arm-elf-tools-20030314.sh。安装会出现如下错误:tail:cannot open `+43' for reading: No such file or directory。

解决方法:编辑arm-elf-tools-20030314.sh文件,在39行将tail+${SKIP} ${SCRIPT} | gunzip | tar xvf -改为tail-n +${SKIP} ${SCRIPT} | gunzip | tar xvf -。再执行sudo sh ./arm-elf-tools-20030314.sh。

又出现下述错误:gunzip:stdin: unexpected end offile,这是因为一旦编辑,甚至打开该文件,就需要在其最后加上一个空白行,否则它不会正常工作。用vi打开该文件按G移到文档末尾添加一个空白行,保存退出。再次执行:sudo sh ./arm-elf-tools-20030314.sh。脚本执行结束后在/usr/bin下生成很多arm-elf-的程序。

    3.同样,ucos-ii4skyeye可以从官网下载,或直接百度一搜就有很多。我下载的是tar zxfv ucosii4skyeye-1.9.3.tar.gz,将压缩包放到主文件夹下然后执行tar zxfv ucosii4skyeye-1.9.3.tar.gz。这样会在目录下产生一个

ucosii4skyeye的文件夹。

   首先阅读一下该文件夹下的readme,得知在该文件夹下的samples文件夹下有几个程序,以其中的一个程序(ucos_test)为例,进入ucos_test文件夹,在该文件夹下有一个skyeye.conf,这个文件是skyeye模拟ucos时需要读取的配置文件,在第3.步会用到。

    readme中的调试方法是对于源码安装skyeye来说的,假若我们是apt-get安装的话,只须略做调整,步骤如下:(同样适用于源码安装)

     a.make cleanall

     b.make config

     c.make dep

     d.make

在执行上面的b命令时会出现错误:

Ican not guess the host operation sysytem, please set OSTYPE variablein rules, make! or execute command export OSTYPE=linux-gnu in bashshell, if your host system is linux...

根据提示输入命令export OSTYPE=linux-gnu

然后从a命令重做。执行c命令,假若此时还没安装arm-elf-tool的话会出错:arm-elf-gcc:command notfound。继续执行d命令,仍然会有错误,是说isdigit函数出错(具体描述忘了)。解决方法:在ucosii4skyeye/lib/文件夹中有一个文件skyeye_printf.c,顾名思义这是输出函数的实现文件,编辑该文件自己加入isdigit函数,函数如下:

staticint isdigit(char ch)

{

     if(ch >= '0' && ch <= '9')

         return1;

     return0;

}

再把最上方的#include<ctype.h>注释掉,因为这个头文件用到了系统的isdigit函数导致编译出错。保存退出。

再从a命令开始重新执行一次,完成后,在该目录下应该会生成了一些.o的文件还有一个ucos_test.elf文件,这个文件是要用skyeye运行的。

至此全部的编译工作完成了,

    4.接下来就是用skyeye运行elf模拟uc系统实现程序实例,回到/ucos-ii4skyeye/samples/ucos_test/目录下,命令行执行:skyeye -c skyeye.conf -e ucos_test.elf,其中-c和-e选项应该很好理解。这样程序应该可以正常运行了。

注:在readme中是说用make test来执行elf,make test实际上就相当与skyeye ucos_test.elf。这样运行对于我们用apt装的skyeye来说会出现如下错误:

SKYEYE:Errorin mem_read_word, no bank found, NumInstrs 1, mem_read_word addr = 0no bank
SKYEYE:Error in mem_read_word, no bank found, NumInstrs 1,mem_read_word addr = 4 no bank
SKYEYE:Error in mem_read_word, nobank found, NumInstrs 1, mem_read_word addr = 8 no bank。。。。。。

错误原因就是没有指明skyeye.conf配置文件,大家可以cat下该文件就知道了。

[ 本帖最后由 wangvsa 于 2011-11-25 18:15 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-2 00:29 , Processed in 0.083041 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表