C-OS-Ⅱ在ARM上的移植

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
中) ❖ 编写4个汇编语言函数(OS_CPU_A.asm文件中)
1. OS_CPU.h文件 OS_CPU.h包括了用#define定义的与处理器 相关的常量、宏和类型定义。
2.修改后的OS_CPU.h文件 3. OS_CPU_A.asm文件 在OS_CPU_A.asm文件中, C/OS-Ⅱ的移植 要求用户编写以下4个简单的汇编语言函数: OSStartHighRdy()、OSCtxSw()、 OSIntCtxSw()和OSTickISR()。
ቤተ መጻሕፍቲ ባይዱ
(1)OSStartHighRdy() OSStartHighRdy()函数用于启动当前就绪的优先级最 高的任务。 (2)OSCtxSw() OSCtxSw()用来进行任务间的切换。 (3)OSIntCtxSw() OSIntExit()通过调用OSIntCtxSw()来从ISR中执行切 换功能。 (4)OSTickISR() C/OS-Ⅱ要求用户提供一个时钟源来实现时钟节拍的 功能。时钟节拍推荐为每秒钟发生10~100次。
由用户定义的特定操作,如果没有特殊要求,则只需简单声明
这些函数,而不一定包含代码。只有当OS_CFG.h中的 OS_CPU_HOOKS_EN被置为1时才会产生这些函数代码。
高地址 增 长 方 向
低地址
PC LR R12 R11 ··· ··· R2 R1 R0 CPSR SPSR
初始化后堆栈的内容
C/OS-Ⅱ移植后的测试
要测试C/OS-Ⅱ移植是否成功,可以在 C/OS-Ⅱ操作系统中建立用户程序,通过观察 程序执行的结果来检测移植是否成功,以下给 出一个测试LED亮灭的程序来测试移植程序。
嵌入式系统设计与开发
在10—100Hz之间) • 处理器支持能够容纳一定量数据的硬件堆栈 • 处理器有将堆栈指针和其他CPU寄存器读出并存
储到堆栈或内存中的指令
移植步骤
C/OS-Ⅱ体系结构
移植工作包括以下几个内容:
❖ 用#define设置一个常量的值(OS_CPU.h文件中) ❖ 声明10个数据类型(OS_CPU.h文件中) ❖ 用#define声明3个宏(OS_CPU.h文件中) ❖ 用C语言编写6个简单的函数(OS_CPU_C.c文件
嵌入式系统设计与开发
C/OS-Ⅱ在ARM上的移植
所谓移植,是指使一个实时内核能在某个微处 理器或微控制器上运行。COS-II的主要代码 都是由标准的C语言写成的,移植方便。 在移植前针对所使用的微处理器进行规划,主 要有以下几个方面的考虑:编译器的选择、任 务模式的选择和支持的指令集。
要使C/OS-Ⅱ正常运行,处理器必须满足以下 要求: • 处理器的C编译器能产生可重入代码 • 用C语言就可以打开或关闭中断 • 处理器支持中断,并且能产生定时中断(通常
4.OS_CPU_C.c文件 C/OS-Ⅱ的移植实例要求用户编写以上6个简 单的C函数。OSTaskStkInit()、 OSTaskCreateHook()、OSTaskDelHook()、 OSTaskSwHook()、OSTaskStatHook和 OSTimeTickHook()。
OSTaskStkInt()的功能: (1)任务堆栈初始化 OSTaskCreate()和OSTaskCreateExt()通过调用 OSTaskStkInt()来初始化任务的堆栈结构。 (2)系统hook函数 在这个文件里还需要实现几个操作系统规定的hook函数:如 OSTaskCreateHook()、OSTaskDelHook()、 OSTaskSwHook()、OSTaskStatHook()和 OSTimeTickHook()。 这些函数为用户定义函数,它将在相应的操作系统调用后执行
相关文档
最新文档