完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛|
请大神帮忙解答一下 为什么在OSStartHighRdy中MSP初始化的地址是OS_CPU_ExceptStkBase ;而PSP初始化地址是0?
OSStartHighRdy LDR R0, =NVIC_SYSPRI14 ; Set the PendSV exception priority LDR R1, =NVIC_PENDSV_PRI STRB R1, [R0] MOVS R0, #0 ; Set the PSP to 0 for initial context switch call MSR PSP, R0 LDR R0, =OS_CPU_ExceptStkBase ; Initialize the MSP to the OS_CPU_ExceptStkBase LDR R1, [R0] MSR MSP, R1 LDR R0, =OSRunning ; OSRunning = TRUE MOVS R1, #1 STRB R1, [R0] LDR R0, =NVIC_INT_CTRL ; Trigger the PendSV exception (causes context switch) LDR R1, =NVIC_PENDSVSET STR R1, [R0] CPSIE I ; Enable interrupts at processor level OSStartHang B OSStartHang |
|
相关推荐
3个回答
|
|
|
MSP 可以不用初始化.系统硬件自动搞定了.
PSP 初始化为0,是用来区别,是不是第一次切换任务, 因为第一次切换任务,无上一次任务来保存.不然,要保存上一个任务到栈. PendSV_Handler CPSID I ; Prevent interruption during context switch MRS R0, PSP ; PSP is process stack pointer CBZ R0, OS_CPU_PendSVHandler_nosave ; Skip register save the first time 这里会判断 PSP 是不是0,是0直接跳到OS_CPU_PendSVHandler_nosave 执行. ;保存一下现场 SUBS R0, R0, #0x20 ; Save remaining regs r4-11 on process stack STM R0, {R4-R11} LDR R1, =OSTCBCur ; OSTCBCur->OSTCBStkPtr = SP; LDR R1, [R1] STR R0, [R1] ; R0 is SP of process being switched out OS_CPU_PendSVHandler_nosave LDR R0, =OSTCBCur ; OSTCBCur = OSTCBHighRdy; LDR R1, =OSTCBHighRdy LDR R2, [R1] STR R2, [R0] LDR R0, [R2] ; R0 is new process SP; SP = OSTCBHighRdy->OSTCBStkPtr; LDM R0, {R4-R11} ; Restore r4-11 from new process stack ADDS R0, R0, #0x20 MSR PSP, R0 ; Load PSP with new process SP ORR LR, LR, #0x04 ; Ensure exception return uses process stack CPSIE I BX LR ; Exception return will restore remaining context ALIGN END |
|
|
|
|
|
MSP 用于系统栈(中断入栈..) ,PSP用于线程栈(函数调用..)
|
|
|
|
|
|
谢谢耐心解答
|
|
|
|
|
只有小组成员才能发言,加入小组>>
1015 浏览 1 评论
1845 浏览 0 评论
1828 浏览 1 评论
3253 浏览 5 评论
3578 浏览 9 评论
1016浏览 1评论
1847浏览 1评论
如何知道嵌入式电子控制单元 (ECU) 中的RAM使用情况?
1357浏览 1评论
1848浏览 0评论
1174浏览 0评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-1 10:49 , Processed in 0.661656 second(s), Total 78, Slave 58 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
1165