
u-boot
csu_小王子
这个作者很懒,什么都没留下…
展开
-
结合U-boot源码中的重定位reloccate分析ARM汇编指令中ldr和adr指令区别
1、这两条指令经常用标号作为操作数,如adr r0,label和ldr r0,label。adr指令是位置相关码,把基于pc相对偏移的地址值读取到寄存器r0中,因此寄存器r0=标号label与该指令的距离差+该指令当前实际运行的地址,ldr指令中把label当成一个指针,把指针所指向的值读入到r0中。举例:U-boot中有一段重定位代码,意在将Nor或者Nand中启动的代码拷贝到SDRAM中去原创 2014-11-25 14:56:28 · 555 阅读 · 0 评论 -
u-boot启动流程,启动内核的关键点do_bootm分析
在讲加载地址和入口地址之前先简单说下u-boot的启动过程。执行make可以找到链接脚本,位于board/$(BOARDNAME)/U-boot.lds,从连接脚本中知道第一个源文件为cpu\arm920t\start.s中,从start.s开顺藤摸瓜了解u-boot的启动过程,其主要分为两个阶段,start.s为第一个阶段,主要进行的工作有:关闭看门狗,屏蔽中断,设置时钟,初始化cpu,初始化堆原创 2014-11-26 22:18:18 · 724 阅读 · 1 评论 -
arm汇编指令ldr用法总结
一、ldr的两种用法: 1、 ldr pc, =label . 即把label后的数据或者指令的运行地址赋值为pc。运行地址 = 链接地址 + 这些数据或指令相对于程序起始地址的偏移。 2、 ldr pc, label, 即把label后的数据或者指令内容赋值给pc。二、以u-boot中lowlevel_init函数的一段代码说明ldr指令的用法。原创 2016-01-02 12:03:20 · 24413 阅读 · 2 评论