U-Boot启动过程(转) U-Boot Practically Porting Guide Author: Aaron Wong U-Boot的移植之(二)进阶篇:从源代码看系统启动过程 利用ZIX 开发环境,能够通过比较直观的方式观察u -boot 内部,而且可以将代码调试和分析同时进行,是一种了解、移植u -boot 的强大工具
使用arm 工具链编译 u -boot 源代码,得到可以烧录的u -boot
bin 文件
在 ZIX 开发环境里,可以将u -boot
bin 载入 s3c2410 板运行,并利用gdb 调试
gdb 能通过JTAG 接口访问硬件,也可以通过TCP/IP 访问虚拟硬件
建立好调试连接,即可通过gdb 操纵 u -boot启动过程,下面可以跟随代码的执行顺序,了解从上点开始,究竟哪些操作被执行
首先要找到程序入口点
从board/lubbock/u-boot
lds 可以发现,u-boot 的程序入口为_start,在 cpu/pxa/start
因此首先要分析start
S 程序,U-Boot 中所有的PXA 系列的处理器都从这里开始执行第一条语句
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 0x0 地址开始是ARM 异常向量表,学过ARM 体系结构与编程的都明白,非常简单,不多废话
一上电的第一条指令是跳转到 reset 复位处理程序: reset: /* 进入 SVC 模式 */ #ifndef CONFIG_