Chinaunix首页 | 论坛 | 博客
  • 博客访问: 95184
  • 博文数量: 12
  • 博客积分: 1400
  • 博客等级: 上尉
  • 技术积分: 485
  • 用 户 组: 普通用户
  • 注册时间: 2009-06-12 22:46
文章分类

全部博文(12)

文章存档

2011年(1)

2009年(11)

我的朋友

分类: 嵌入式

2009-06-26 00:34:31

其实讨论这个的帖子网上有大把,但是之前我学这个东西的时候还是发现自己的编译环境和网上说的有些出入。最近有朋友问起这方面的问题,所以顺便把它贴出来,可能会对某些人有所帮助。

uc/os的源码示例本身就是在x86系列上跑的,所以无需我们自己动手进行源码移植了。这里主要谈编译和调试的问题。

在x86上编译uc/os,网上介绍的一般是使用borland c/c++ 3.1, borland c/c++ 4.5进行编译的,其中作者就是使用3.1,而且在后来发布的源码中增加了使用4.5编译的例子。bc3.1我没有使用过,只使用过bc4.5和TC3.0,并且都能成功编译。也有人想使用VC6.0或BC更高级的版本来进行编译,由于这些高级的编译环境都是基于保护模式的,跟uc/os基于实模式的代码不吻合,所以要进行一些改进:
一是按网友所说的(网上有关于VC移植的文章和源码),时钟节拍的获得不再通过直接控制底层硬件来获得,而是用多线程来模拟时钟中断。这种方式实际上只是一种模拟,肯定就不纯粹了,不过对学习uc/os也没啥大碍。
二是按uc/os官网()上提供的例子,上面说了一些“把程序做进启动盘,在电脑启动时进入windows之前取得整个CPU的控制权”云云,不去管它,反正挺麻烦的。

其实,要学习嵌入式OS,就不能老想着用VC去搞这搞那。学校的时候谁没有用过TC? 至少计算机考级是要上机的,而上机系统就使用TC2.0...(今时不同往日了,可能已经不是这一套了) 不再啰嗦,我这里要讲述的就是用TC3.0来编译uc/os。为何不介绍BCx.x,原因就是BC4.5的集成环境调试只能对windows程序,不支持uc/os的DOS程序,所以调试的时候还还是得用TD.exe (Turbo Debugger,大家都知道Turbo系列其实也是borland公司出品的啦)。这样的话我还不如用TC呢,它虽然是DOS界面,至少也集成了debugger。

工具准备:
TCPP3.0
TASM5.0
当然还有uc/os-II的源码

1. 安装TCPP3.0和TASM5.0。假定你装到D:\TC和D:\TASM
2. 将uc/os-II.exe包中的程序释放到某个盘的根目录下。
3. 设置环境变量:我的电脑->属性->高级->环境变量->用户变量,双击PATH项,在现有PATH变量值的后面加上分号,然后加上TC工具集的路径和TASM工具集的路径,即D:\TC\BIN和D:\TC\TASM,这两个路径都要设。如果缺少第一项,会提示TASM2MSG文件找不到,但你去查看其实已经在BIN下面(找不到的原因我也不知,可能是调用它的程序的工作目录不是在TC\BIN)!如果缺少第二项,那很明显TC调用TASM编译汇编文件时将提示找不到TASM文件,但是这个工具其实可以直接从TASM\BIN下拷贝到TC\BIN下使用,而不必设置环境变量。
4. 进入D:\TC\BIN,双击TC的MS-DOS快捷方式启动TC。
5. 设置编译环境的目录。Option->Directory, 设置第一项为D:\TC\INCLUDE,设置第二项为D:\TC\LIB,点OK退出。
6. 设置编译模式为大模式。Option->Compiler->Code Generation,在mode选择项中选Large.
6. 打开Project。Project->Open Project,选定uc/os目录下的例子Project,如D:\SOFTWARE\UCOS-II\EX1_X86L\EX1L.PRJ。
7. Compile->Build All。
8. 如果编译无错(按步骤来应该是无错),运行。
9. TC集成了调试环境,调试可以在TC中进行,不再赘述。

另外,由于不同时期发布的uc/os-II目录结构不太一样,所以我把我所用的版本的源码附上,这样就可以完全按照上述步骤来做了。包中附有TC和TASM安装后的文件,直接使用即可。


阅读(3378) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~