U-boot 二 Start.

ARM 37浏览

 链接文件完成后,跳转到stars.s文件开始执行

_start在arch/arm/cpu/armv7/start.S中

u-bootarcharmcpuarmv7

代码如下:
#include <asm-offsets.h>
#include <config.h>
#include <version.h>

.globl _start
_start: b 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
#ifdef CONFIG_SPL_BUILD
_undefined_instruction: .word _undefined_instruction
_software_interrupt: .word _software_interrupt
_prefetch_abort: .word _prefetch_abort
_data_abort: .word _data_abort
_not_used: .word _not_used
_irq: .word _irq
_fiq: .word _fiq
_pad: .word 0x12345678 /* now 16*4=64 */
#else
_undefined_instruction: .word undefined_instruction
_software_interrupt: .word software_interrupt
_prefetch_abort: .word prefetch_abort
_data_abort: .word data_abort
_not_used: .word not_used
_irq: .word irq
_fiq: .word fiq
_pad: .word 0x12345678 /* now 16*4=64 */
#endif /* CONFIG_SPL_BUILD */

.global _end_vect
_end_vect:

以上代码是设置arm的异常向量表,arm异常向量表如下

0x00000000   复位  复位电平有效时,产生复位异常,程序跳转到复位处理程序处执行

0x00000004   未定义指令 遇到不能处理的指令时,产生未定义指令异常

0x00000008   软件中断 执行SWI指令产生,用于用户模式下的程序调用特权操作指令

0x0000000c   预存指令 处理器预取指令的地址不存在,或该地址不允许当前指令访问,产生指令预取中止异常

0x00000010   数据操作  处理器数据访问指令的地址不存在,或该地址不允许当前指令访问时,产生数据中止异常

0x00000014   未使用

0x00000018   IRQ   外部中断请求有效,且CPSR中的I位为0时,产生IRQ异常

0x0000001c   FIQ    快速中断请求引脚有效,且CPSR中的F位为0时,产生FIQ异常