uCOS51 移植心得
巨龙公司系统集成开发部 杨屹 asdjf@163.com 2002/10/03
引言
自从发表《uCOS51 移植心得》以来,我收到了很多朋友们的来信,大家对公开源码表
示鼓励,谢谢大家的支持!很多人对于编写自己的操作系统很感兴趣,uCOS51 是个不错
的选择。它的优点是简单易懂,学习成本低,有利于向 32 位 CPU 过渡。目前,嵌入式
BBS 上的热点是:嵌入式实时多任务操作系统、单片机上网、32bitCPU(如 ARM 等)。
其实通过 uCOS51 学习完全可以掌握这些热门技术的精髓,而且学习成本低廉。为此我会
陆续将我在研发过程中的经验体会写出来与大家交流,共同进步。
我准备讨论以下内容:uCOS51 高效内核、OS 人机界面 SHELL 的编写、51 机开发板的
硬 件 设 计 、 RTL8019AS 网 卡 驱 动 程 序 、 51TCP/IP 协 议 栈 设 计 、 应 用 协 议
FTP、PPP、HTTP、SMTP、SNMP……在 51 上的实现技术、51OS 任务划分和应用程序实
例、由 51 软件系统向 ARM 的移植以及其他想到的题目。欢迎大家积极参与。
注:开发板原理图、PCB 图、GAL 烧录文件、芯片手册、全部源程序可以来信索取,在
整理好后会共享在网上。
讨论 1 ----uCOS51 高效内核
前一段时间,我参与了一个 SNMP 网管板的项目,我负责硬件设计和单板软件开发。该
板的硬件由 MCS51+RTL8019AS 组成,有 64K FLASH 和 64K SRAM。软件部分有操作系
统和 TCPIP 协议栈。硬件比较简单,用了一个月就搞定了,协议栈我参考了老古开发板的
部分程序又上网找了 SNMP 源代码也很快完成了,但是测试时发现当使用较低时钟频率的
CPU 时(为了降低成本),由于 ASN.1 编解码部分过于庞大,而我的程序又是一个大循环,
AGENT 的响应速度受到严重影响,用户界面也反应迟钝。更坏的消息是公司为了适应市
场需求,还要在上面跑 PPP 和 HTTP。那样的话,我就得用 40MHz 的 AT89C51RD2 或者人
为的把程序断成几部分然后用状态机的方法在运行时再把它们连接起来。不过,我不想增
加成本,也不想把程序搞乱,迫不得已,只好使用操作系统。
说实在的,一开始我也不是很有把握,一来我不清楚 51 的 FLASH 是否装得下这么多代
码,二来我只做过 OS 应用开发,对于它的移植想都不敢想。不过,我在 BBS 上搜索了一
阵儿后还是有了一些头绪。我找到了几个 OS 的源代码(我喜欢用现成的),按照代码大
小、实时性、使用人数、众人口碑等标准,最后选定了 uCOS2。我感觉它的实时性有保障,
延时可预测,代码据说可小到 2K,网上讨论这个话题的人也比较多,而且它的网站上有针
对 KEIL C51 的移植实例。
经过一番查找,我得到了 5 个版本。其中 3 个是用 KEIL 编译的。本来我想直接把 OS 代
码嵌到应用程序中,但后来发现没有一个可以直接使用。有的无法用 KEIL 直接编译,有
的需要修改 DLL 在软件仿真下使用。而我需要的是能在串口输入输出,不需要修改任何无
关软件,能在软件仿真和硬件上运行的实时多任务操作系统。没有办法,我只好硬着头皮
去改编。
我分析了自己的劣势:1。KEIL 刚开始使用,不太熟悉;2。混合编程以前从没有作过;
3。时间紧迫,要在 1 个月内搞定。而我的优势就是有 5 个移植实例可供参考,可以上网查