u-boot 启动过程 (基于s3c2410) 和uimage zimage 启动分析

u-boot 启动过程 (基于s3c2410) 和uimage zimage 启动分析

ID:14681953

大小:148.50 KB

页数:36页

时间:2018-07-29

u-boot 启动过程 (基于s3c2410) 和uimage zimage 启动分析_第1页
u-boot 启动过程 (基于s3c2410) 和uimage zimage 启动分析_第2页
u-boot 启动过程 (基于s3c2410) 和uimage zimage 启动分析_第3页
u-boot 启动过程 (基于s3c2410) 和uimage zimage 启动分析_第4页
u-boot 启动过程 (基于s3c2410) 和uimage zimage 启动分析_第5页
资源描述:

《u-boot 启动过程 (基于s3c2410) 和uimage zimage 启动分析》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、本文以流行的Samsung公司的S3C2410,openmoko平台和u-boot-1.3.2(2008.5发布)为例,介绍如何在ZIX嵌入式开发环境下探索u-boot启动过程。虽然u-boot已经广泛应用,由于其相对的复杂性使用户在了解其内部机理和进行u-boot的移植工作时还是会碰到困难。u-boot已有一些分析文档,但多数和真正的代码不能同步或者版本老旧,难以将概念和现实的代码匹配——即硬件板上跑的代码在文档资料中却看不到,更无法紧密的跟踪。本文涉及的代码基于在s3c2410硬件运行的成熟u-boo

2、t-1.3.2代码,版本较新,提供的特性非常丰富,而且在forum.linuxbj.com可以自由浏览和下载。此u-boot代表了业界的较高水平,可以直接构建新版的嵌入式产品设计,有较高的应用价值。u-boot总的启动流程如下->reset->设置CPU模式->关闭看门狗/中断->设置处理器时钟/片上总线->初始化调试串口->MMU/外部总线/SDRAM等初始化->rom代码/数据搬移到ram->初始化函数调用栈->初始化外围设备/参数->启动完毕,进入main_loop循环嵌入式系统离不开bootloa

3、der初始化硬件以及引导操作系统。现在,专用的嵌入式板子运行嵌入式Linux系统已经变得非常流行,u-boot是一种非常适合此类系统的bootloader。u-boot主要提供以下功能:设置目标板硬件参数并初始化;为操作系统传递必要信息;执行交互式的底层操作;智能化装载操作系统;引导和运行的固件程序;支持大容量存储和USB接口利用ZIX开发环境,能够通过比较直观的方式观察u-boot内部,而且可以将代码调试和分析同时进行,是一种了解、移植u-boot的强大工具。使用arm工具链编译u-boot源代码,得到

4、可以烧录的u-boot.bin文件。在ZIX开发环境里,可以将u-boot.bin载入s3c2410板运行,并利用gdb调试。gdb能通过JTAG接口访问硬件,也可以通过TCP/IP访问虚拟硬件。建立好调试连接,即可通过gdb操纵u-boot启动过程,下面可以跟随代码的执行顺序,了解从上点开始,究竟哪些操作被执行。s3c2410复位之后,pc指针会指向0x0地址。在u-boot代码中,该0x0地址是一个向量表,第一条指令跳转branch到复位代码start_code。位于cpu/arm920t/start

5、.S汇编语言文件第53行:.globl_start  _start:  bstart_code    ldrpc,_undefined_instruction  ldrpc,_software_interrupt  ldrpc,_prefetch_abort  ldrpc,_data_abort  ldrpc,_not_used  ldrpc,_irq  ldrpc,_fiq复位指令跳转之后来到第154行,开始执行arm920t处理器的基本初始化。首先修改当前程序状态寄存器CPSR,使处理器进入Super

6、visor

7、32bitARM模式,并关闭ARM9TDMI中断和快速中断,这是通过设置CPSR相应掩码实现的:start_code:  /*    *setthecputoSVC32mode    */    mrsr0,cpsr  bicr0,r0,#0x1f  orrr0,r0,#0xd3  msrcpsr,r0  紧接着,将S3C2410特有的WTCON寄存器清零,此举仅为关闭看门狗,代码位置是234行:  ldrr0,=pWTCON  movr1,#0x0  strr1,[r0]然后在241行,将S

8、3C2410中断控制器INTMSK寄存器置为全1,INTSUBMSK置为0x7ff,禁止全部中断源。S3C2410手册358页起对此有详细描述:  movr1,#0xffffffff    ldrr0,=INTMSK  strr1,[r0]  #ifdefined(CONFIG_S3C2410)

9、

10、defined(CONFIG_S3C2440)

11、

12、defined(CONFIG_S3C2442)

13、

14、    defined(CONFIG_S3C2443)    ldrr1,=INTSUBMSK_val   

15、 ldrr0,=INTSUBMSK    strr1,[r0]  #endif  接下来在259行,访问arm920t控制寄存器CP15,并置位最高两位[31,30]。此两位置为0b11后,处理器时钟被设置为异步模式,允许处理器异步访问总线:  mrcp15,0,r1,c1,c0,0  orrr1,r1,#0xc0000000  mcrp15,0,r1,c1,c0,0至此arm920t相关的配置完成,后面开始设定S3C2410

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。