首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 单片机 >

关于UCOS在ARM上移植模式切换的疑问解决办法

2012-03-06 
关于UCOS在ARM上移植模式切换的疑问在UCOSII ARM7的移植中,有段代码不太理解,想请教大家!如下代码:OSIntCt

关于UCOS在ARM上移植模式切换的疑问
在UCOSII ARM7的移植中,有段代码不太理解,想请教大家!
如下代码:
OSIntCtxSw_1
  ;获取新任务堆栈指针
  LDR R4, [R6]
  ADD SP, R4, #68 ;17寄存器CPSR,OsEnterSum,R0-R12,LR,SP
  LDR LR, [SP, #-8]
  MSR CPSR_c, #(NoInt | SVC32Mode) ;进入管理模式
  MOV SP, R4 ;设置堆栈指针

  LDMFD SP!, {R4, R5} ;CPSR,OsEnterSum
  ;恢复新任务的OsEnterSum
  LDR R3, =OsEnterSum
  STR R4, [R3]
   
  MSR SPSR_cxsf, R5 ;恢复CPSR
  LDMFD SP!, {R0-R12, LR,PC }^ ;运行新任务
为什么在系统模式获取LR后,又进入到管理模式去给OsEnterSum 和SPSR_CXSF赋值,再恢复寄存器,运行新任务?
难道在系统模式下恢复这些东西不行么?



[解决办法]
某些早期的核可能没有SYS模式,于是就切到SVC
其实是一样的

热点排行