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的速度、时钟频率及终端控制寄
存器。???请问我的理解对吗 展开
2个回答
展开全部
上面的指令已经存放在rom比如flash0x0处,产生中断是就自动去0x0处开始取中断向量,也就是
ldr pc, _undefined_instruction
等指令
ldr pc, _undefined_instruction
等指令
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询