Bootloader初识

          计算机系统从开机上电到操作系统启动需要一个引导过程,由BIOS来完成。同样,linux系统启动也离不开引导程序,负责引导的程序叫做Bootloader。Bootloader是小段程序,但是通过这段小程序,我们可以初始化硬件设备、建立内存空间的映射表,从而建立适当的系统软硬件环境,为最终调用操作系统内核做好准备。

          根据体系结构,Bootloader分很多种类,比如,X86平台的LILO和GRUB;ARM处理器的armboot,vivi,常用的标准的是U-Boot;M68K平台的Redboot。由于ARM处理器应用广,所以谈到Bootloader,一般会提及U-Boot,用得比较多。

        Bootloader的启动方式:网络,flash,sd卡等。重点谈论下flash,分为nand flash,nor flash。nand flash可读可写,一般容量较大,有点像硬盘,价格贵。nor flash不可写,是rom,比如常用的spi rom,容量可以较小,价格便宜。

        nor flash可以支持随机访问,所以代码是可以直接在Flash上执行的。nand flash以I/O 方式来访问(有专制的控制器),不能随机访问,因此引导方式跟NOR Flash也不同。通常,这种引导程序起始的一段代码就把整个引导程序复制到RAM 中运行。

       U-Boot是开源的,可以从网站上下载源代码。

 

      源码的目录结构:    

board    平台依赖  存放电路板相关的目录文件,每一套板子对应一个目录

cpu         平台依赖    放CPU相关的目录文件,每一款CPU对应一个目录,例如:arm920t、 xscale、i386等目录CPU相关文件,其中的子目录都是以u-boot所支持的CPU为名,比如有子目录arm926ejs、mips、mpc8260和nios等,每个特定的子目录中都包括cpu.c和interrupt.c和start.S。其中cpu.c初始化cpu、设置指令cache和数据cache等;interrupt.c设置系统的各种终端和异常,比如快速中断,开关中断、时钟中断、软件中断、预取中止和未定义指令等;start.S是u-boot启动时执行的第一个文件,它主要是设置系统堆栈和工作方式,为进入C程序奠定基础

common     通用          通用的多功能函数实现,如环境,命令,控制台相关的函数实现。

include        通用         头文件和开发板配置文件,所有开发板的配置文件都在configs目录下  

lib_generic    通用         通用库函数的实现

net                 通用         存放网络协议的程序

Drivers     通用     通用设备驱动程序,比如各种网卡、支持CFI的flash、串口和USB总线等

Dtt         通用    数字温度测量器或者传感器的驱动

Examples    通用    一些独立运行的应用程序的例子

Fs          通用    支持文件系统的文件,u-boot现在支持cramfs、fat、fdos、jffs2、yaffs和registerfs

lib_arm     平台依赖    存放对ARM体系结构通用的文件,主要用于实现ARM平台通用的函数,如软件浮点

Lib_ppc   平台依赖  存放对PowerPC体系结构通用的文件,主要用于实现PowerPC平台通用的函数,与PowerPC体系结构相关的代码。 
Lib_i386  平台依赖  存放对X86体系结构通用的文件,主要用于实现X86平台通用的函数,与X86体系结构相关的代码

Post      通用  上电自检。

Rtc       通用  实时时钟驱动。

Tools      通用  创建S-Record格式文件和U-BOOT images的工具

      

       

       

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值