位置无关码 bl 是位置无关码,指令中带的数值是,编译的时候,编译器计算好的,需要跳转的位置减去 bl 指令所在位置的结果.这样当程序最开始在 4k sram 中运行的时候,跳转的位置是在 0 + offset 的位置,当后期sdram 初始化好了之后,程序移动到 sdram 中运行的时候,跳转的位置是 0x30000000 + offset 的位置. ldr 是位置相关码,指令中的位置是编译好的绝对位置,如果 sdram 中还没有初始化好,跳转的位置是 0x30000000地址以上的值,那就出