电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

(有图)uboot源码分析VIP免费

(有图)uboot源码分析_第1页
1/12
(有图)uboot源码分析_第2页
2/12
(有图)uboot源码分析_第3页
3/12
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.o 当中。因此首先要分析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_SKIP_LOWLEVEL_INIT bl cpu_init_crit /* we do sys-critical inits */ #endif #ifndef CONFIG_SKIP_RELOCATE_UBOOT relocate: ...... 一般不要定义CONFIG_SKIP_LOWLEVEL_INIT,因此,接下来跳转到cpu_init_crit 处开始执行: cpu_init_crit: /* 屏蔽所有中断 */ /* 设置时钟源,关闭除FFUART,SRAM,SDRAM,FLASH 以外的外设时钟 */ ...... #ifdef CFG_CPUSPEED ldr r0, CC_BASE /* 时钟控制寄存器基址 */ ldr r1, cpuspeed /* cpuspeed: .word CFG_CPUSPEED */ str r1, [r0, #CCCR] mov r0, #2 mcr p14, 0, r0, c6, c0, 0 setspeed_done: #endif /* CFG_CPUSPEED */ /* 跳转到lowlevel_init,这里ip 即r12,用作暂存寄存器 */ mov ip, lr bl lowlevel_init mov lr, ip /* Memory interfaces are working. Disable MMU and enable I-cache. */ ldr r0, =0x2001 ......

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

(有图)uboot源码分析

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部