u COS-II 移值过程实例讲解 我将u COS-II 移植到了EPONS 的C33209 的平台上,接下来我就基于我移植好的代码讲解如何将u COS-II 从一种MCU 移植到另一种MCU。 首先介绍u COS-II 的文件,如下表: u cos_ii.h os_cfg.h os_cpu .h os_core.c os_dbg_r.c os_flag.c os_mbox .c os_mem.c os_mu tex .c os_q.c os_sem.c os_task.c os_time.c u cos_ii.c os_cpu _c.c os_cpu _a.asm 其中我们和硬件平台相关的文件的文件名被加粗了,也就是说若要将u COS-II移植到新的平台上只要关心以上四个文件就行了。当然你也可以根据需要再添加你自己的和平台相关的文件,事实上我也是这么做的。在我移植的例子中就添加了四个和平台相关的文件,文件如下表: crt0.c drv _rtc.c v ector.c ex t.s crt0.c 是用来初始化系统的比如说MCU 的一些特殊寄存器、设置外围的总线接口,等。drv _rtc.c 是用来初始化系统中的一个RTC 的,这个RTC 可以为内核提供必要的基于时间片调度的时基。同时提供了对RTC 开始和停止的操作函数。在我的例子中RTC 会每秒产生 32 次中断。v ector.c 顾名思义,它是系统上电后为系统提供矢量入口表的文件,当然也包括中断向量表。ex t.s 是为 u c/OS-II提供 OS_ENTER_CRITICAL()和OS_EXIT_CRITICAL()函数的具体实现以及在用户程序的中断函数出入时要调用的状态保护和状态恢复函数 OS_SAVEALL ()和OS_RESTOREALL ()。前面两个函数的功能是:OS_ENTER_CRITICAL()屏蔽中断;OS_EXIT_CRITICAL()恢复原来的中断使能状态。 1. os_cpu _a.asm 的说明 要想顺利的移植首先要了解u COS-II 的一些基本概念。 u COS-II 实质上是一个嵌入式操作系统内核,她只负责管理各个任务,为每个任务分配 CPU 时间,并且负责任务之间的通讯。内核提供的基本服务是任务切换。这是个很重要的概念,可以说你只要掌握了任务切换的本质,可以说你就掌握了移植uCOS-II 的技术。至于任务之间的通讯他们是建立在任务切换之上的或者说和系统平台关系不大(当然这也和操作系统通讯机制的实现相关,至少uCOS-II是这样的)。 接下来我们就有针对性的介绍什么是uCOS-II 里的任务。一个任务通常是一个无限循环,如下程序所示。 void Task1(void *data) { INT8U err; char *rxmsg; data = data; /* Prevent compiler warning */ while(1) //这是一个无限循环 { rxmsg = (char...