SMARTARM2200-ADS工程在IAR-EWARM-5.3上的移植(2)-uCOSII移植代码分析.doc

SMARTARM2200-ADS工程在IAR-EWARM-5.3上的移植(2)-uCOSII移植代码分析.doc

ID:57650375

大小:39.50 KB

页数:5页

时间:2020-08-30

SMARTARM2200-ADS工程在IAR-EWARM-5.3上的移植(2)-uCOSII移植代码分析.doc_第1页
SMARTARM2200-ADS工程在IAR-EWARM-5.3上的移植(2)-uCOSII移植代码分析.doc_第2页
SMARTARM2200-ADS工程在IAR-EWARM-5.3上的移植(2)-uCOSII移植代码分析.doc_第3页
SMARTARM2200-ADS工程在IAR-EWARM-5.3上的移植(2)-uCOSII移植代码分析.doc_第4页
SMARTARM2200-ADS工程在IAR-EWARM-5.3上的移植(2)-uCOSII移植代码分析.doc_第5页
资源描述:

《SMARTARM2200-ADS工程在IAR-EWARM-5.3上的移植(2)-uCOSII移植代码分析.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、uCOS移植代码主要位于工程路径下的/uCOS-II/Ports/ARM/Generic/IAR/os_cpu_a.asm(在uC-CPU下有个cpu_a.s,里面定义了OS_CPU_SR_Save和OS_CPU_SR_Restore,但实际上未用到,用到的是os_cpu_a.asmOS_CPU_SR_Save和OS_CPU_SR_Restore来进行开关中断)这里就os_cpu_a.asm里的主要几个函数进行简单分析.更加详细的内容可参考邵贝贝译的《嵌入式实时操作系统uCOS-II》(第二版) 1.开关中断;*******************************

2、*************************************************************************;                                 CRITICALSECTIONMETHOD3FUNCTIONS;;Description:Disable/Enableinterruptsbypreservingthestateofinterrupts. Generallyspeakingyou;             wouldstorethestateoftheinterruptdisableflagin

3、thelocalvariable'cpu_sr'andthen;             disableinterrupts. 'cpu_sr'isallocatedinallofuC/OS-II'sfunctionsthatneedto;             disableinterrupts. Youwouldrestoretheinterruptdisablestatebycopyingback'cpu_sr';             intotheCPU'sstatusregister.;;这是开关中断方式3的实现方式,先是保存CPSR值(最终保存到变量cp

4、u_sr),然后禁止中断,最后返回OS_CPU_SR_Save   MRS    R0,CPSR   ORR    R1,R0,#OS_CPU_ARM_CONTROL_INT_DIS                ;SetIRQandFIQbitsinCPSRtodisableallinterrupts.   MSR    CPSR_c,R1   BX      LR                                                 ;Disabled,returntheoriginalCPSRcontentsinR0.OS_CPU_SR_R

5、estore   MSR    CPSR_c,R0   BX       LR//在cpu.h中定义了开关中断的宏#define OS_CRITICAL_METHOD   3#if     OS_CRITICAL_METHOD==3//未定义OS_CPU_INT_DIS_MEAS_EN,OS_CPU_IntDisMeasStart()是用来中断计时的,未用到#if     OS_CPU_INT_DIS_MEAS_EN>0#define OS_ENTER_CRITICAL() {cpu_sr=OS_CPU_SR_Save(); /                      

6、        OS_CPU_IntDisMeasStart();}#define OS_EXIT_CRITICAL()  {OS_CPU_IntDisMeasStop();  /                              OS_CPU_SR_Restore(cpu_sr);}#else//实际用到的定义#define OS_ENTER_CRITICAL() {cpu_sr=OS_CPU_SR_Save();}#define OS_EXIT_CRITICAL()  {OS_CPU_SR_Restore(cpu_sr);}#endif#endif 2.然后就

7、是任务切换,运行最高优先级任务的例程,如OSStartHighRdy,OSCtxSw,OSIntCtxSw,以OSStartHighRdy为例,主要都是进行push/popstack,PC指针的切换. ;********************************************************************************************************;                                          STARTMULTITASKING

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

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

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