uCOS-II在STM32上的移植

uCOS-II在STM32上的移植

ID:36606465

大小:899.10 KB

页数:32页

时间:2019-05-09

uCOS-II在STM32上的移植_第1页
uCOS-II在STM32上的移植_第2页
uCOS-II在STM32上的移植_第3页
uCOS-II在STM32上的移植_第4页
uCOS-II在STM32上的移植_第5页
资源描述:

《uCOS-II在STM32上的移植》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、µC/OS-II的移植8/17/20101*7.1概述User目录Main.CMain.HIncludes.HOS_Cfg.HµC/OS-IISource目录OS_CORE.COS_FLAG.COS_MBOX.COS_MEM.COS_MUTEX.COS_Q.COS_SEM.COS_TASK.COS_TIME.COS_TMR.CuCOS_II.HµC/OS-IIPorts目录CortexM3OS_CPU_C.COS_CPU_A.ASMOS_CPU.HBSP(板级支持包)Startup.STarget.CT

2、arget.HARMCortex-M3目标板与处理器无关操作系统内核代码与处理器有关需要移植代码开发板相关代码8/17/20102*内核文件移植的部分用户代码板级代码主程序8/17/20103*ARMCortex-M3的寄存器模型LM3S系列单片机采用ARMCortex-M3内核;在移植之前,先简述可见寄存器模型。ARMCortex-M3总共有20个寄存器,每个都是32位宽度。R0-R12通用寄存器,可存储数据也可存放指针R13用于存放堆栈指针。实际上有两个堆栈指针SP_process(进程堆栈)和SP

3、_main(主堆栈),但任何时候只有一个是可见的。在本移植中,SP_process用于任务代码(即线程模式),SP_main用于异常代码(即处理模式)。R14连接寄存器LR。在执行分支链接指令(BL)或带交换的分支链接指令(BLX)时,存储来自PC的返回地址;也用作异常的返回。R15程序计数寄存器PC。用于指示当前正被执行的指令。根据不同的指令,每执行一条,PC增加2或增加4。8/17/20104*8/17/20105*状态中断8/17/20106*控制寄存器8/17/20107*7.1.1移植条件移植

4、µC/OS-II到处理器上必须满足以下条件(1)处理器的C编译器能产生可重入代码µC/OS是多任务内核,函数可能会被多个任务调用,代码的重入性是保证完成多任务的基础。可重入代码指的是可被多个体任务同时调用,而不会破坏数据的一段代码,或者说代码具有在执行过程中打断后再次被调用的能力。举例说明:Swap1函数代码:Inttemp;voidswap1(int*x,int*y){temp=*x;*x=*y;*y=temp;}举例说明:Swap2函数代码:voidswap2(int*x,int*y){inttem

5、p;temp=*x;*x=*y;*y=temp;}可重入不可重入编译器还得支持,MDK开发环境,可生成可重入代码8/17/20108*(2)用C语言可打开和关闭中断ARM处理器核包含一个CPSR寄存器,该寄存器包括一个全局的中断禁止位,控制它便可打开和关闭中断。PRIMASK(3)处理器支持中断并且能产生定时中断µC/OS-II通过处理器产生的定时器中断来实现多任务之间的调度。ARMCortex-M3的处理器都支持中断并能产生定时器中断,专门有一个SysTick定时器来实现。(4)处理器支持能够容纳一定

6、量数据的硬件堆栈(通常需要几十KByte字节)比如AT98C51处理器,内部只有128字节的RAM,要运行,需外扩RAM。CM3的芯片,内部可多达128KByte的容量,因此可直接使用。(5)处理器有将堆栈指针和其他CPU寄存器读出和存储到堆栈(或内存)的指令µC/OS-II进行任务调度时,会把当前任务的CPU寄存器存到此任务的堆栈中,然后,再从另一个任务的堆栈中恢复原来的工作寄存器,继续运行另一个任务。所以,寄存器的入栈和出栈是µC/OS-II多任务调度的基础。运行TCP、UDP需要的内存会更大,通常

7、要100K左右8/17/20109*7.1.2移植步骤所谓移植,就是使一个实时操作系统能够在某个微处理器平台上或微控制器平台上运行。由µC/OS-II的文件系统可知,在移植过程中,用户需要关注的就是与处理器相关的代码。这部分包括一个头文件OS_CPU.H、一个汇编文件OS_CPU_A.ASM和一个C代码文件OS_CPU_C.C。OS_CPU.HOS_CPU_C.COS_CPU_A.ASM#define设置一个常量的值声明10个数据类型用#define声明三个宏用C语言编写六个简单的函数编写四个汇编语言函

8、数移植实际中,写一个就行8/17/201010*1、INCLUDES.HINCLUDES.H是一个头文件,它在所有.C文件的第一行被包含。#include"includes.h"INCLUDES.H使得用户项目中的每个.C文件不用分别去考虑它实际上需要哪些头文件。使用INCLUDES.H的唯一缺点是它可能会包含一些实际不相关的头文件。这意味着每个文件的编译时间可能会增加。但由于它增强了代码的可移植性,所以我们还是决定使用这一方法。用户可以通

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。