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)搬移方式

最新文章

  1. 简单动态规划-LeetCode198
  2. spring mvc 和spring security配置 web.xml设置
  3. 【android design】android常用设计资源
  4. windows下使用pthreads
  5. Ejb: remote调用
  6. 【Python学习笔记】字典操作
  7. hdu 1402 A * B Problem Plus FFT
  8. dedecms(织梦)自定义表单后台显示不全 自定义模型当中添加自定义字段后在后台添加内容后不显示解决方案
  9. android 布局页面文件出错故障排除Exception raised during rendering: java.lang.System.arraycopy([CI[CII)V
  10. mongodb学习(一)
  11. 在IIS上部署你的ASP.NET Core项目
  12. java 集合框架(十六)Map
  13. Hive 配置
  14. 第七周博客作业<西北师范大学|李晓婷>
  15. spring中aop事务
  16. scss 使用
  17. Codechef Sad Pairs——圆方树+虚树+树上差分
  18. mysqldump --master-data=2 --single-transaction
  19. pycharm安装提示 module 'pip' has no attribute 'main'
  20. velocity入门

热门文章

  1. 转载.Avalon-MM 阿窝龙妹妹应用笔记
  2. Spring Aware接口---BeanNameAware BeanFactoryAware ApplicationContextAware
  3. 解决genymotion-arm-translation.zip无法拖拽安装的问题[转]
  4. Des加解密(Java端和Js端配套)解析
  5. idea操作
  6. python基础篇之进阶
  7. 嵌入式媒体处理(EMP)中的编码和解码
  8. 【转】Jmeter:图形界面压力测试工具
  9. 杂项-公司:联邦快递百科-un
  10. PHP判断文件是否被引入的方法get_included_files