EDA365电子论坛网
标题:
OS_CPU_S.s 文件中有如下一段代码,其中有两句代码的作用不是很明白,请解说一下.
[打印本页]
作者:
Dollche
时间:
2023-1-5 10:24
标题:
OS_CPU_S.s 文件中有如下一段代码,其中有两句代码的作用不是很明白,请解说一下.
在 OS_CPU_S.s 文件中有如下一段代码,其中有两句代码的作用不是很明白,请解说一下. OSIntCtxSw_1
, C8 a4 \1 s5 l
LDR R4, [R6] ;获取新任务堆栈指针
, G" Y+ C5 J- @- `
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
" \: h, F6 v, b1 J# U
;这两行代码有何作用呢
7 p. z9 P% H) F% H
ADD SP, R4, #68 ;17 寄存器 CPSR,OsEnterSum,R0-R12,LR,SP
" J! D1 h/ C n
LDR LR, [SP, #-8]
8 T: n6 y3 ^! m6 l+ @/ H# j8 F
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
~1 h. c+ j- h% t( d" s( w. b
MSR CPSR_c, #(NoInt | SVC32Mode) ;进入管理模式
2 A _9 `- c. W# i% q @) T3 q
MOV SP, R4 ;设置堆栈指针
% o/ ^; b! y: B: }$ ?' f6 n3 ~
LDMFD SP!,{R4, R5} ;CPSR,OsEnterSum
, Y2 l8 @% e+ n% B
;恢复新任务的 OsEnterSum
# }" V! s# {2 _, }! z
LDR R3, =OsEnterSum
; T5 l' v3 d7 n. Q& }
STR R4, [R3]
2 F' ^; A; P( K2 n$ v
MSR SPSR_cxsf, R5 ;恢复 CPSR
}& s! }. F* A7 W1 F7 ~- f+ Q
LDMFD SP!, {R0-R12, LR, PC }^ ;运行新任务
O C6 R8 Z( D" k
/ S/ O9 ^, `$ ]3 O" g! R
作者:
Terran
时间:
2023-1-5 10:59
这两条指令是在系统模式下恢复用户模式下的 LR;
5 d! z1 R; D4 ^( t8 R2 @/ Y
可以看一看《ARM 微控制器基础与实战》6.4.9 节,就明白了。
作者:
niubility
时间:
2023-1-5 13:29
移植UCOS最主要的就是Os_cpu_a.s和Os_cpu_c.c
欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/)
Powered by Discuz! X3.2