u-boot中几个主要文件及作用
来源:互联网 发布:电脑动画软件 编辑:程序博客网 时间:2024/06/07 05:36
http://bbs.sciencenet.cn/thread-1117042-1-1.html
http://hi.baidu.com/mrxzwang/item/8c8d017c6df5d93c6cc37cef
bootloader是嵌入式系统开发过程中不可逾越的一步,其作用就是初始化必要的硬件,建立完整的内存映射图,为后续操作系统的系统运行建立一个合适的软硬件环境。
u-boot是bootloader的一种,它能工作在多种体系结构上,比如ARM、X86、MIPS、PPC等,能够引导多种操作系统,包括常见的window、linux等,特别是在嵌入式中的广泛应用。
u-boot在ARM上引导linux内核的过程,首先需要关闭包括看门狗在内各种中断,使得在对板级初始化过程中不会受到外部的影响,通过配置PLL完成对系统时钟的初始化,通过配置BWSCON寄存器完成对SDRAM的初始化,然后通过对CPSR和SP的配合使用完成对堆栈的初始化。
U-Boot的启动代码分布在start.S、low_level_init.S、board.c和main.c文件中。
其中,start.S是U-Boot整个程序的入口,该文件使用汇编语言编写,不同体系结构的启动代码是不同的;
level_init.S是特定开发板的设置代码;
board.c包含开发板底层设备驱动;
main.c是一个与平台无关的代码,U-Boot应用程序的入口在此文件中。
第一阶段(stage 1)是依赖于CPU体系结构的代码(如设备初始化代码等),一般用汇编语言来实现。
主要进行以下方面的设置:
设置ARM进入SVC模式、禁止IRQ和FIQ、关闭看门狗、屏蔽所有中断。
协处理器清空I/D cache、清空TLB、禁止MMU和cache、配置内存控制器(BWS)、设置堆栈,设置时钟(FCLK,HCLK,PCLK)、为搬运代码做准备、搬移uboot映像到RAM中(C语言使用CopyCode2Ram ,或者使用copy_loop实现)、分配堆栈、清空bss段(使用clbss_l实现)。
第二阶段(stage 2)通常用C语言来实现。
start_armboot():
一系列初始化(cpu, 板卡,中断,串口,控制台等),开启I/D cache。初始化FLASH,根据系统配置执行其他初始化操作。
打印LOG,使能中断,获取环境变量,初始化网卡。最后进入main_loop()函数。在main_loop函数中会检查bootdelay和bootcmd环境变量,如果bootcmd已经设置过,则在等待bootdelay个毫秒后会自动执行bootcmd。如果等待过程中被用户中断(ctl+c)或者bootcmd没有设置,则会等待用户输入命令。
- u-boot中几个主要文件及作用
- 关于u-boot.map 文件的作用
- U-Boot的分析与移植之U-Boot的主要目录及结构
- U-Boot移植主要步骤
- U-Boot主要目录结构 .
- u-boot主要的数据结构
- u-boot主要数据结构-- bd
- u-boot makefile 中 .depend 文件生成
- 四极管:U-Boot主要目录结构
- Wince中几个工程文件的作用
- vxWorks BSP主要文件目录的组成及主要文件的作用
- u-boot中.lds连接脚本文件的分析
- u-boot中.lds链接脚本文件的分析
- u-boot中.lds链接脚本文件的分析
- u-boot中.lds连接脚本文件的分析
- u-boot中.lds链接脚本文件的分析
- u-boot中.lds连接脚本文件的分析
- u-boot中.lds链接脚本文件的分析
- TextView 空格换行
- Concave function
- Android中的Audio播放:竞争Audio之Audio Focus的应用
- Pl/sql 连接服务器oracle数据库配置.
- shared_ptr线程安全性
- u-boot中几个主要文件及作用
- Ubuntu下面安装GTK+
- linux中断控制之tasklet
- 设置 oracle 最大连接数
- CXTPReportControl清空列表
- Android学习笔记之判断checkbox是否选中
- GCD Extreme(II) UVA11426
- meta name="viewport"
- hdu 2056 Rectangles