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的速度、时钟频率及终端控制寄
存器。???请问我的理解对吗 展开
口放在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的速度、时钟频率及终端控制寄
存器。???请问我的理解对吗 展开
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
您可能需要的服务
百度律临官方认证律师咨询
平均3分钟响应
|
问题解决率99%
|
24小时在线
立即免费咨询律师
12965人正在获得一对一解答
天津金色童年5分钟前提交了问题
南昌湖上倒影2分钟前提交了问题
南昌湖上倒影2分钟前提交了问题