×

UCOS-III OS_CPU_PendSVHandler源码分析

消耗积分:1 | 格式:docx | 大小:21KB | 2017-08-27

h1654155867.6530

分享资料个

UCOS-III OS_CPU_PendSVHandler源码分析

  OS_CPU_PendSVHandler

  CPSID I ; Prevent interruption during context switch

  ;关总中断

  MRS R0, PSP ; PSP is process stack pointer

  ;R0 = PSP PSP为程序堆栈指针

  CBZ R0, OS_CPU_PendSVHandler_nosave ; Skip register save the first time

  ;如果程序堆栈指针为0,说明程序是首次运行,可以直接跳转到OS_CPU_PendSVHandler_nosave,不保存R4-R11

  SUBS R0, R0, #0x20 ; Save remaining regs r4-11 on process stack

  ;M3进入中断时,会自动把R0~R3,R12,LR,PC,xPSR,入栈,M3的栈生长方向是从高地址向下生长,入栈后,栈指针指向R0的位置。接下来要保存R4~R11,8个32位寄存器,用的指令是STM,多个寄存器字连续保存到由R0给出的首地址中 ,并且在R0上,每存储一个后自增,所以,应该空出8个寄存器的位置,所有有SUBS R0, R0, #0x20,等价于R0 = R0 – 0X20,

  STM R0, {R4-R11}

  ;保存R4~R11,保存后,R0的值就是栈的指针SP
UCOS-III OS_CPU_PendSVHandler源码分析

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !