bootloader相关

 

满空堆栈方式说明堆栈指针指向了上一次进入的数据还是空地址
自下而上的生长方式 说明数据先放的低地址 反之说明数据先放的高地址
启动代码宏定义,以下相关说明(未整理)

MACRO       
$HandlerLabel HANDLER $HandleLabel    ;宏定义,请仔细理解
$HandlerLabel                                                         ;由于ADS仅支持FD(满递减)型
    sub      sp,sp,#4                             ;将堆栈退一个字用于保存下面用到的R0
    stmfd   sp!,{r0}                               ;将R0压入堆栈
    ldr       r0,=$HandleLabel               ;将HandleLabel的地址赋给R0
    ldr       r0,[r0]                                 ;将HandleLabel的地址指向的内容                                

                        ;(实际的执行地址)赋给R0

    str        r0,[sp,#4]                           ;将对应的中断函数首地址入栈保护

    ldmfd   sp!,{r0,pc}                             

                                      ;将中断函数的首地址出栈,放入PC中,系统将跳转到对应中断处理函数 

    MEND

HANDLER 是宏名。$HandlerLabel 是宏展开后要被别的字符替换掉的标号,不过不叫参数。

例如:HandlerFIQ    HANDLER HandleFIQ
       展开后为:
       HandlerFIQ
       sub        sp,sp,#4      
       stmfd   sp!,{r0}       
       ldr        r0,=HandleFIQ
       ldr        r0,[r0]       
       str        r0,[sp,#4]
       ldmfd   sp!,{r0,pc}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值