2007年2月11日星期日

μc/OS-II在S3C2410上的移植小记

  μc/OS(下称“uC/OS”)是完成可以进程调度的可剥夺式操作系统。在经历了40小时之后终于能在本人的ST2410上运行了。然而此次移植的主要贡献仍然是uC/OS的原作者:Michael Anburaj。而[tc]由于智商方面的原因只完成了一些简单的工作。

  uC/OS移植的要点,在[tc]看来主要是两方面:
1、编写任务切换程序
2、实现系统Tick(这是实现可剥夺的关键)

  前者很简单,备份当前程序的状态,取回下一任务的状态即可。后者主要是利用定时中断的4号定时器完成。4号定时器是一个内部定时器,从200MHz时钟4分频后(分频比应该在初始化系统时间时设定PLL),经过预分频、分频得到适当的定时长度,然后指定pISR_TIMER4的指针,运行服务程序,最终调用OSTimeTick(),就完成了一次调度过程

  这个看似简单的过程实际实施起来却异常艰难。
  首先,使用定时中断需要MMU帮忙,然而[tc]配的MMU单独运行时没问题,使用定时中断也没问题,但是加上uC就不能工作。
  其次,初始化程序不大稳定,有时不硬件复位就会自动软复位。
  总之,[tc]智商不够,最后用了官方的SMDK2410的演示程序为样本,适当修改,这才得以工作。

  接下来还要调试uC/OS的其它功能,如消息队列、进程同步、死锁、邮箱等等。而进一步的要求,如文件系统、TCPIP等,看来只能等到开学以后了。
  累!

没有评论: