U-BOOT执行过程的问题 20

(1)定义入口。由于一个可执行的Image必须有一个入口点,并且只能有一个全局入口,通常这个入口放在ROM(Flash)的0x0地址,因此,必须通知编译器以使其知道这个入... (1) 定义入口。由于一个可执行的Image必须有一个入口点,并且只能有一个全局入口,通常这个入

口放在ROM(Flash)的0x0地址,因此,必须通知编译器以使其知道这个入口,该工作可通过修改连接器

脚本来完成。
(2) 设置异常向量(Exception Vector)。
(3) 设置CPU的速度、时钟频率及终端控制寄存器。
上面是U-BOOT的顺序要执行的

.globl _start //u-boot启动入口
_start: b reset //复位向量并且跳转到reset
ldr pc, _undefined_instruction
ldr pc, _software_interrupt
ldr pc, _prefetch_abort
ldr pc, _data_abort
ldr pc, _not_used
ldr pc, _irq //中断向量
ldr pc, _fiq //中断向量
b sleep_setting //跳转到sleep_setting
系统上电或reset后,cpu的PC一般都指向0x0地址,在0x0地址上的指令是
reset: //复位启动子程序
/******** 设置CPU为SVC32模式***********/
mrs r0,cpsr //将CPSR状态寄存器读取
我就有点不懂了,在程序.globl _start 应该是(1) 定义入口
然后他就接下来的命令是_start: b reset 进入入口后就马上执行了b reset命令,而标签为

reset处事用来设置CPU模式,好进行CPU的设置的,那不就是跳过了(2) 设置异常向量

(Exception Vector)。而从(1) 定义入口直接进入了(3) 设置CPU的速度、时钟频率及终端控制寄

存器。???请问我的理解对吗
展开
 我来答
duzhig_beijing
2011-04-10
知道答主
回答量:2
采纳率:0%
帮助的人:0
展开全部
上面的指令已经存放在rom比如flash0x0处,产生中断是就自动去0x0处开始取中断向量,也就是
ldr pc, _undefined_instruction
等指令
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
jiaguoxinzhi
2011-04-07
知道答主
回答量:21
采纳率:0%
帮助的人:6.7万
展开全部
跳过。没玩过类似代码,但看着怪怪,不知是什么汇编器的代码。

然后问下,你是在做USB-boot的启动文件吗?
做boot是0x7c00起点。

globl _start 用于Linux程式入口
..start 用于Windows OBJ EXE 入口
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式