BootLoader执行跳转到App函数后跑飞

前言

        嵌入式开发中经常涉及到Bootloader,很多人经常遇到:将函数指针指向app的复位地址,然后执行函数,调试时可以跳转到App,一全速跑就跑飞。然后百度看到网传的地址+1大法,试试果然好使,这里我来细说为什么+1就好用了。


预备知识:

        1.ARM体系工作状态

        1). ARM态: 32未完整指令集,庞大而完善。

        2).Thumb态: 16位精简指令集,简短也够用

        ARM体系的CPU工作在如上两种状态,可根据需要自由切换。


        2.R15 PC指针。

        PC指针指向即将执行的指令地址。复位时,PC指针自动加载中断向量表中复位向量的值,在Cortex-M3中复位向量地址为0X00000004,从0X00000004拿到的值的最低位将被加载到EPSR T-bit中,而且最低位必须为1(冷知识:ARM的函数地址大多是4字节对齐,最低位用来表示指令状态,1为Thumb,0为ARM)。

你可能感兴趣的:(stm32,嵌入式硬件,单片机,汇编)