如何在bc集成环境里编译uc/os

 

    本来按照邵教授和书上说的,uc/os在pc机上编译调试应该是非常简单的。只要把uc/os解压到根目录,保持原来的目录结构
不变,再装上bc45,就可以了。但是实际问题是网上基本上能找到的都是bc31,而且都是经过瘦身的版本,少了很多文件。基本
开发可以,对uc/os这样规模的程序就问题百出了。

    网上的经验介绍也不少了,但是感觉自己搞的时候还是困难重重。而且都只是介绍了命令行方式,没有介绍集成环境开发。
实际上只有能够在集成环境下运行成功,整个工作才有意义,不然只是验证了几个例子而已,根本没法进行自己的开发。

    第一次用完全没概念,直接在网上下了bc和uc/os,按照介绍装上了。然后打开程序,编译,出错。运行附带的可执行文件,
没反应。当时就觉得晕了,不知道如何下手。

    然后看了三天书,又把几个源程序打出来看,发现其实整个结构蛮简单的,代码也不多,就是分页符多,打印出来厚厚的一
叠,感觉好象很长一样。但是一直都太忙没有时间,直到昨天。花了一天的时间从早到晚,再从晚到早,终于把它搞定了。才发
现其实非常简单,关键就是能不能找到它的七寸(关键)。
    我总结一下我遇到的问题和走过的弯路,给大家借鉴。

步骤1.BC文件是否齐全
bc的文件是否齐全很重要,网上很多都是精简版,少很多文件,所以注意检查bin目录里面是否有这7个文件
bc.exe        IDE
bcc.exe       c
make.exe      make
tlink.exe     连接
tasm.exe      汇编
tasm2msg.exe  汇编
touch.com     修改日期
我下过三个版本,都是bc31,但是里面的文件都不一样。
版本A 只有bc.exe  命令行无法编译
版本B 只有bc.exe tasm.exe tasm2msg.exe 命令行无法编译
版本C 没有bc.exe只能在命令行编译,不能在集成环境编译。特别是版本C我是下的 FreeWiny 的,结果文件也不全。

步骤2 路径的设置
感觉uc/os太依赖绝对路径了,可能是方便于不同的项目共享。但是却给调试带来很多麻烦,很多莫名其妙的错误都是这个引起的。
由于我们安装的是bc31,而uc/os用的的是bc45,所以必须修改路径。FreeWiny和HComputer都是修改程序的路径设置,我觉得这样
太麻烦,要修改Test.lnk和Test.mak,而且以后每次版本变动都要重新修改。其实只要解压的bc到c:\bc45目录就可以保证命令行
编译成功。

步骤3
运行\SOFTWARE\uCOS-II\EX1_x86L\BC45\TEST下的maketest.bat。它用到了c:\bc45下面的这5个文件 make.exe,touch.com,
bcc.exe,tasm.exe,tlink.exe。运行后在\SOFTWARE\uCOS-II\EX1_x86L\BC45\下会生成LST、OBJ、 WORK三个子目录。可执行文
件在Work目录下面。

步骤4
FreeWiny和HComputer的文章都是讲到运行maketest.bat成功就打住了,没有再往下分析。实际上到步骤3虽然编译成功,但是没法
调试,用TD只能是汇编级调试,意义不大。所以我们还需要让程序能在bc集成开发环境里面编译运行。这样才能比较方便地调试分
析。这一步我走了很多弯路。
开始我用bc直接打开test.c编译,出错。我分析是路径的问题,找不到包含文件。于是把所有用到的文件放到一起,为了保险,我
干脆全放到bc的bin目录下面,把bc的库文件和包含文件也拷进来。结果又出现link error,仔细看了程序,test.c只包含了
includes.h,象OS_CORE.C等文件都没包含。于是在test.c里面加上include "ucos_ii.c",然后错误,重复定义。去掉includes.h,
在每个c文件加上条件编译,还是错。发现os_cfg.h必须在os_cpu.h后面,继续改。最后os_cpu_a.asm报错,out of memory!
……
折腾了好久,始终搞不定。准备放弃时突然想到建工程文件。
上次在看到某个人的经验说是打开工程文件直接编译,但是我下的uc/os里面从来没找到过什么prj文件。我以为是别人用的uc/os
版本不同,或者我的bc版本太低,想不明白就没有深究。看来这也许是解决问题的最后办法了。

以前也没用过bc,它的菜单里面只有open project和close project,居然没有新建。搞了半天,原来open project如果文件不
存在就新建。晕!然后加入test.c ucos_ii.c os_cpu_c.c os_cpu_a.asm四个文件,编译,又连接错,晕晕晕!定睛一看,好像
都是pc开头的函数找不到原型,加入pc.c,编译,…… 找不到Tasm2msg.exe??? 在硬盘上狂搜,终于在n年前用的tc下面找到了,
copy过来,编译,ok!!!!!!!爽!!!

欢迎和大家交流经验!
qq:1385240

你可能感兴趣的:(c,汇编,OS,ide,include,X86)