您的位置:首页 > 其它

BC3.1集成开发环境编译uc/os-II

2011-10-09 16:32 288 查看
最近在看uc/os-ii,对于书上给的例子,单击里面里面的.bat文件就可生成,当然还得配置一下环境,详情请参照这个网站:

http://www.freewind.com.cn/ucos/article/ucos251help.htm

我现在想说的是如何在BC3.1集成开发环境中生成书中的第一个例子,因为我觉得在集成开发环境中生成的话可以对源码进行跟踪调试,这样能让我们进一步了解它内部的运行机制。好了,废话到此为止:

1、你的下一个uc/os-ii,可以是2.51板或更高版的;

2、接着下一个BC3.1

以上两样在网上很好找的,uc/0s解压之后里面有blocks,hplistc,to,ucos-ii这死个文件夹,bc3.1安了之后大概是41M

在往下说之前先做一下几点假设

a、你的uc/oc-ii解压在C盘sofaware文件夹下

b、bc3.1安装在c盘borlandc文件夹下

c、假设我们在c:/borlandc目录下建立了一个lab1文件夹,用来存放我我们这次的例子

好了,继续:

3、把C:/SOFTWARE/uCOS-II/SOURCE目录下的文件全复制到我们上面建的lab1文件夹下

4、把C:/SOFTWARE/BLOCKS/PC/BC45下的pc.c及pc.h复制到lab1文件夹下

5、把C:/SOFTWARE/uCOS-II/EX1_x86L/BC45/SOURCE目录下的includes.h、os_cfg.h、test.c复制到lab1文件夹下

6、把C:/SOFTWARE/uCOS-II/Ix86L/BC45目录下的所有文件复制到lab1文件夹下

7、接下来要对文件做一下修改,其实也很简单,就是把源文件中所有的#include的文件目录该一下就行了,因为我们需要的文件已经全都复制的我们的lab1文件夹下了,在这个例子中我们只需要该一个文件就行了:

把includes.h中的

#include "/software/ucos-ii/ix86l/bc45/os_cpu.h"

#include "os_cfg.h"

#include "/software/ucos-ii/source/ucos_ii.h"

#include "/software/blocks/pc/bc45/pc.h"

改为

#include "os_cpu.h"

#include "os_cfg.h"

#include "ucos_ii.h"

#include "pc.h"

8、打开C:/BORLANDC/BIN目录下的bc.exe(记住,是bc.exe,不是bcw.exe。我当初就是载在这里的,bcw,exe是做windows程序开发,如果你用bcw.exe编译的话,总会提示确实winmain()函数,这里顺便提一下,很多人多知道微软我一个做windows的框架——MFC,但知道broland也有做windows的框架的人不多,borland也有一个做windows的框架——OWL(Object for Windows Library),而且是比MFC提早一年发布的......)好像扯远了,接着回到正题

9、打开bc.exe之后,如果是全屏模式,按Alt + Enter可以退出全屏模式,当然也可以进入全屏模式,单击project-> open project这是会出现一个对话框让你选.prj的文件,如果文件不存在,那么他会自动建立一个文件,在对话框中双击 ../ 这个图表,转到上一个文件夹,打开open project对话框之后,默认的目录是c:/borlandc/bin,所以我们双击 ../ 然后选择lab1目录,这时把上面的 *.prj 改为 lab1.prj 这就是我们的工程

10、选择 project -> add item 在出现的对话框中把一下几个文件加到我们的 lab1.prj 工程中:

os_cpu_a.asm

os_cpu_c.c

pc.c

ucos_ii.c

test.c

(这一点很重要,因为这是我们要编译的文件)

接下来就要出现问题了,也就是我为什么会写这篇文章的目的了。

11、选择 compile-> make 这时有可能会出现一下几种情况:

a、success,恭喜你,成功了,你可以选择 run-> run运行,接下来的可以不用看了,但我希望你能接着看,因为下面是我写这文中的主要目的。

