版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第13章 装载引导程序装载引导程序 本章重点:本章重点: 常见的装载引导程序; U-Boot概述; 编译、烧写、运行U-Boot及装入内核。13.1 常见的装载引导程序 在Linux环境,无论是通用计算机还是开发板,从机器加电起便运行着一个被称为装载引导(bootloader)的程序,这个程序主要功能是初始化CPU寄存器、初始化存储器控制器、对装载引导过程中使用到的设备初始化、在内存建立C语言运行环境、为装入Linux内核映像文件(简称内核)在内存分配空间、装入Linux内核并将运行权交给内核。此后Linux内核将丢弃或覆盖bootloader在内存的代码及数据。 1. LILO LILO(L
2、Inux LOader),早期桌面PC启动Linux的装载引导程序,也可以在配备了PC BIOS的x86 PC类型的嵌入式系统上使用。2. GRUB GRUB(GRand Unified Bootloader),GNU项目的主要bootloader,目前它也是x86系统上最受欢迎的bootloader,LILO的替代者,企业版(Enterprise)Linux发行套件在服务器上多使用GRUB引导,基于x86 PC类型的嵌入式开发板上,GRUB也较为常用。3. RedBoot RedBoot是一个基于ECOS(Embedded Configurable Operating System,也写作e
3、Cos)的bootloader。ECOS由于规模太小无法运行整个Linux内核,在ECOS被Red Hat收购后,被扩展成能够启动Linux内核的RedBoot。RedBoot是一个用于Intel和Xscale平台上的开源程序,通常用于采用Intel IXP和PXA系列处理器的开发板中。4. vivi vivi主要支持基于SA-1110、S3C2410的开发板,作为装载引导程序,能够引导Linux内核。vivi初始版本只支持串口传输,不支持网络传输,传输速度较慢。后来网上出现了各种改进版本,支持网络功能。5. 通用的装载引导程序Das U-Boot 官方命名为Das U-Boot的装载引导程序
4、,是目前应用最广泛的开源软件。Das U-Boot支持多种处理器体系结构、支持众多的评估板,能够引导多种操作系统。Das U-Boot被认为是功能最多、最具弹性、以及开发最积极的嵌入式bootloader。 Das U-Boot在不同的资料中也被写作U-Boot、U-boot、u-boot,在程序代码或注释中也被写为U_BOOT、u_boot。13.2 U-Boot概述1. U-Boot概述 U-Boot是一款基于PowerPC、ARM、MIPS和一些别的处理器嵌入式开发板的装载引导程序。U-Boot能够被安装(烧写)在非易失性引导ROM,例如Nor Flash、Nand Flash等中,用于
5、初始化后测试硬件、下载和运行应用程序代码(application code),此处的应用程序目前主要指操作系统;U-Boot也能够通过串口和网络下载、运行操作系统。 目前U-Boot还只能支持Linux、NetBSD、VxWorks、QNX、RTEMS、ARTOS、LynxOS操作系统。虽然U-Boot应该支持任何种类的操作系统,但是U-Boot在设计之初,主要是着眼于引导Linux的。 2. U-Boot的主要特点 开放源代码、能够引导多种操作系统内核。 支持多种处理器体系结构、多种开发板。 支持众多设备,如UART、终端及控制台、以太网、定时器、实时时钟、看门狗、USB、MMC、标准键盘及
6、小键盘、LCD及视频设备、can、I2C、SPI、FPGA、Nand Flash及Nor Flash,。 有较高的稳定性和可靠性,有详细的文档资料。 支持主机通过串口、网络(使用BOOTP/DHCP、TFTP和NFS协议)下载操作系统内核及根文件系统,支持从开发板Nor Flash、Nand Flash、EEPROM、硬盘等存储介质引导操作系统内核,支持引导压缩或非压缩的操作系统内核。 支持CRC32校验,可对闪存中内核、环境变量、RAMDISK映像文件校验。 支持设置、传输多个参数给被引导的操作系统内核。 支持众多的监视命令,方便用户调试。13.3 编译、烧写、运行U-Boot及 装入内核1
7、3.3.1对标准开发板源代码进行编译、链接并 烧写U-Boot 下文假定我们选择的标准开发板是三星公司基于S3C2410微处理器的smdk2410标准开发板,编译、链接过程如下。 编译以前,需要在主机Linux环境,安装相应版本的GNU交叉工具链,详见9.2节。通过主机对U-Boot源代码进行交叉编译,产生出指定目标板的U-Boot可执行代码。 从所购开发板的随机光盘或网上获得U-Boot源代码压缩包,拷贝到主机Linux一个指定目录,例如src目录,进入该目录,解压缩包(p446):13.3.2U-Boot等映像文件在开发板存储位置举例 不同种类的开发板,保存U-Boot等映像文件的介质也不
8、相同,目前使用较多的是Nor Flash或Nand Flash。 标准开发板smdk2410使用的是Nor Flash,由于价格原因,国内某开发板改用了Nand Flash。 Nand Flash中保存的U-Boot、内核、根文件系统及应用程序映像文件的位置及占据的空间,如图13.1所示(p447)。 13.3.3加电运行U-Boot及U-Boot装入内核 假定基于S3C2410微处理器的开发板上,U-Boot等文件存储在Nand Flash。1. 加电运行U-Boot 参见第3章图3.1、表3-2及3.3.1节,如果S3C2410输入引脚OM1:0=00b时,表明使用Nand Flash作为
9、引导ROM,此时bank0对应的是S3C2410微处理器内部4KB SRAM(静态RAM),地址从0 x00000000开始。 加电Reset后,S3C2410微处理器自动读出Nand Flash芯片前4KB U-Boot内容,送到bank0的内部4KB SRAM。 参见第2章表2.5,加电后CPU进入Reset异常,程序从地址0 x00000000起执行,也就是从bank0的SRAM地址0 x00000000取出指令执行,其间对SDRAM初始化后,会将Nand Flash上U-Boot的其余代码读入内存(SDRAM)。 U-Boot装入内核到内存的两种模式 U-Boot从开发板Nand Fl
10、ash装入Linux内核 U-Boot通过网络或串口装入内核等文件13.4 U-Boot监视命令及环境变量13.4.1使用命令及在源代码中配置监视命令使用命令及在源代码中配置监视命令 监视命令(monitor command)简称为命令,在U-Boot的源代码中已经有50多条内建命令。可以选择配置全部命令集、配置默认命令集、增加或删除某一条命令。用户也可以构建新的命令用于扩充已有的内建命令集。之后通过对U-Boot源代码进行编译,将产生的可执行文件映像烧写到开发板。开发板Reset后启动的U-Boot,含有配置的命令或新构建的命令所对应的命令集。 1. 在目标板终端窗口使用命令 查看U-Boo
11、t支持哪些命令 在u-boot命令提示符后,输入help并回车,将显示实际配置的全部U-Boot命令,显示内容见8.3.10节,此处不再重复。 打印/设置/保存环境变量命令举例 如果要打印环境变量,那么在u-boot命令提示符后,输入printenv并回车, 显示的环境变量内容见8.3.10节,此处不再重复。 如果要设置新的serverip、ipaddr地址,则分别输入下面两行内容并回车: # setenv serverip 27 # setenv ipaddr 20 此后如果要保存环境变量到闪存,输入以下命令并回车: # saveenv N
12、and Flash擦除及写入命令举例 如果擦除起址为0 x80000,擦除字节数为0 x200000,输入以下命令并回车: # nand erase 0 x80000 0 x200000 如果将内存SDRAM起址为0 x30008000,字节数为0 x200000的一片区域中的内容,写入Nand 0 x80000起始地址处,输入以下命令并回车: # nand write 0 x30008000 0 x80000 0 x200000 引导命令bootm 引导命令bootm,用于引导存储在内存或闪存中的Linux内核映像,并将环境变量中引导变量(bootargs)的内容,送到内核作为参数。可以用p
13、rintenv、setenv命令去检查和设置引导变量。从内存中引导内核的含义是,已经下载了内核到内存,但是还没有转到内核执行,由bootm命令转去执行。2. 在源代码中配置监视命令举例 以下内容以smdk2410标准开发板为例。 对U-Boot源代码压缩包解压缩后,在/include/configs/smdk2410.h文件中,可以配置用户需要的监视命令。 只配置默认的命令集 在该文件中,添加以下语句,表示只包含默认的内建命令: #include 配置除了网络以外的全部命令 如果用户需要除了网络支持以外的全部命令,可以写入以下两行内容: #include “config_cmd_all.h”
14、#undef CONFIG_CMD_NET 配置默认的命令集,增加DHCP命令: #define CONFIG_COMMANDS (CONFIG_CMD_DFL | CFG_CMD_DHCP) 配置默认的命令集,去除其中NFS命令: #define CONFIG_COMMANDS (CONFIG_CMD_DFL & CFG_CMD_NFS) U-Boot支持用户构建内建命令集不包含的新命令。U-Boot对每一个命令使用相同的调用接口来实现,因此容易增加新的命令。调用接口使用了一个结构体描述,结构体包含的成员变量有:命令名称、最大参数个数、重复数、命令执行函数、用法、帮助。 13.4.2
15、环境变量环境变量1. 环境变量概述 U-Boot支持将用户的配置,即开发板的配置,用环境变量保存在能够持久存储的闪存中。 环境变量的初值,在U-Boot源代码中与某一款标准开发板相关的文件中指定,例如/include/configs/smdk2410.h中,指定了smdk2410标准开发板串口(控制台)的波特率、自动引导等待时间、以太网网卡地址/掩码/服务器IP/设备IP等值。 (p449)2. 常用环境变量及含义 不同型号的开发板、不同版本的U-Boot,环境变量也不相同,常用环境变量及含义,见表13-1。 (p450)3. 打印、修改、保存环境变量命令举例 上述命令举例分别见8.3.10节
16、的内容,以及11.4.2节的内容和图11.19中的相关命令。13.5 顶层目录、编译过程及配置头 文件举例13.5.1U-Boot源代码顶层目录及编译指定的开发板源代码顶层目录及编译指定的开发板1. U-Boot源代码顶层目录将U-Boot源代码压缩包在主机Linux某个指定目录下解压缩后产生的顶层目录,称为U-Boot源代码顶层目录,简称为顶层目录,例如/u-boot-1.3.2/。顶层目录下有许多子目录及文件,大部分子目录下还有下一级子目录。(p451)2. 编译指定的标准开发板举例 对指定开发板,例如smdk2410,在主机Linux环境U-Boot顶层目录输入以下内容并回车: # ma
17、ke smdk2410_config 计算机将执行顶层目录下的Makefile文件,执行过程中依据顶层目录下mkconfig脚本文件,生成/include/config.mk配置文件,生成的文件内容包含:(p452) 13.5.2标准开发板配置头文件及举例标准开发板配置头文件及举例 对于U-Boot支持的200多种标准开发板,每种开发板有一个配置头文件,这个头文件是/include/configs/.h。例如,对于smdk2410标准开发板,这个头文件是/include/configs/smdk2410.h。在配置头文件中,具体选择了对应标准开发板的处理器体系结构及CPU类型、开发板名称,并定
18、义了众多配置变量。执行主Makefile对U-Boot源代码的编译过程中,主要依据smdk2410.h文件,生成可执行的U-Boot映像文件中与具体开发板硬件相关的那部分代码。1. 配置变量(p453) 配置头文件中使用了两种类型的配置变量: 配置选择(configuration options) 这种变量是用户可选择的,主要用于选择处理器、设备端口地址、命令、属性等。 配置设置(configuration settings) 这种变量的设置是依赖开发板的硬件的,例如总线频率、串口波特率、闪存地址等。如果用户不清楚自己要做什么,轻易不要更改这些配置。2. smdk2410标准开发板配置头文件举例 以下代码取自/u-boot-1.3.2/include/configs/smdk2410.h,头部版权信息省略,尾部与闪存相关代码省略,保留了源代码的英文注释,注释中的中文部分是作者增加的。 【例13.1】 smdk2410.h配置头文件部分代码。 (p453-456)13.6 U-Boot启动
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 探秘书海:字里行间的智慧
- 一年来的财务工作总结
- 2023年员工三级安全培训考试题及完整答案(全优)
- 2023年-2024年项目安全培训考试题含答案(精练)
- 2023-2024年项目部安全管理人员安全培训考试题原创题
- 2023-2024年企业主要负责人安全培训考试题答案可打印
- 新生军训心得体会400字10篇
- 科学实验教学
- 药物代谢预测与智能模拟研究-洞察分析
- 铁路运营成本控制-洞察分析
- 通力电梯KCE电气系统学习指南
- 风电场岗位任职资格考试题库大全-下(填空题2-2)
- 九年级数学特长生选拔考试试题
- 幼儿园交通安全宣传课件PPT
- 门窗施工组织设计与方案
- 健身健美(课堂PPT)
- (完整版)财务管理学课后习题答案-人大版
- 锚索试验总结(共11页)
- 移动脚手架安全交底
- 人教版“课标”教材《统计与概率》教学内容、具体目标和要求
- 矩形钢板水箱的设计与计算
评论
0/150
提交评论