Uboot启动流程
Uboot启动流程
开发板上电后,执行 开发板上电后,执行 开发板上电后,执行 U-BootBootBootBoot的第一条指令,然后顺序执行 的第一条指令,然后顺序执行 的第一条指令,然后顺序执行 U-BootBootBootBoot启动函数。 看一下 board/smdboard/smdboard/smdboard/smdboard/smdboard/smdboard/smdboard/smdboard/smdk2410/uk2410/uk2410/uk2410/uk2410/uk2410/uk2410/u-boot.ldsboot.ldsboot.ldsboot.ldsboot.ldsboot.ldsboot.ldsboot.lds这个链接脚本,可以知道目标程序的各 这个链接脚本,可以知道目标程序的各 这个链接脚本,可以知道目标程序的各 部分链接顺序。第一个要的是 部分链接顺序。第一个要的是 cpu/arm920t/start.ocpu/arm920t/start.ocpu/arm920t/start.ocpu/arm920t/start.ocpu/arm920t/start.ocpu/arm920t/start.ocpu/arm920t/start.ocpu/arm920t/start.ocpu/arm920t/start.ocpu/arm920t/start.ocpu/arm920t/start.ocpu/arm920t/start.ocpu/arm920t/start.ocpu/arm920t/start.ocpu/arm920t/start.ocpu/arm920t/start.ocpu/arm920t/start.ocpu/arm920t/start.ocpu/arm920t/start.o,那么 U-BootBootBootBoot的入 口指令一定位于这个程序中。下面分两阶段介绍启动流: 口指令一定位于这个程序中。下面分两阶段介绍启动流: 口指令一定位于这个程序中。下面分两阶段介绍启动流: 口指令一定位于这个程序中。下面分两阶段介绍启动流: 口指令一定位于这个程序中。下面分两阶段介绍启动流: 口指令一定位于这个程序中。下面分两阶段介绍启动流:
第一阶段
1.cpu/arm920t/start.Scpu/arm920t/start.Scpu/arm920t/start.Scpu/arm920t/start.Scpu/arm920t/start.Scpu/arm920t/start.Scpu/arm920t/start.Scpu/arm920t/start.Scpu/arm920t/start.Scpu/arm920t/start.Scpu/arm920t/start.Scpu/arm920t/start.Scpu/arm920t/start.Scpu/arm920t/start.Scpu/arm920t/start.Scpu/arm920t/start.Scpu/arm920t/start.Scpu/arm920t/start.Scpu/arm920t/start.S
这个汇编程序是 这个汇编程序是 这个汇编程序是 这个汇编程序是 这个汇编程序是 U-BootBootBootBoot的入口程序,开头就是复位向量代码。 的入口程序,开头就是复位向量代码。 的入口程序,开头就是复位向量代码。
_start: b _start: b _start: b _start: b _start: b _start: b _start: b _start: b _start: b _start: b _start: b _start: b _start: b reset //reset //reset //reset //reset //reset //reset //reset //reset //reset //reset //reset //reset //reset //reset //复位向量 复位向量 复位向量
ldr pc, _undefined_instructionldr pc, _undefined_instructionldr pc, _undefined_instructionldr pc, _undefined_instructionldr pc, _undefined_instructionldr pc, _undefined_instructionldr pc, _undefined_instructionldr pc, _undefined_instructionldr pc, _undefined_instructionldr pc, _undefined_instructionldr pc, _undefined_instructionldr pc, _undefined_instructionldr pc, _undefined_instructionldr pc, _undefined_instructionldr pc, _undefined_instructionldr pc, _undefined_instructionldr pc, _undefined_instructionldr pc, _undefined_instructionldr pc, _undefined_instructionldr pc, _undefined_instructionldr pc, _undefined_instructionldr pc, _undefined_instructionldr pc, _undefined_instructionldr pc, _undefined_instructionldr pc, _undefined_instructionldr pc, _undefined_instructionldr pc, _undefined_instructionldr pc, _undefined_instructionldr pc, _undefined_instructionldr pc, _undefined_instructionldr pc, _undefined_instructionldr pc, _undefined_instruction
ldr pc, _software_interruptldr pc, _software_interruptldr pc, _software_interruptldr pc, _software_interruptldr pc, _software_interruptldr pc, _software_interruptldr pc, _software_interruptldr pc, _software_interruptldr pc, _software_interruptldr pc, _software_interruptldr pc, _software_interruptldr pc, _software_interruptldr pc, _software_interruptldr pc, _software_interruptldr pc, _software_interruptldr pc, _software_interruptldr pc, _software_interruptldr pc, _software_interruptldr pc, _software_interruptldr pc, _software_interruptldr pc, _software_interruptldr pc, _software_interruptldr pc, _software_interruptldr pc, _software_interruptldr pc, _software_interruptldr pc, _software_interruptldr pc, _software_interruptldr pc, _software_interruptldr pc, _software_interrupt
ldr pc, _prefetch_abortldr pc, _prefetch_abortldr pc, _prefetch_abortldr pc, _prefetch_abortldr pc, _prefetch_abortldr pc, _prefetch_abortldr pc, _prefetch_abortldr pc, _prefetch_abortldr pc, _prefetch_abortldr pc, _prefetch_abortldr pc, _prefetch_abortldr pc, _prefetch_abortldr pc, _prefetch_abortldr pc, _prefetch_abortldr pc, _prefetch_abortldr pc, _prefetch_abortldr pc, _prefetch_abortldr pc, _prefetch_abortldr pc, _prefetch_abortldr pc, _prefetch_abortldr pc, _prefetch_abortldr pc, _prefetch_abortldr pc, _prefetch_abortldr pc, _prefetch_abortldr pc, _prefetch_abort
ldr pc, _data_abortldr pc, _data_abortldr pc, _data_abortldr pc, _data_abortldr pc, _data_abortldr pc, _data_abortldr pc, _data_abortldr pc, _data_abortldr pc, _data_abortldr pc, _data_abortldr pc, _data_abortldr pc, _data_abortldr pc, _data_abortldr pc, _data_abortldr pc, _data_abortldr pc, _data_abortldr pc, _data_abortldr pc, _data_abortldr pc, _data_abortldr pc, _data_abortldr pc, _data_abort
ldr pc, _not_usedldr pc, _not_usedldr pc, _not_usedldr pc, _not_usedldr pc, _not_usedldr pc, _not_usedldr pc, _not_usedldr pc, _not_usedldr pc, _not_usedldr pc, _not_usedldr pc, _not_usedldr pc, _not_usedldr pc, _not_usedldr pc, _not_usedldr pc, _not_usedldr pc, _not_usedldr pc, _not_usedldr pc, _not_usedldr pc, _not_used
ldr pc, _irq //ldr pc, _irq //ldr pc, _irq //ldr pc, _irq //ldr pc, _irq //ldr pc, _irq //ldr pc, _irq //ldr pc, _irq //ldr pc, _irq //ldr pc, _irq //ldr pc, _irq //ldr pc, _irq //ldr pc, _irq //ldr pc, _irq //ldr pc, _irq //ldr pc, _irq //ldr pc, _irq //ldr pc, _irq //ldr pc, _irq //ldr pc, _irq //ldr pc, _irq //ldr pc, _irq //中断向量
ldr pc, _fiq //ldr pc, _fiq //ldr pc, _fiq //ldr pc, _fiq //ldr pc, _fiq //ldr pc, _fiq //ldr pc, _fiq //ldr pc, _fiq //ldr pc, _fiq //ldr pc, _fiq //ldr pc, _fiq //ldr pc, _fiq //ldr pc, _fiq //ldr pc, _fiq //ldr pc, _fiq //ldr pc, _fiq //ldr pc, _fiq //ldr pc, _fiq //ldr pc, _fiq //ldr pc, _fiq //ldr pc, _fiq //ldr pc, _fiq //中断向量
…
/* the actual reset code *//* the actual reset code *//* the actual reset code *//* the actual reset code *//* the actual reset code *//* the actual reset code *//* the actual reset code *//* the actual reset code *//* the actual reset code *//* the actual reset code *//* the actual reset code *//* the actual reset code *//* the actual reset code *//* the actual reset code *//* the actual reset code *//* the actual reset code *//* the actual reset code *//* the actual reset code *//* the actual reset code *//* the actual reset code *//* the actual reset code *//* the actual reset code *//* the actual reset code *//* the actual reset code *//* the actual reset code *//* the actual reset code *//* the actual reset code *//* the actual reset code */
reset: //