当前位置:
文档之家› 西安电子科技大学嵌入式实时操作系统第10章PPT课件
西安电子科技大学嵌入式实时操作系统第10章PPT课件
语言 汇编 汇编 ANSI C ANSI C ANSI C ANSI C ANSI C ANSI C ANSI C ANSI C ANSI C ANSI C
复杂度 高 高 高 低 低 低 低 低 低 低 低 低
第10章 μC/OS-Ⅱ的移植与应用
移植所要进行的工作可以简单地归纳为如下几条: (1) 声明11个数据类型(OS_CPU.H); (2) 用#define声明4个宏(OS_CPU.H); (3) 用C语言编写10个简单的函数(OS_CPU_C.C); (4) 编写4个汇编语言函数(OS_CPU_A.ASM)。 根据处理器的不同,一个移植实例可能需要编写或改写 50~300行的代码,需要的时间从几个小时到一星期不等。 移植完毕后还要进行测试。
语言 ANSI C ANSI C ANSI C ANSI C ANSI C ANSI C ANSI C ANSI C ANSI C ANSI C ANSI C ANSI C ANSI C ANSI C ANSI C
汇编 汇编
复杂度 低 低 低 低 低 低 低 低 低 中 中 高 低 高 高 高 高
第10章 μC/OS-Ⅱ的移植与应用
第10章 μC/OS-Ⅱ的移植与应用
4. INCLUDES.H文件说明 INCLUDES.H是一个主头文件,它包括了所有的头文件, 这样做的好处是使得在应用中无需考虑每个 .C文件到底需 要哪些头文件,还可大大地提高代码的可移植性。唯一的缺 点是它可能会包含一些不相关的头文件,因此可能增加每个 文件的编译时间。一般地,该文件应该包含在所有 .C文件 的第一行,即# include “includes.h”。 10.1.2 OS_CPU.H代码的移植 OS_CPU.H头文件中包含了与编译器有关的数据类型和 与处理器有关的代码,具体如程序清单10.1所示。
第10章 μC/OS-Ⅱ的移植与应用
(4) C编译器必须支持从C中打开和关闭中断。 (5) C编译器最好支持用户在C语言程序中嵌入汇编语言, 这有利于用汇编语言来直接开关中断。 3. 移植的主要工作 µC/OS-Ⅱ的移植非常简单,但前提是:必须理解处理 器和C编译器的技术细节,拥有和掌握必要的工具,处理器 和编译器满足µC/OS-Ⅱ的上述五项原则。根据如图10.1所示 的µC/OS-Ⅱ软硬件体系结构,移植工作主要是改写与处理 器有关的内核代码以及与编译器数据类型有关的文件,详细 内容如表10.1所示。
第10章 μC/OS-Ⅱ的移植与应用 图10.1 µC/OS-Ⅱ软硬件体系结构
第10章 μC/OS-Ⅱ的移植与应用
表10.1 移植需要修改的文件一览表
名称 BOOLEAN INT8U INT8S INT16U INT16S INT32U INT32S FP32 FP64 OS_STK OS_CPU_SR OS_CRITICAL_METHOD OS_STK_GROWTH OS_ENTER_CRITICAL() OS_EXIT_CRITICAL() OSStartHighRdy() OSCtxSw()
名称 OSIntCtxSw() OSTickISR() OSTaskStkInit() OSInitHookBegin() OSInitHookEnd() OSTaskCreateHook() OSTaskDelHook() OSTaskSwHook() OSTaskStatHook() OSTCBInitHook() OSTimeTickHook() OSTaskIdleHook()
类型 函数 函数 函数 函数 函数 函数 函数 函数 函数 函数 函数 函数
所属文件 OS_CPU_A.ASM OS_CPU_A.ASM
OS_CPU_C.C OS_CPU_C.C OS_CPU_C.C OS_CPU_C.C OS_CPU_C.C OS_CPU_C.C OS_CPU_C.C OS_CPU_C.C OS_CPU_C.C OS_CPU_C.C
类型 数据类型 数据类型 数据类型 数据类型 数据类型 数据类型 数据类型 数据类型 数据类型 数据类型 数据类型
宏定义 宏定义
宏 宏 函数 函数
所属文件 OS_CPU.H OS_CPU.H OS_CPU.H OS_CPU.H OS_CPU.H OS_CPU.H OS_CPU.H OS_CPU.H OS_CPU.H OS_CPU.H OS_CPU.H OS_CPU.H OS_CPU.H OS_CPU.H OS_CPU.H OS_CPU_A.ASM OS_CPU_A.ASM
第10章 μC/OS-Ⅱ的移植与应用
第10章 μC/OS-Ⅱ的移植与应用
10.1 移植的基本方法 10.2 基于MCS-51单片机的移植实例 10.3 基于ARM处理器的移植实例 10.4 基于MCS-51单片机的应用实例 10.5 基于ARM处理器的应用实例
第10章 μC/OS-Ⅱ的移植与应用
10.1 移植的基本方法
第10章 μC/OS-Ⅱ的移植与应用
1. 移植对微处理器的要求 要使µC/OS-Ⅱ能够正常运行,处理器和编译器必须满 足以下五项要求: (1) 处理器的C编译器能产生可重入代码; (2) 用C语言就可以实现开关中断; (3) 处理器至少能支持定时中断,中断频率一般在10~ 100 Hz之间; (4) 处理器能够支持硬件堆栈,容量可达几KB; (5) 处理器有堆栈指针和读/写CPU其它寄存器、堆栈内 容或内存的指令。
10.1.1 移植的概念与一般要求 这里所谓的移植,就是使一个实时内核能运行在另一种
微处理器或者微控制器上。为了方便移植,μC/OS-Ⅱ在设 计时就充分考虑了可移植性,大部分代码都是用ANSI C语 言编写的,考虑到绝大多数微处理器在读/写寄存器时只能 用汇编语言来实现,所以仍然需要用汇编语言来编写2. 对移植开发工具的要求 移植µC/OS-Ⅱ,需要一个针对用户用的CPU的C编译器, 它必须满足如下要求: (1) C编译器必须支持汇编语言程序。 (2) C编译器必须能支持可重入代码,因为µC/OS-Ⅱ是 一个可剥夺型内核。 (3) C编译器必须包括汇编器、连接器和定位器。连接 器用来将经编译和汇编后产生的不同的模块连接成目标文件。 定位器用于将代码和数据放置在目标处理器的指定内存映射 空间中。