
Ofweek 电子工程网
在 linux 上模拟 uCOS-II 实时操作系统
1 引言
uCOS-II 是一个短小而功能强大的实时嵌入式操作系统。在 Jean J.Labrosse
先生所着.由邵贝贝教授翻译的 Micro/uCOS-II THE REAL-TIME KERNEL(Second
Edition)一书中对这一操作系统作出了精彩的讲解,该书是一部关于 uCOS-II
操作系统的经典教材,同时在书中提供了关于 uCOS-II 在 windows 环境下的移植
的 4 个范例。本文对其第一个范例作一个在 redhat linux9.0 上的移植版本。移
植的工作主要集中在三个方面,下文将分为三章,结合代码详细介绍。文章的最
后将介绍我的试验平台并演示我的试验结果。
2 字符串的显示
字符串显示函数 PC-DispStr 在文件 pc.c 中,这个文件本身不是 uCOS-II
的一部分。它的主要工作是建立一系列的功能函数来发挥 PC 机的强大功能,并
被测试代码所调用。
2.1 设置前景色和后景色
我们使用类似于 prinf("[30m")的语句来设置颜色.转义序列就是一个
让 shell 执行一个特殊步骤的控制指令。转义序列通常都是以 ESC 开头(这也是
它的命名原因)。在 shell 里表示为^[。这种表示法需要一点时间去适应, 也可
以用 完成相同的工怍(ESC 的 ASCII 码用十进制表示就是 27,=用八进制表
示的 33)。 声明了转义序列的开始,然后是[开始定义颜色。下面我们要选
择前景色(这里是 32,代表绿色)。背景色的 40 表示黑色。要是不想让提示符后
面的文字也变成绿色,我们用[0m 关闭转义序列,[0m 是 shell 的默认
颜色。前景色和背景色都有 8 种可用的选择。可选颜色:红色、绿色、黄色、蓝
色、洋红、青色和白色。他们对应的颜色代码是:30(黑色)、31(红色)、32(绿
色)、33(黄色)、34(蓝色)、35(洋红)、36(青色)、37(白色)。用同样色方法设
置背景色,不过要把第一个数字"3"替换成"4",例如 40、41、42、43、44、45、
46、47。虽然在这里可以按照上面介绍的对应关系定义修改在 pc.h 中定义的前
景色和后景色的宏,使对应关系更加明确。(注意:他的后面一位表示前景色,
前面一位表示后景色),但是我们在这里的设计思路是尽量不对原书中的代码作
改动,所以在函数的实现中直接使用 switch 语句,对相应的前景色和后景色 。
(linux 的 shell 只支持以上几种颜色)
switch (color&0xF0) /*查看前景色*/
{ case DISP_FGND_BLACK: printf("[30m");break;
……
}
评论0