b、好了现在该讲讲我编译时遇到的问题了。我编译时出现了一个错误信息,大概意识是说找不到 TASM 文件对于这个问题,在百度上好像是可以搜到答案的,我看了有好几种,但基本思想是一致的多说改变汇编的路径,具体是 option-> transfer-> ~tuobo assembler,然后是双击他,把 path 改成绝对路径,就是这个“c:/borlandc/bin/tasm.exe”,之后单击modify 然后是 ok。好了,另起一标号吧,要不然这11也写的太多了!!!

12、我们接着编译,就是 compile-> make 如果成功,那么,恭喜你,如果不能成功,那接着往下看,如果不能成功,又会出现一个错误提示,大概意识是说 找不着 tasm2msg 文件!晕!又找不着。。。。好,我们接着百度吧!

13、这回,我没找着(说不定是我看到不仔细,不是百度上没有,虽然我承认google比百度强悍,但我还是支持国产)!来了个小插曲,接着说。这个问题我想了一天没想到解决方法,当然还得上课吃饭,不可能一天都在想这问题!

14、不知到哪来的感觉,我突然绝对bc3.1的查找目录是以我的工程文件以起点,就是lab1.prj所在的目录为查找起点,如果我吧 tasm.exe、tasm2msg.exe放到我的工程文件夹中,那么。。。。

15、好,有想法了,那就接着干。首先我们还得把option-> transfer-> ~tuobo assembler的path改回成 tasm(我是改了的,如果不该会出现什么情况,我不知道),接着把 c:/borlandc/bin目录下的 tasm.exe 及 tasm2msg.exe复制到我们的 lab1 文件夹中,然后我们接着编译,就是compile-> make 。

16、如果success,那么还是那句话,恭喜你!要不你就接着看吧!

17、这时,会报出两个连接错误,前几个字好像是"fixup overflow at .......",接下来有改是我们的百度出场了

18、在百度上看了n个网页之后,大概明白了,是说发生溢出!因为汇编语言的编译模式与c程序的编译模式不一致,本程序中汇编语言的编译模式是 large 因为你在os_cpu_a.asm中可以找着这样一条汇编伪指令 “.MODE LARGE”,而bc3.1对c程序默认的编译模式是 small,所以的改,因为不能改汇编程序的,所以我们只能改c程序的编译模式,具体是这样的 option-> compiler-> code generation... 然后选择里面的 Model 里的 Large,然后就老套了:ok,然后compile->
make 。

19、如果你编译成功,那。。。。算了,不说了!

20、一般情况下还是失败的,而且出现的依然是连接错误,还是那个“fixup overflow at......”,郁闷吧!确实我当时也挺郁闷的,why??????

21、算了,不知道如何过度,就直接揭晓谜底吧!

22、回到我们最初建立的 lab1 把里面的 .obj 文件全删掉,然后再compile-> make ,这时不出以外,一般情况是对的,也就是说是 success! 然后就 run-> run 运行看看!

23、解释一下,bc3.1为了加快编译速度,在第二次编译时,对没修改的文件是不会进行编译的,说的直接一点就是在我们选择了那个Large模式之后的那个make是不会对已生成了的obj文件进行重新编译的,因为我们自始至终都没有对源程序做修改,当然最初改includes文件中的目录得除外!因此那一次的make实际上做到就是连接工作,因此哪些obj文件依然是small模式下编译生成,所以还会出现刚才的那个连接错误,当我们删除哪些obj文件之后在编译,因为此时 lab1 文件夹中已没有 obj 文件,所以只能重新编译,这时编译出来的
obj 文件是 Large 模式的,所以连接当然正常了!

好了,完了,感觉写的挺多的。我也是这几个星期刚刚开始看 uc/os-ii 因为除了电脑之外没有其他硬件,所以很想在电脑上做实验,那么学会在集成开发环境中编译是做实验的起步,所以。。。。。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: