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体系结构相关的代码。? Post ?????通用 ?上电自检。 Rtc? ?????通用 ?实时时钟驱动。 Tools ?????通用 ?创建S-Record格式文件和U-BOOT images的工具 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- ruby-on-rails-4 – rails_admin – 如何按列表视图中的自定
- c# – 将事件处理程序添加到转发器中的用户控件
- 【cocos2d-js官方文档】十九、Cocos2d-JS单文件引擎使用指引
- c# – 以横向打印图像?
- ruby-on-rails – Rails NoMethodError for Blog#在Heroku上
- 文本文件的内容进行排序
- c# – 如何将类型“Type”的变量传递给通用参数
- c – 是否可以同时在两个对象上使用插入操作符?
- c# – 点击对象在Lucene.Net 3.03中弃用,我该如何替换它?
- 我的cocos2d-x-3.2集成云风pbc lua binding方法