方圆移植uCOS-II_方圆.doc

方圆移植uCOS-II_方圆.doc

ID:36947911

大小:535.50 KB

页数:7页

时间:2019-04-30

方圆移植uCOS-II_方圆.doc_第1页
方圆移植uCOS-II_方圆.doc_第2页
方圆移植uCOS-II_方圆.doc_第3页
方圆移植uCOS-II_方圆.doc_第4页
方圆移植uCOS-II_方圆.doc_第5页
资源描述:

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

1、uC/OS-II与NE-STR750的适配简介所谓移植就是使实时操作系统的内核能够适配微处理器或微控制器。为了便于移植,uC/OS-II的绝大部分都使用C编写,但是在具体移植时仍然需要写一些与具体移植的处理器相关的C和汇编代码,特别是当uC/OS-II需要操作处理器的寄存器时,只能通过汇编语言进行操作。当处理器满足下列条件时,才能够被移植:1.处理器应有一个相应的C编译器为之编译生成可重入(可以被中断)的代码;2.应能使用C代码禁止和允许中断;3.处理器必须支持中断,用户需要提供一个在一般频率(10~100Hz)下的中断;4.处理器应有支持堆栈

2、的硬件,堆栈应能存储相当数量(KB)的数据;5.处理器应有加载(load)和存储(store)堆栈指针和其它CPU寄存器至堆栈或内存的指令。像Motorola6805系列的处理器就无法满足第4条和第5条要求,所以uC/OS-II就无法运行在这些处理器上了。如下图所示为移植代码、uC/OS-II、BSP(BoardSupportPackage板级支持包)和应用程序之间的关系。图1:uC/OS-II软硬件架构INCLUDES.H是一个主头文件,包含大多数其它文件都需要的头文件。OS_CPU.H定义了处理器和移植的实现所需常量、宏和类型的定义。可以看

3、出与ARM处理器和开发板有直接接触的是OS_CPU_C.C、OS_CPU_A.ASM、OS_CPU.H、OS_DBG.C和BSP.C、BSP.H文件。这些代码文件随具体的处理器或开发板而改变。其中OS_CPU.H以汇编语言描述了如何在ARM处理器下进行任务切换,包括中断后的任务切换。uC/OS-II是一个实时的操作系统。这里对移植的环境作出如下设定:1.uC/OS-II版本至少为V2.77;2.uC/OS-II可以在ARM模式或Thumb模式下运行;3.任务可以调用ARM模式或Thumb模式下的函数4.任务运行在SVC模式下(为什么不是SYS模

4、式呢?简而言之,SVC模式下可以SPSR以返回恰当的模式(ARM或Thumb));下面将就NE-STR750上的uC/OS-II如何进行任务切换、中断响应和提供板级支持进行讨论。任务切换,OSCtxSw()任务切换OSCtxSw()的过程如下:1.将处理器的寄存器状态压入任务堆栈中;2.切换当前任务块(OSTCBCur)为优先级最高的任务块(OSTCBHighRdy);3.从任务堆栈中弹出新任务块的处理器状态;具体来说,操作系统先将当前任务的处理器的寄存器状态(主要是各寄存器的值)压入堆栈之中。这里要注意的一个细节是,为了识别当前任务所处的处理

5、器模式(ARM模式或Thumb模式),在压入当前程序状态寄存器(CPSR)前,先检测当前处理器的模式,也就是R14_svc(LR)的最低位(1表示Thumb模式,0表示ARM模式),再设置CPSR的T控制位,最后才将CPSR压入任务堆栈中。保存完处理器的状态之后,将任务堆栈的栈顶指针存入当前任务块(*OSTCBCur)中,以供以后恢复之用。图2:保存当前处理器状态接着将当前任务块指针指向具有最高优先级的任务块(OSTCBHighRdy),依据任务块中保存的OSTCBStkPtr获得新任务的堆栈地址。然后就可以从任务堆栈中弹出处理器状态,进而执行

6、任务了。图1:恢复处理器状态当操作系统执行完中断时,会执行与OSCtxSw()的后半段——恢复处理器状态——相似的操作OS_IntCtxSw(),即切换到具有最高优先级的任务执行。中断响应,OS_CPU_IRQ_ISR()当操作系统正在执行某一任务时,ARM处理器处于SVC模式,此时若有异常响应(IRQ)产生,操作系统应调用适当的中断服务程序(OS_CPU_IRQ_ISR()),以保存当前任务和处理中断。程序的大概过程如下:1.将处理器中寄存器的内容压入任务的堆栈中;2.系统的全局中断嵌套变量增1;如果是第一层中断嵌套,将任务堆栈指针存入任务块

7、中;3.执行中断处理程序OS_CPU_IRQ_ISR_Handler();4.调用OSIntExit()查看是否有优先级更高的任务需要执行,若有,切换执行之;5.从任务堆栈中恢复中断前处理器的状态;图1:ARM异常向量地址具体来说,当处理器识别到异常响应(IRQ)时,会将PC+4存入R14_irq中,CPSR_svc存入SPSR_irq中,设置CPSR相关控制位以禁止IRQ中断,并切换IRQ模式。与此同时,,处理器会跳转至IRQ的入口地址0x18执行指令LDRPC,[PC,#offset],由于ARM体系结构采用了多级流水线技术,PC问题指向当

8、前指令的下两条指令的地址,即PC=0x20,借助于EIC,最后执行OS_CPU_IRQ_ISR()程序。图2:IRQ中断结构图1:ARM处理器响应IR

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

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

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