精嵌入式Linux的Uboot系统启动过程.docx
- 文档编号:2469061
- 上传时间:2022-10-29
- 格式:DOCX
- 页数:53
- 大小:56.07KB
精嵌入式Linux的Uboot系统启动过程.docx
《精嵌入式Linux的Uboot系统启动过程.docx》由会员分享,可在线阅读,更多相关《精嵌入式Linux的Uboot系统启动过程.docx(53页珍藏版)》请在冰豆网上搜索。
精嵌入式Linux的Uboot系统启动过程
嵌入式Linux的U-boot系统启动过程
本章基于Intel公司的pxa270芯片分析U-Boot的工作机制,介绍了嵌入式Linux交叉开发工具ELDK [隐藏] ∙1BootLoad启动方式 o1.1网络启动方式 o1.22.磁盘启动方式 o1.33.Flash启动方式 ∙2U-Boot介绍 o2.1U-Boot功能介绍 o2.2U-Boot安装 o2.3U-Boot命令介绍 o2.4U-Boot环境变量 o2.5U-Boot脚本 o2.6U-Boot单独应用程序 o2.7位图支持 ∙32ELDK工具介绍 o3.1下载与编译 o3.2建立开发系统 o3.3编译安装Linux内核 o3.4启动嵌入式Linux o3.5Flash文件系统 o3.6根文件系统的设计与编译 o3.7覆盖层文件系统 o3.8调试 ▪3.8.1<1)U-Boot的调试 ▪3.8.2<2)Linux内核调试 ▪3.8.3<3)远程调试应用程序 BootLoad启动方式 Bootloader的主要功能是引导操作系统启动,开放源代码的BootLoader种类很多,常用的BootLoader的功能说明如表1所示。 表1常用BootLoader的功能说明 Bootloader名 是否终端监视 描 述 x86 ARM PowerPC LILO 否 Linux磁盘引导程序 是 否 否 GRUB 否 GNU的LILO替代程序 是 否 否 Loadlin 否 从DOS引导Linux 是 否 否 ROLO 否 从ROM引导Linux而不需要BIOS 是 否 否 Etherboot 否 通过以太网卡启动Linux系统的固件 是 否 否 LinuxBIOS 否 完全替代BUIS的Linux引导程序 是 否 否 BLOB 否 LART等硬件平台的引导程序 否 是 否 U-boot 是 通用引导程序 是 是 是 RedBoot 是 基于eCos的引导程序 是 是 是 网络启动方式 这种方式开发板不需要配置较大的存储介质,跟无盘工作站有点类似。 但是使用这种启动方式之前,需要把Bootloader安装到板上的EPROM或者Flash中。 Bootloader通过以太网接口远程下载Linux内核映像或者文件系统。 第4章介绍的交叉开发环境就是以网络启动方式建立的。 这种方式对于嵌入式系统开发来说非常重要。 使用这种方式也有前提条件,就是目标板有串口、以太网接口或者其他连接方式。 串口一般可以作为控制台,同时可以用来下载内核影像和RAMDISK文件系统。 串口通信传输速率过低,不适合用来挂接NFS文件系统。 所以以太网接口成为通用的互连设备,一般的开发板都可以配置10M以太网接口。 对于PDA等手持设备来说,以太网的RJ-45接口显得大了些,而USB接口,特别是USB的迷你接口,尺寸非常小。 对于开发的嵌入式系统,可以把USB接口虚拟成以太网接口来通讯。 这种方式在开发主机和开发板两端都需要驱动程序。 另外,还要在服务器上配置启动相关网络服务。 Bootloader下载文件一般都使用TFTP网络协议,还可以通过DHCP的方式动态配置IP地址。 DHCP/BOOTP服务为Bootloader分配IP地址,配置网络参数,然后才能够支持网络传输功能。 如果Bootloader可以直接设置网络参数,就可以不使用DHCP。 TFTP服务为Bootloader客户端提供文件下载功能,把内核映像和其他文件放在/tftpboot目录下。 这样Bootloader可以通过简单的TFTP协议远程下载内核映像到内存。 如图6.1所示。 图6.1网络启动示意图 大部分引导程序都能够支持网络启动方式。 例如: BIOS的PXE 2.磁盘启动方式 传统的Linux系统运行在台式机或者服务器上,这些计算机一般都使用BIOS引导,并且使用磁盘作为存储介质。 如果进入BIOS设置菜单,可以探测处理器、内存、硬盘等设备,可以设置BIOS从软盘、光盘或者某块硬盘启动。 也就是说,BIOS并不直接引导操作系统。 那么在硬盘的主引导区,还需要一个Bootloader。 这个Bootloader可以从磁盘文件系统中把操作系统引导起来。 Linux传统上是通过LILO 这2种Bootloader广泛应用在X86的Linux系统上。 你的开发主机可能就使用了其中一种,熟悉它们有助于配置多种系统引导功能。 LILO软件工程是由WernerAlmesberger创建,专门为引导Linux开发的。 现在LILO的维护者是JohnCoffman,最新版本下载站点: http: //lilo.go.dyndns.org。 LILO有详细的文档,例如LILO套件中附带使用手册和参考手册。 此外,还可以在LDP的"LILOmini-HOWTO"中找到LILO的使用指南。 GRUB是GNU计划的主要bootloader。 GRUB最初是由ErichBoleyn为GNUMach操作系统撰写的引导程序。 后来有GordonMatzigkeit和OkujiYoshinori接替Erich的工作,继续维护和开发GRUB。 GRUB的网站http: //www.gnu.org/software/grub/上有对套件使用的说明文件,叫作《GRUBmanual》。 GRUB能够使用TFTP和BOOTP或者DHCP通过网络启动,这种功能对于系统开发过程很有用。 除了传统的Linux系统上的引导程序以外,还有其他一些引导程序,也可以支持磁盘引导启动。 例如: LoadLin可以从DOS下启动Linux;还有ROLO、LinuxBIOS,U-Boot也支持这种功能。 3.Flash启动方式 大多数嵌入式系统上都使用Flash存储介质。 Flash有很多类型,包括NORFlash、NANDFlash和其他半导体盘。 其中,NORFlash<也就是线性Flash)使用最为普遍。 NORFlash可以支持随机访问,所以代码是可以直接在Flash上执行的。 Bootloader一般是存储在Flash芯片上的。 另外,Linux内核映像和RAMDISK也可以存储在Flash上。 通常需要把Flash分区使用,每个区的大小应该是Flash擦除块大小的整数倍。 图6.2是Bootloader和内核映像以及文件系统的分区表。 图6.2Flash存储示意图 Bootloader一般放在Flash的底端或者顶端,这要根据处理器的复位向量设置。 要使Bootloader的入口位于处理器上电执行第一条指令的位置。 接下来分配参数区,这里可以作为Bootloader的参数保存区域。 再下来内核映像区。 Bootloader引导Linux内核,就是要从这个地方把内核映像解压到RAM中去,然后跳转到内核映像入口执行。 然后是文件系统区。 如果使用Ramdisk文件系统,则需要Bootloader把它解压到RAM中。 如果使用JFFS2文件系统,将直接挂接为根文件系统。 这两种文件系统将在第12章详细讲解。 最后还可以分出一些数据区,这要根据实际需要和Flash大小来考虑了。 这些分区是开发者定义的,Bootloader一般直接读写对应的偏移地址。 到了Linux内核空间,可以配置成MTD设备来访问Flash分区。 但是,有的Bootloader也支持分区的功能,例如: Redboot可以创建Flash分区表,并且内核MTD驱动可以解读出redboot的分区表。 除了NORFlash,还有NANDFlash、CompactFlash、DiskOnChip等。 这些Flash具有芯片价格低,存储容量大的特点。 但是这些芯片一般通过专用控制器的I/O方式来访问,不能随机访问,因此引导方式跟NORFlash也不同。 在这些芯片上,需要配置专用的引导程序。 通常,这种引导程序起始的一段代码就把整个引导程序复制到RAM中运行,从而实现自举启动,这跟从磁盘上启动有些相似。 U-Boot介绍 U-Boot功能介绍 PC机引导加载程序由BIOS和OSBootLoader<通常为GRUB)组成,嵌入式系统一般没有BIOS这样的固件程序,系统的引导加载完全由BootLoader完成。 不同的系统,bootLoader是不同的。 BootLoader有许多开放源代码,但在标准Linux中没有,需要用户从网上下载。 BootLoader包括LILO、GRUB、Loadlin、BOLB、U-boot、RedBoot等多种,其中,GRUB是LILO的继任者,用于PC机,Loadlin用于从DOS装载Linux;BLOB来自LART U-Boot支持的主要功能列出如下: 系统引导功能。 支持NFS挂载、RAMDISK系统引导压缩或非压缩形式的根文件系统。 支持NFS挂载、从Flash中引导压缩或非压缩的Linux内核。 具有强大的操作系统接口功能,可灵活设置、传递多个参数给操作系统,支持目标板环境参数的多种存储方式,如Flash、NVRAM、EEPROM。 支持CRC32校验,可校验Flash中内核、RAMDISK镜像文件是否完好。 支持串口、SDRAM、Flash、以太网、LCD、NVRAM、EEPROM、键盘、USB、PCMCIA、PCI、RTC等设备驱动。 支持上电自检功能,如: SDRAM、Flash大小自动检测;SDRAM故障检测;CPU型号检测等。 U-Boot有"启动加载"和"下载"两种操作模式,启动加载模式将操作系统加载到RAM中运行。 下载模式是以某种通信方式从主机 这种模式下还提供一个简单的命令行接口。 U-Boot初始化目标板硬件,为嵌入式操作系统提供目标板硬件配置信息,完成嵌入式操作系统装载、引导和运行的固件程序。 它能够将系统的软硬件紧密衔接在一起。 Intel基于XScale架构的pxa27XARM系列处理器,最高主频可达624MHz,加入了WirelessMMX技术,广泛应用于PDA、智能手机、PMP等产品的开发中,硬件的详细说明请参考产品手册。 ARM嵌入式系统复位后通常都从地址0x00000000开始执行,BootLoader就从这里开始。 BootLoader分为由汇编语言实现的部分<称为stage1)和用C语
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 嵌入式 Linux Uboot 系统启动 过程