U-boot介绍

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/a_blank_memory/article/details/78300554

嵌入式软件系统

一般情况下嵌入式 Linux 系统中的软件主要分为以下几部分:

  • 引导加载程序:其中包括内部 ROM 中的固化启动代码和 BootLoader 两部分;

  • Linux kernel 和 drivers;

  • 文件系统。 包括根文件系统和建立于 Flash 存储设备之上的文件系统(UBIFS、JFFS2、YAFFS2
    等等)。它是提供管理系统的各种配置文件以及系统执行用户应用程序的良好运行环境及载体;
  • 应用程序。 用户自定义的应用程序,存放于文件系统之中;

操作系统开机的流程图:

开机的大致流程

S3C2440启动的流程:
S3C2440为例的启动流程

交叉编译

交叉编译是指在一种平台(如PC)上使用交叉编译器编译生成的可执行程序只能在另外一种平台(如ARM开发板FL2440)上运行。
这里写图片描述
自己制作交叉编译器两个工具:
crosstool-ng —- glibc PC上用的库,兼容性最好但比较大

buildroot —- uclibc 嵌入式平台用的,95%以上兼容glibc,比较小

bootlord的简介

BootLoader 是在操作系统内核启动之前运行的一段小程序。通过这段程序,我们可以初始化硬件设备,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境,最后从别处( Flash、以太网、 UART)载入内核映像到主存并跳到入口地址。由于 BootLoader 需要直接操作硬件,所以它严重依赖于硬件,而且依据所引导的操作系统的不同,也有不同的选择,对于嵌入式世界中更是如此。就 S3C24x0 而言,如果是引导Linux,一般选用韩国的 mizi 公司设计的 vivi 或者 DENX 软件工程中心的 Das U-boot,如果是引导 Win CE,就选用 Eboot。

所以在嵌入式世界中建立一个通用的 BootLoader 几乎是不可能的,而可能的是让一个Boot Loader 代码支持多种不同的构架和操作系统,并让她有很好的可移植性。 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 维护。

最早 U-boot 的版本号是由 X.Y.Z 来表示的,从 0.2.0 一直发展到 1.3.4。之后便开始使用年份加月份的表示方法,从 2008.11 到现在的 2010.3 平均每 3 个多月出一个新版本。每次代码的结构和定义都会有一些修正和改进,其代码越来越规整,功能越来越强,但是移植的难度反而越来越小,需要修改的地方越来越少。u-boot官方站点:
http://www.denx.de/wiki/U-Boot/WebHome

猜你喜欢

转载自blog.csdn.net/a_blank_memory/article/details/78300554