2.2 嵌入式操作系统文件构成与接口定义
嵌入式µCOS-Ⅱ的框架层次如图2.5所示。µCOS-Ⅱ内核包括任务管理、任务调度、任务间通信、内存管理和中断服务例程ISR,还包括系统任务、时钟节拍和时间处理等模块。与任务和内存相关的部分是在驱动层上完成的,而与时钟有关的部分则直接作用于硬件。根据不同应用,有GUI、TCP/IP和文件系统等可选API模块。应用软件都是由任务组成的,可以直接调用内核,也可以在应用程序接口API之上运行。程序的入口是启动代码。启动代码直接初始化一些硬件。
图2.5 嵌入式µCOS的框架层次
µCOS-Ⅱ源文件已将各文件做了很好的归类,以方便用户在其他处理器上移植它的代码(图2.6)。与硬件相关的接口部分被设计到一些文件中,如OS_MCU.H,OS_MCU_A.ASM,OS_ MCU_C.C是与用户具体使用的处理器相关的,在移植时要根据处理器对其中的代码做相应修改,这些文件所体现的就是µCOS-Ⅱ所谓的HAL(硬件抽象层),也就是接口定义。
图2.6 µCOS-Ⅱ的文件
另外OS_CFG.H,INCLUDES.H与用户具体的应用程序相关,包括决定任务的最低优先级,用户应用程序所能拥有的最大任务数等。这两个文件就是与上层应用软件的接口,提供应用程序的一些配置。
对于其余文件,用户在移植时一般不用考虑修改。
1.头文件组织关系
µCOS-Ⅱ.H是所有C源文件的头文件,用来定义常量、数据结构、全局变量和函数声明等。OS_CFG.H,是与MCU_file相配套的头文件,包括确定数组长度、选配功能模块。OS_MCU.H,是与TASK_file相配套的,用来定义基本数据类型、汇编函数声明。
2.源文件组织关系
µCOS-Ⅱ.C包括以下文件的调用:OS_CORE.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是时间相关源文件;OS_TMR.C是建立在操作系统的定时器,提供时钟节拍等相关源文件。OS_MCU_C.C是MCU_file,包括堆栈初始化和外挂函数实现。OS_MCU_A.ASM是TASK_file,包括任务级切换、中断级切换的实现。
做移植的用户需要改写的文件有:OS_CFG.H、OS_MCU.H、OS_MCU_C.C和OS_MCU_A.ASM。