有很多网友基于 mini2440 移植了U-boot,不过大都是功能比较简单,我们发现网友Tekkaman 移植的U-boot 集成了很多其他版本U-boot 的优点,比如支持SD 卡、优盘、开机Logo、USB 下载等,这使得U-boot 更加方便易用且实用,这和我们公司对产品设计的追求理念是一致的。遂与其取得联系,并于2009 年底并提供了各个版本的mini2440 样品以供测试,因此你现在可以在Tekkaman 的代码仓库中下载到支持当前所有Nand Flash 容量版本(64M/128M/256M/1GB)的U-boot 源代码,它完全适用于mini2440/micro2440。
对于大部分初学者而言,仅仅会下载和编译使用别人移植好的软件或许还是不够的,因此我们根据网友Tekkaman 的博客文章为材料,并做了适当的整理和补充,得以形成此手册,以便其他人学习参考,在此我们十分感谢Tekkaman 对此付出的努力和贡献。也许有不少网友已经浏览过他的博客,上面已经有一部分移植的说明文档,但此手册介绍的内容将会更加系统和细致,因此十分适合打算采用U-boot 的初学者。
其实我们公司也提供了其他开源的 bootloader,比如vboot 和nboot,它们都十分短小精悍,分别适用于Linux 和WinCE 系统,我们认为这对于研究bootloader 原理和实际的项目应用更加合适。基于习惯(Linux 爱好者和Windows 用户向来是有水火不相容的斗争意识)考虑,vboot是基于ARM Gcc 开发制作的,nboot 是基于ADS 开发制作的。
嵌入式 Linux 软件结构与分布
一般情况下嵌入式Linux 系统中的软件主要分为以下几部分:
1) 引导加载程序:其中包括内部ROM 中的固化启动代码和BootLoader 两部分。内部固化ROM 是厂家在芯片生产时候固化的,作用基本上是引导BootLoader。有的芯片比较复杂,比如Omap3 在flash 中没有代码的时候有许多启动方式:USB、UART 或以太网等等。而S3C24x0 则很简单,只有Norboot 和Nandboot。
2) Linux kernel 和drivers。
3) 文件系统。包括根文件系统和建立于Flash 内存设备之上的文件系统(EXT4、UBI、CRAMFS 等等)。它是提供管理系统的各种配置文件以及系统执行用户应用程序的良好运行环境及载体。
4) 应用程序。用户自定义的应用程序,存放于文件系统之中。
综上所述:BootLoader 是在操作系统内核启动之前运行的一段小程序。通过这段程序,我们可以初始化硬件设备,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境,最后从别处(Flash、以太网、UART)载入内核映像到主存并跳到入口地址。
由于 BootLoader 需要直接操作硬件,所以它严重依赖于硬件,而且依据所引导的操作系统的不同,也有不同的选择。对于嵌入式世界中更是如此。就S3C24x0 而言,如果是引导Linux,一般选用韩国的mizi 公司设计的vivi 或者DENX 软件工程中心的Das U-boot,如果是引导Win CE,就选用Eboot。如果是开发StrongARM 构架下的LART,就可选用由Jan-Derk Bakker 和 Erik Mouw 发布的Blob(Boot Loader Object)。如果是要引导eCos 系统,可以选用同是Redhat 公司开发的Redboot。
所以在嵌入式世界中建立一个通用的 BootLoader 几乎是不可能的,而可能的是让一个Boot Loader 代码支持多种不同的构架和操作系统,并让她有很好的可移植性。U-boot 就是支持多平台多操作系统的一个杰出代表。这也是U-boot 的优势所在,因为如果在开发S3C2440 时熟悉了U-boot,再转到别的平台的时候,就可以很快地完成这个平台下U-boot的移植。而且U-boot 的代码结构越来越合理,对于新功能的添加也十分容易。
U-Boot 是Das U-Boot 的简称,其含义是Universal Boot Loader,是遵循GPL 条款的开放源码项目。最早德国DENX 软件工程中心的Wolfgang Denk 基于8xxROM 和FADSROM的源码创建了PPCBoot 工程项目,此后不断添加处理器的支持。而后,Sysgo Gmbh 把PPCBoot 移植到ARM 平台上,创建了ARMBoot 工程项目。最终,以PPCBoot 工程和ARMBoot 工程为基础,创建了U-Boot 工程,2002 年12 月17 日第一个版本U-Boot-0.2.0发布,同时PPCBoot 和ARMBoot 停止维护。
而今,U-Boot 作为一个主流、通用的BootLoader,成功地被移植到包括PowerPC、ARM、X86 、MIPS、NIOS、XScale 等主流体系结构上的百种开发板,成为功能最多、灵活性最强,并且开发最积极的开源BootLoader。目前。U-Boot 仍然由DENX 的WolfgangDenk 维护。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
全部0条评论
快来发表一下你的评论吧 !