2007年3月2日星期五

在ARM上演示uC/OS

  在克服了一些困难之后,终于可以在ARM上直观的表演uC/OS了。(鼓掌)

  下面两张图是原作者《嵌入式实时操作系统uC/OS-II第2版》的第一个范例。内容是这样的:建立10个任务,随机的在屏幕上显示本任务的编号,屏幕下方提示的数据分别是:任务数(10个任务+1个监视任务+2个系统任务)、CPU占用率、任务切换情况。

  左边这张是uC/OS移植到WindowsXP之后的效果,为了兼容原作者的代码,在控制台下显示运行结果。因为刚刚开始运行,屏幕还没有占满。
  右边的图是今天刚刚改写好的ARM版uC/OS,为了兼容PC下的代码,把PC机上特有的函数封装一层,以“字符模式”运行。值得注意的是CPU占用率将近100%,只要把uC时钟降低,那么CPU占用率也会降低,当然如果那样做的话,ARM有很多时间是空闲的。

  在ARM平台上,干扰因素比PC多,加上机能限制,当外部中断出现时,你会看到“任务切换次数”下降,但是并没有挂掉。据说uC/OS被验证为是一个足够稳定的系统,可以用于军事、科研、紧急事务处理(医疗救护?)等领域。当然,我认为那是建立在程序不写错的基础上,实际上[tc]的这份uC只要破坏掉看门狗的运行,系统即刻会崩溃的。

  还需要说明的两个问题:

  一个是,[tc]很想知道,在CPU空闲的时候,ARM能不能迅速切换到省电模式,降低功耗?问题在于,[tc]分别试验了CPU在65%和98%的两个程序,结果65%的情况下,CPU温度比较低(这项测试是根据[tc]的触觉,不知道有没有心理因素),也就是说,ARM是自动降温的CPU。然而在官方的说明文本里面似乎没有出现相关介绍。

  另一个问题是,这个程序中,[tc]使用的是自己编写的随机函数。似乎工作的还不错\ OoO /。


 

2 条评论:

Unknown 说...

说道随机函数,刚刚用srand,rand糊弄了作业。

[tc]天驰 说...

是关于什么的作业呢?

另:这才发现这几天贴的照片色温偏高了,比如这次uC的底色应该是灰色,下次注意。