uCOS-II 移值过程实例讲解
我将 uCOS-II 移植到了 EPONS 的 C33209 的平台上,接下来我就基于我移植好
的代码讲解如何将 uCOS-II 从一种 MCU 移植到另一种 MCU。
首先介绍 uCOS-II 的文件,如下表:
ucos_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_mutex.c
os_q.c
os_sem.c
os_task.c
os_time.c
ucos_ii.c
os_cpu_c.c
os_cpu_a.asm
其中我们和硬件平台相关的文件的文件名被加粗了,也就是说若要将 uCOS-II
移植到新的平台上只要关心以上四个文件就行了。当然你也可以根据需要再添加
你自己的和平台相关的文件,事实上我也是这么做的。在我移植的例子中就添加
了四个和平台相关的文件,文件如下表:
crt0.c
drv_rtc.c
vector.c
ext.s
crt0.c 是用来初始化系统的比如说 MCU 的一些特殊寄存器、设置外围的总
线接口,等。drv_rtc.c 是用来初始化系统中的一个 RTC 的,这个 RTC 可以为内
核提供必要的基于时间片调度的时基。同时提供了对 RTC 开始和停止的操作函
数。在我的例子中 RTC 会每秒产生 32 次中断。vector.c 顾名思义,它是系统上
电后为系统提供矢量入口表的文件,当然也包括中断向量表。ext.s 是为 uc/OS-II
提供 OS_ENTER_CRITICAL()和 OS_EXIT_CRITICAL()函数的具体实现以及在
用户程序的中断函数出入时要调用的状态保护和状态恢复函数 OS_SAVEALL ()
和 OS_RESTOREALL ()。前面两个函数的功能是:OS_ENTER_CRITICAL()屏
蔽中断;OS_EXIT_CRITICAL()恢复原来的中断使能状态。
1. os_cpu_a.asm 的说明
要想顺利的移植首先要了解 uCOS-II 的一些基本概念。
uCOS-II 实质上是一个嵌入式操作系统内核,她只负责管理各个任务,为每
个任务分配 CPU 时间,并且负责任务之间的通讯。内核提供的基本服务是任务
切换。这是个很重要的概念,可以说你只要掌握了任务切换的本质,可以说你就
评论0