嵌入式实时操作系统uC/OS-II的应用与新发展
uC/0S-II的移植
uC/0S-II是专门为单片机嵌入式应用设计的实时操作系统内核,主体用标准的ANSI C语言写成,可移植性极好。目前已被成功地移植到四十多种CPU上,包括8位、16位、32位及64位单片机,包括若干种DSP,因为移植的范例大多可以从网上下载,故移植起来并不困难。综合来自各方面的反映,移植难度并不在于uC/0S-II源代码本身,而在于不同用户使用了不同的 C编译器,由于编译器的差异而引发的移植方面的问题有时很难得到友人的帮助。而对于嵌入式应用潜在市场群体-正在高校就读的研究生们说来,困难还在于:几乎所有用于单片机的C编译器都是商业软件,其中有些还相当贵。
使用自由软件Linux下的C语言交叉编译器GNU gcc作为开发工具来编译移植uC/0S-II是一个不错的选择。
使用自由软件开发嵌入式应用的意义决不仅限于经济上节省开支。学习使用自由软件过程,实际上是培养IT高手的过程。自由软件将造就一大批有共同语言的软件开发精英,GNU gcc交叉编译工具支持大多数知名的16位、32位嵌入式应用CPU,如Motorola的68HC11/12、M68K、CPU32、ColdFire 、PowerPC,AMD的AMD29K,Intel的i386、Intel960,其它如著名的ARM、Thumb、M32、MIPS、RT、 SPARC、DEC的Alpha、 VAX等,还包括TI的TMS32 DSP等。
自由软件有强大的网上技术支持是公认的,不断推出的升级版本表明自由软件的强大生命力。使用GNU gcc作为交叉编译器的难点不在于交叉编译器的用法本身,而在于搭建Linux下的开发环境。这一部分工作在国外一般由专门的系统管理员来做。而国内由于公司的规模较小,往往没有专门的系统管理员,这部分工作要自己做,从而增加了Linux系统下自由软件的使用难度。使用中的另一个难点是,遇到问题时常常不知道如何处理。要学会看系统提供的帮助信息,向Linux的高手请教,校园内利用BBS的交流是一种学习的极好方式。还有一个办法是在网上搜索,因为你遇到的问题也许过去别人也遇到过,解决办法可能网上就有。再有一个办法就是直接给作者发电子邮件。自由软件有源码,大多都有作者的Email地址。如果 uC/0S-II的移植以GNU gcc交叉编译器为基础,讨论起来共同语言会更多些,移植会更容易。一些芯片生产商在推出其嵌入式应用芯片的同时就提供了uC/0S-II的移植代码,如 Motorola的16位DSP 56800系列,移植代码包含在系统开发工具SDK中,C编译器采用其子公司metrowerks的codewarrior。虽然移植不难有现成的例子可参考,但笔者仍认为移植是一个重要的学习过程,这一过程的意义远大于移植后的结果。这一过程有助于提高对RTOS的认识与理解,从而提高嵌入式工作者的理论与技术水平。