1、回顾ARM启动流程就可知道需要执行代码搬移
2、代码搬移
1)起点:NAND FLASH,今天的起点是SRAM垫脚石。为什么?因为我们要从nandflash取搬移数据需要先对其进行初始化,二而我们并没有初始化;垫脚石SRAM起始地址:2440为0,6410为0x0c000000,210为0xd0020000;那么我们就从对应的地址去搬移代码。
2)终点:
链接地址:可以通过反汇编来查看,arm-linux-objdump -D -S gboot.elf >dump.
在一段c程序代码中,通过调用子函数,那么会使子函数的链接地址赋值给pc指针,在一段汇编代码中,使用ldr pc,=reset,使标号reset处的汇编赋值给pc指针。
相对跳转和绝对跳转
绝对跳转:是直接去修改pc指针。
相对跳转:使用b或者bl这种指令产生的就是相对跳转,并不是直接去修改pc指针,而是去修改相对标号之间的差值。
在.lds脚本文件中的链接起始地址为0x50008000,那么我们的第一行代码就会出现在0x50008000地址,然后往后排布程序。那么链接起始地址就作为我们的终点。
3)搬移方式
上一篇:Part2_lesson1---arm家族大检阅
下一篇:Part10-C语言环境初始化-栈初始化lesson1
设计资源 培训 开发板 精华推荐
- 【泰有聊】系列技术文章连载1:示波器“芯”升级,聊一聊TEK061/041 ASIC创新平台
- Vicor白皮书下载——双向电源:“安静”改变世界的驱动力
- TI电机驱动课程重磅来袭,评论赢奖!
- 有奖直播已结束【如何利用 TI MSPM0 汽车微控制器提高检测和控制性能】
- Littelfuse 高效 • 可靠 • 精准的功率控制和电路保护方案在工业、交通、通讯、医疗及新能源中的应用
- 12月6日上午10:00有奖直播:如何使用Microchip安全方案为IoT设备保驾护航
- 悦读 TI DEYISUPPORT 中国工程师精彩博文,答题赢好礼喽!
- 【TI 培训】年度盘点:2019 TI 培训课程集锦,好评有礼!