1、bootloader概述

1、第五部分嵌入式系统移植之Bootloader
从这一讲开始后面讲的都是和嵌入式操作系统相关的,也都是软件层面的,我们不用关心具体的硬件,因为我们的开发板已经做好了完善的硬件平台,我们现在要做的就是在这个硬件平台上跑操作系统,运行应用程序,所以现在大家要转变一下思想,不能像以前学习单片机那样纯粹的操作硬件,一定要把重点放在嵌入式操作系统和应用程序的开发上,不要以为操作系统对你来说不重要,如果给你台电脑,上面没有操作系统,只有一些硬件程序,那你会用吗,嵌入式也是一样,操作系统是它的核心,嵌入式的操作系统不像在PC机上安装Windows那样简单,是通过一点一点的配置、修改移植过来的,嵌入式移植有三部分,这一部分主要讲解bootloader

2、第十三讲bootloader的原理和vivi的移植
有以下几个内容:1、bootloader概述 2、vivi的启动过程分析 3、vivi的配置移植 4、vivi命令详解一个嵌入式Linux系统从软件的角度看通常分为4个层次:1、bootloader 2、Linux内核 3、文件系统 4、用户应用程序 bootloader是系统上电后执行的第一个程序,它用来初始化硬件,引导操作系统,也就是加载Linux内核,让系统跑起来,然后要挂载文件系统,这个用来管理操作系统硬件和应用程序,最后我们要实现特定的应用程序就是用户应用程序,那这些就涵盖了我们后面要讲的所有内容,这个图表示的是Flash设备上的磁盘分区,首先是bootloader,boot Parameters分区是系统的启动参数,它可以存放bootloader向内核kernel传递的命令行参数等等,然后是linux内核kernel、文件系统

3、什么是bootloader
简单地说,bootloader就是在操作系统运行之前运行的一段小程序,它就像计算机中的BIOS,BIOS可完成计算机自检和硬件初始化及启动操作系统,那通过bootloader这段小程序,可以初始化硬件设备,比如关闭看门狗、改变系统时钟、初始化中断向量表和堆栈、初始化存储控制器等等,然后建立系统的内存空间映射图,从而将系统的软件硬件环境带到一个合适的状态,以便为调用操作系统内核准备好正确的环境,完成了这些工作接下来就是引导操作系统了,最终,bootloader把操作系统内核映像加载到RAM中,并将系统控制权交给操作系统,这就完成了它所做的工作,那bootloader是被安装到哪里了呢,在哪里运行呢,实际上我们可以把bootloader烧写到Norflash或者Nandflash中,在CPU上电后就会从某个地址开始执行程序,而ARM架构的CPU就是从0x00000000地址开始执行的,那如果从Norflash启动,上电后就能直接从0x00000000地址运行bootloader,那如果从Nandflash启动那么上电后它就会

被映射到0x00000000地址处,也能运行bootloader

4、bootloader的操作模式
大多数bootloader都包含两种不同的操作模式,即启动加载模式和下载模式,二者的区别仅对开发人员才有意义,从最终用户的角度看,bootloader的作用就是加载操作系统,这就像我们使用的uboot一样,在开发板上电时会先运行uboot,那如果在几秒钟内,我在串口终端里按下了空格键,那么就会进入下载模式,我们可以下载内核和文件系统,或做一些其它的事,但这些都是我们开发人员需要做的,那用户需要用的是一个产品,是我们已经开发好的,就不需要用下载的功能,他们只需要系统上电后自动运行操作系统和应用程序,那也就是启动加载模式,通常bootloader对于硬件的依赖性非常强,建立一个通用的bootloader几乎是不可能的,它除了依赖于CPU的体系结构外,还依赖于嵌入式的硬件配置,所以不可能有一个bootloader支持所有的CPU和电路板

5、常用的bootloader
bootloader的种类非常多,下面看两个常用的,一个是uboot,uboot(universal boot loader)是德国DENX小组开发的用于多嵌入式CPU的bootloader程序,它可以运行于PowerPC、ARM、MIPS等多种嵌入式开发板上,是一个通用的bootloader,它支持非常多的CPU架构,功能很强大,下一讲会对它进行详细的讲解,虽然它支持的CPU架构很多,但是它也得根据你的板子来修改代码进行移植,另一个是vivi,vivi是由韩国MIZI公司开发的专门用于SAMSUNG ARM架构的一种bootloader,那我们用的S3C2440A和S3C2410用vivi来做bootloader是非常好的,这一讲主要是讲解vivi,它很精简而且操作简单,由于它是针对三星公司的ARM设计的,所以基本上可以直接使用,还有几个其它的开源的bootloader:1、RedBoot,RedBoot是由RedHat公司开发的,针对eCos操作系统做的,eCos是一个小型的嵌入式系统,像凌昂的SPC3200用的就是eCos 2、BLOB,BLOB基于LART硬件平台,目前它主要支出INTEL的StrongARM体系结构和XScale结构的ARM芯片 3、LILO,LILO是用来引导x86平台上的Linux操作系统,像以前的RedHat就是用LILO来引导的,现在使用的RedHat是用下面的GRUB来代替LILO的 4、GRUB,GRUB是GNU的LILO替代程序,同时GRUB也可以引导Windows操作系统



相关文档
最新文档