Boot_Loader介绍
- 格式:doc
- 大小:26.50 KB
- 文档页数:6
BootLoader启动过程分析一、 Boot Loader的概念和功能1、嵌入式Linux软件结构与分布在一般情况下嵌入式Linux系统中的软件主要分为以下及部分:(1)引导加载程序:其中包括内部ROM中的固化启动代码和Boot Loader两部分。
而这个内部固化ROM是厂家在芯片生产时候固化的,作用基本上是引导Boot Loader。
有的芯片比较复杂,比如Omap3,他在flash中没有代码的时候有许多启动方式:USB、UART 或以太网等等。
而S3C24x0则很简单,只有Norboot和Nandboot。
(2)Linux kernel 和drivers。
(3)文件系统。
包括根文件系统和建立于Flash内存设备之上的文件系统(EXT4、UBI、CRAMFS等等)。
它是提供管理系统的各种配置文件以及系统执行用户应用程序的良好运行环境的载体。
(4)应用程序。
用户自定义的应用程序,存放于文件系统之中。
在Flash 存储器中,他们的一般分布如下:但是以上只是大部分情况下的分布,也有一些可能根文件系统是initramfs,被一起压缩到了内核映像里,或者没有Bootloader参数区,等等。
2、在嵌入式Linux中为什么要有BootLoader在linux内核的启动运行除了内核映像必须在主存的适当位置,CPU还必须具备一定的条件:【1】CPU寄存器设置:R0=0;R1=Machine ID(即Machine Type Number,定义在linux/arch/arm/tools/mach-types);R2=内核启动参数在RAM中起始基地址;【2】CPU模式:必须禁止中断(IRQs和FIQs);CPU 必须工作在是超级保护模式(SVC) 模式;【3】Cache和MMU的设置:MMU 必须关闭;指令Cache可以打开也可以关闭;数据Cache必须关闭;但是在CPU刚上电启动的时候,一般连内存控制器都没有配置过,根本无法在内存中运行程序,更不可能处在Linux内核的启动环境中。
bootload标准
Bootload是一种标准,它定义了一种用于将程序加载到设备的
方式。
Bootload标准通常由硬件制造商或操作系统开发者制定,并被用于启动系统时加载初始程序的过程中。
Bootload标准一般描述了以下方面的内容:
1. 引导程序的存储位置和格式:Bootload标准规定了引导程序
应该存储在哪里(比如主引导记录或特定的引导分区),以及它们的格式(比如二进制文件、可执行文件或其他格式)。
2. 引导过程的执行顺序:Bootload标准描述了执行引导过程的
顺序,即加载引导程序的具体步骤,包括读取引导程序的位置、将其加载到内存中、设置适当的寄存器和环境变量等。
3. 引导程序的功能和要求:Bootload标准还可以包括引导程序
的功能和要求,比如支持特定的引导选项、加载特定的文件系统或驱动程序等。
通过遵循Bootload标准,硬件制造商和操作系统开发者可以
确保不同的设备或系统可以正确地启动和加载程序,提供统一的引导过程。
这样就可以方便地切换不同的操作系统或加载不同的程序,而无需进行额外的配置或适配。
bootload标准
Bootload标准是一种用于将程序加载到系统中的标准化机制。
它定义了程序的加载和执行流程以及与硬件的交互方式,确保程序能够在系统启动时正确运行。
Bootload标准有许多不同的实现,最常见的是BIOS(基本输入输出系统)和UEFI(统一的可扩展固件接口)。
在BIOS中,Bootload标准通常由Master Boot Record(MBR)和Boot Sector组成。
MBR是存储在磁盘上的第一个扇区,其中包含引导程序,并通过读取Boot Sector将控制权转移到操作系统或其他可引导的程序。
而在UEFI中,Bootload标准则通过EFI System Partition(ESP)来实现。
ESP 是一个特定的分区,其中包含引导管理器(Boot Manager)和操作系统文件,Boot Manager负责加载和启动操作系统。
Bootload标准还规定了操作系统加载的顺序和方式,例如可引导设备的选择、文件系统的识别和解析等。
通过遵循Bootload标准,硬件和软件开发者可以确保在不同的系统中能够正常加载和执行程序,提高系统的兼容性和可移植性。
如需更多关于Bootload标准的信息,建议咨询计算机领域专业人士或查阅相关论坛。
主题:芯片中的bootload作用内容:1. 什么是bootloadBootload是指启动加载程序,是芯片启动时自动执行的一段程序,用于初始化系统环境,加载操作系统,确保系统正常启动。
在芯片中,bootload通常存储在非易失性存储器中,如闪存或EEPROM中,并由芯片内部的引导加载器调用执行。
2. bootload的功能- 初始化系统环境:在系统上电后,bootload会先对系统进行初始化,包括初始化系统时钟、外设接口、存储器等,以确保系统能够正常工作。
- 加载操作系统:在系统初始化完成后,bootload会加载操作系统的核心代码,将控制权转交给操作系统,并使其开始执行。
- 硬件自检:一些bootload还会进行硬件自检,检测系统中的硬件设备是否正常,确保系统的稳定性和可靠性。
- 更新固件:一些芯片的bootload还支持固件更新功能,可以通过bootload加载新的固件,实现对芯片功能和性能的升级。
3. bootload在嵌入式系统中的重要性在嵌入式系统中,bootload起着至关重要的作用。
由于嵌入式系统通常需要长时间稳定运行,对系统的启动时间、可靠性和稳定性要求较高,而bootload的功能正好能够满足这些要求。
另外,嵌入式设备通常需要远程更新固件,而bootload的固件更新功能可以方便、快捷地实现这一需求。
4. bootload的设计原则- 简洁高效:bootload的程序体积要尽量小,执行效率要尽可能高,以确保系统启动时间短,提高系统响应速度。
- 可靠性:bootload必须要具有很高的可靠性和稳定性,能够在各种环境条件下正常启动系统,不受外部干扰影响。
- 安全性:bootload的固件更新功能要能够确保固件的安全性和一致性,防止因固件更新导致系统出现故障或安全漏洞。
5. bootload的发展趋势随着物联网、人工智能等技术的发展,对嵌入式系统的要求也越来越高,bootload也面临着新的挑战。
简单地说,Boot Loader 就是在操作系统内核运行之前运行的一段小程序。
通过这段小程序,我们可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境。
通常,Boot Loader 是严重地依赖于硬件而实现的,特别是在嵌入式世界。
因此,在嵌入式世界里建立一个通用的Boot Loader 几乎是不可能的。
尽管如此,我们仍然可以对Boot Loader 归纳出一些通用的概念来,以指导用户特定的Boot Loader 设计与实现。
1. Boot Loader 所支持的CPU 和嵌入式板每种不同的CPU 体系结构都有不同的Boot Loader。
有些Boot Loader 也支持多种体系结构的CPU,比如U-Boot 就同时支持ARM 体系结构和MIPS 体系结构。
除了依赖于CPU的体系结构外,Boot Loader 实际上也依赖于具体的嵌入式板级设备的配置。
这也就是说,对于两块不同的嵌入式板而言,即使它们是基于同一种CPU 而构建的,要想让运行在一块板子上的Boot Loader 程序也能运行在另一块板子上,通常也都需要修改Boot Loader 的源程序。
2. Boot Loader 的安装媒介(Installation Medium)系统加电或复位后,所有的CPU 通常都从某个由CPU 制造商预先安排的地址上取指令。
比如,基于ARM7TDMI core 的CPU 在复位时通常都从地址0x00000000 取它的第一条指令。
而基于CPU 构建的嵌入式系统通常都有某种类型的固态存储设备(比如:ROM、EEPROM 或FLASH 等)被映射到这个预先安排的地址上。
因此在系统加电后,CPU 将首先执行Boot Loader 程序。
3. 用来控制Boot Loader 的设备或机制主机和目标机之间一般通过串口建立连接,Boot Loader 软件在执行时通常会通过串口来进行I/O,比如:输出打印信息到串口,从串口读取用户控制字符等。
一、概述Boot loader是计算机系统中一个非常重要的组成部分,它负责在计算机开机时加载操作系统,并将控制权交给操作系统,是系统启动的关键环节。
本文将就boot loader的工作原理进行探讨。
二、Boot loader的基本概念1.Boot loader是什么Boot loader是一个位于计算机存储设备上的特殊程序,其作用是在计算机启动时被加载到内存中,并负责引导操作系统的启动。
2.Boot loader的种类Boot loader的种类有很多,比较常见的有GRUB、LILO、Windows Boot Manager等。
不同的操作系统有不同的Boot loader。
3.Boot loader的工作流程Boot loader的工作流程一般包括加载启动设备、加载操作系统内核、初始化操作系统环境等几个关键步骤。
三、Boot loader的工作原理1.加载启动设备当计算机开机时,BIOS(基本输入/输出系统)会首先启动,并执行POST(电脑自检)过程。
BIOS会查找启动设备(通常是硬盘、光盘、USB等),并加载位于启动设备第一个扇区的boot loader程序。
2.加载操作系统内核一旦Boot loader被成功加载到内存中,它将负责加载操作系统的内核。
Boot loader会根据预设的启动顺序和用户的选择,找到正确的操作系统内核,并将其加载到内存中。
3.初始化操作系统环境Boot loader会初始化操作系统所需的一系列环境参数,例如内存布局、设备驱动、文件系统等,然后将控制权交给操作系统内核。
四、Boot loader的主要功能Boot loader在系统启动过程中承担着至关重要的作用,其主要功能包括:1.引导操作系统:将控制权交给操作系统内核,使操作系统能够正常运行。
2.加载内核:找到并加载正确的操作系统内核,确保操作系统能够正常启动。
3.初始化环境:初始化操作系统所需的环境参数,为操作系统的正常运行做好准备。
详细介绍Windows系统中boot.ini引导程序不少人对windows2000的boot.ini文件很感兴趣,因为它关系到我们的系统引导。
尽管boot.ini文件内容不多,但是包含的知识点却不少,笔者在此做一个详细的分析。
这里举个例子,以笔者自己使用的PC为例。
boot.ini文件具体内容:[boot loader]timeout=30default=multi(0)disk(0)rdisk(0)partition(2)\WINNT[operating systems]multi(0)disk(0)rdisk(0)partition(2)\WINNT="Microsoft Windows 2000 Professional" /fastdetectmulti(0)disk(0)rdisk(1)partition(1)\WINNT="Microsoft Windows 2000 Sever"/fastdetectC:\="Microsoft Windows"C:\bootsect.bin="linux"这里,大家可以看到boot.ini文件分为两部分,[boot loader]和[operating systems]。
一、首先介绍[boot loader]:timeout=?? 这个等号后面的数字表示在出现多操作系统引导时。
选择菜单滞留的时间。
默认为30秒。
这个只有三个取值范围,有、无、无效。
若修改为1-999之间的一个整数,则多操作系统选择菜单会滞留相应的时间。
若修改为0。
则不会出现多操作系统选择菜单。
默认进入第一个操作系统(即[operating systems]下面的第一个操作系统)。
如果修改为一个负整数或一个大于等于1000的正整数。
系统认为此值无效,多操作系统选择菜单滞留时间将为无穷。
default=*** 这个等号后面的为默认进入的操作系统的路径,格式为[operating systems]下面等号之前的部分。
bootloader通俗解释摘要:1.Bootloader的概念与作用2.Bootloader的种类与区别3.Bootloader的应用场景4.如何选择合适的Bootloader5.Bootloader的编写与定制6.Bootloader的安全性与优化7.总结与展望正文:一、Bootloader的概念与作用Bootloader,简称“boot loader”,中文意为“引导加载程序”,是计算机启动时加载操作系统之前执行的一段程序。
它的主要作用是在计算机加电后,将操作系统加载到内存中并启动操作系统。
二、Bootloader的种类与区别根据硬件平台和操作系统的不同,Bootloader有多种类型。
常见的有:1.BIOS Bootloader:适用于基于BIOS(Basic Input/Output System)的计算机,如传统的x86架构。
2.UEFI Bootloader:适用于基于UEFI(Unified Extensible Firmware Interface)的计算机,如现代的x86_64架构。
3.Linux Bootloader:主要用于加载Linux操作系统,如GRUB(GrandUnified Bootloader)。
4.Windows Bootloader:用于加载Windows操作系统,如NTLDR (Windows NT Loader)。
三、Bootloader的应用场景1.操作系统多重启动:允许用户在启动时选择不同的操作系统,如Windows和Linux。
2.操作系统修复:当操作系统无法正常启动时,通过Bootloader进入恢复模式,进行修复。
3.数据恢复:利用Bootloader启动特定的数据恢复工具,进行数据救援。
4.硬件测试:利用Bootloader启动硬件测试工具,如硬盘检测工具、内存检测工具等。
四、如何选择合适的Bootloader1.了解计算机硬件平台和操作系统:根据计算机使用的硬件架构和操作系统,选择相应的Bootloader。
bootload标准摘要:1.引导加载程序(Bootloader)简介2.Bootloader 的作用3.Bootloader 的两种类型:启动扇区和启动管理器4.常见的Bootloader 标准5.UEFI 标准简介6.UEFI 与传统Bootloader 的比较7.UEFI 的发展趋势和影响正文:引导加载程序(Bootloader)是计算机系统启动过程中的关键组件,负责将操作系统内核从存储介质加载到内存中并启动执行。
Bootloader 的主要作用是在计算机加电后初始化硬件,找到并加载操作系统的内核,从而使计算机能够正常运行。
Bootloader 分为两种类型:启动扇区和启动管理器。
启动扇区是计算机加电后BIOS 读取的第一个扇区,通常位于硬盘的0 磁道1 柱面1 扇区(也称为MBR,Master Boot Record),它包含一个引导程序,用于加载操作系统的内核。
而启动管理器则是在操作系统启动后,负责管理系统启动过程的程序。
在计算机发展过程中,出现了许多不同的Bootloader 标准。
早期常见的标准有:DOS 的IBM BIOS、微软的MS-DOS、GRUB(GRand UnifiedBootloader)等。
随着计算机技术的发展,UEFI(统一可扩展固件接口)标准逐渐成为主流。
UEFI 是一种基于x86 架构的Bootloader 标准,相较于传统的Bootloader,UEFI 具有更快的启动速度、更好的兼容性和更强的安全性。
UEFI 支持在计算机启动过程中直接访问网络,从而实现快速启动和网络唤醒等功能。
此外,UEFI 还支持启动多个操作系统,用户可以根据需要在UEFI 设置中选择要启动的操作系统。
UEFI 的出现对计算机产业产生了深远的影响。
随着UEFI 的普及,传统的Bootloader 逐渐被取代,计算机启动过程变得更加高效、安全和灵活。
此外,UEFI 也为计算机硬件和软件厂商提供了更大的创新空间,使得计算机技术得以不断进步。
基于UDS的Bootloder详解Bootloader是所有支持重编程的ECU必须具备的软件功能,在ECU运行过程中,执行的是应用软件和应用数据,仅当应用软件或应用数据无效或者上电之初,或者要求对其进行升级或特殊测试的时侯,才会运行Bootloader软件。
应用软件和应用数据可以同时编程或者相互独立编程,通常在ECU在刷入bootloader后,bootloader是无法再次更新的,除非拆件,不过现在这越来越多的主机厂要求Bootloader也要支持刷写。
Bootloader存储于被保护的flash区域,即使发生潜在错误时,控制器的应用软件始终可以刷新。
01Bootloader安全机制为确保刷写的安全,ECU需设计安全机制,避免以下几种情况:a. 来自非法源的下载动作;b. 当前刷新条件不满足;c.下载错误的应用软件或应用数据到ECU;d.软件之间不兼容;1、安全访问ECU通过诊断0x27服务,SEED&KEY机制进行安全访问服务限制,保证ECU 免遭未授权的编程动作影响。
2、刷新预条件ECU确保刷新时处于安全状态,条件不满足(如高压上电、低压异常或车速不为零)时,刷新服务请求将被拒绝。
3、完整性校验ECU对即将下载到flash的程序或数据进行完整性检查,当一个逻辑模块下载后,使用CRC32算法验证当前逻辑块的所有数据字节是否被正确传输和写入。
通过“检查编程完整性”例程控制激活ECU完整性校验。
当ECU接收到此服务请求时,Bootloader将计算下载数据字节的CRC32值,并将计算结果与诊断仪请求报文中发送的校验值进行比较。
4、一致性检查不兼容的软件不能配合使用,如果配合使用可能会使功能异常或产生致命性错误。
为此,ECU通过验证软件兼容性来检查刷新程序的一致性,包括应用软件与Bootloader软件、应用数据与应用软件检验等。
5、有效性检查ECU内部有一个标志位,用于标识应用软件是否有效。
Boot LoaderWindows CE最大程度继承了桌面版Windows的丰富功能,但是Windows CE并不是一个通用的安装版操作系统。
在形形色色的嵌入式设备世界里,一款CE系统通常只会针对某一种硬件平台生成。
一般来说,Windows CE的开发过程可以分为:0AL(OEM Abstraction Layer)、驱动、应用程序开发三个步骤。
其中,0AL开发最基本的一步是板级支持包(BSP),而BootLoader 设计则在BSP开发中具有极为关键的地位。
1.什么是BootLoader嵌入式系统的启动代码一般由两部分构成:引导代码和操作系统执行环境的初始化代码。
其中引导代码一般也由两部分构成:第一部分是板级、片级初始化代码,主要功能是通过设置寄存器初始化硬件的工作方式,如设置时钟、中断控制寄存器等,完成内存映射、初始化MMU等。
第二部分是装载程序,将操作系统和应用程序的映像从只读存储器装载或者拷贝到系统的RAM中并执行。
(1)什么是板级BSP?BSP(Board Support Package)是板级支持包,是介于主板硬件和操作系统之间的一层,主要是为了支持操作系统,使之能够更好的运行于硬件主板。
不同的操作系统对应于不同形式的BSP,例如WinCE的BSP和Linux的BSP相对于某CPU来说尽管实现的功能一样,可是写法和接口定义是完全不同的。
所以,BSP一定要按照该系统BSP的定义形式来写,这样才能与上层OS保持正确的接口,良好的支持上层OS。
(2)什么是Boot Loader在BSP中有一个重要的组成部分就是BootLoader,它是在操作系统内核运行之前运行的一段小程序。
通过这段小程序,可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,为调用操作系统内核准备好环境。
一般来说,在嵌入式世界里BootLoader 是严重地依赖于硬件的,因此想建立一个通用的 BootLoader 几乎是不可能的。
不同的 CPU 体系结构有不同的BootLoader,而且除了依赖于 CPU的体系结构外,BootLoader还依赖于具体的嵌入式板级设备的配置。
这也就是说,对于两块不同的嵌入式板而言,即使它们是基于同一种 CPU 结构而构建的,要想让运行在一块板子上的 BootLoader 程序也能运行在另一块板子上,通常也都需要修改 Bo otLoader 的源程序。
2.BootLoader在PC机与嵌入式的区别比较(1)引导程序在PC机和嵌入式上的区别一般来说,在PC的硬件平台上,由于硬件启动根本就不是通过BootLoader(而是通过B IOS),所以BootLoader就不需要对CPU加电后的初始化做任何工作。
在桌面系统中,有以下几种设备可以作为启动设备使用:硬盘、USB盘、光盘驱动器、还有网卡的Boot ROM等。
但无论选择了哪一种启动设备,操作系统都会去将该设备起始地址的内容读入内存,BIOS 将控制移交给引导装载程序。
如果启动设备是IDE硬盘,这时通常将引导装载程序装入第一个扇区(通常被称做主引导扇区,MBR),然后将内容读入内存再运行。
在嵌入式平台上,引导装载程序是在硬件上执行的第一段代码,通常将引导程序放置在不易丢失的存储器的开始地址或者是系统冷启动时PC寄存器的初始值。
在嵌入式系统中,通常并没有像BIOS那样的固件程序,因此整个系统的加载启动任务就完全由BootLoader来完成,引导程序完成自己的任务后,也将控制权移交给操作系统。
因此,BootLoader是最先被执行的程序,所以就必须包括加电初始化程序。
(2)BSP在嵌入式和桌面Windows中的区别其实运行在PC机上的桌面Windows或Linux系统也是有BSP的,只是PC机均采用统一的X 86体系架构,这样操作系统的BSP相对X86架构是单一确定的,不需要做任何修改就可以很容易支持OS在X86上正常运行,所以在PC机上谈论BSP这个概念也就没什么意义了。
而对嵌入式系统来说情况则完全不同,目前市场上有多种结构的嵌入式CPU(如X86,ARM, MIPS等),而且为了性能的需要,外围设备也会有不同的选择和定义。
因此,一个嵌入式操作系统针对不同的CPU会有不同的BSP,又即使同一种CPU,由于外设的差别其BSP也会不一样。
所以根据硬件设计编写和修改BSP,是保证嵌入式系统正常运行的一个重要环节。
(3)嵌入式BSP与PC机主板BIOS的区别PC机主板上的BIOS首先是负责在电脑开启时检测、初始化系统设备、装入操作系统并调度操作系统向硬件发出的指令。
它的Firmware代码是在芯片生产过程中固化的,一般来说用户是无法修改。
然后,为下载运行操作系统做准备,把操作系统由硬盘加载到内存,并传递一些硬件接口设置给系统。
在OS正常运行后,BIOS的作用基本上也就完成了,这就是为什么更改BIOS一定要重新关机开机。
从这个角度来说,PC机BIOS的作用就象嵌入式系统中的Bootloader,都是最底层的引导软件,初始化主板的基本设置,为接收外部程序做硬件上的准备。
但与Bootloader不同的是,BIOS在装载OS系统的同时还传递一些参数设置,而Bootloader只是简单的装载系统。
尽管BSP的开始部分和BIOS所做的工作类似,可是大部分又和BIOS不同,作用也完全不同。
因为BSP还包含和系统有关的基本驱动,程序员可以编程修改BSP,在BSP中任意添加一些和系统无关的驱动或程序,甚至可以把上层开发的统统放到BSP中。
而BIOS程序是用户不能更改和编译编程的,只能对参数进行修改设置,当然更不会包含一些基本的硬件驱动。
3.Boot Loader的启动流程大多数 BootLoader 都包含两种不同的操作模式:启动加载模式和下载模式。
启动加载模式也称为自主模式,即 BootLoader 从目标机上的某个固态存储设备上将操作系统加载到 RAM 中运行,整个过程并没有用户的介入。
而下载模式则是目标机上的 BootLoader 将通过串口连接或网络连接等通信手段从主机(Host)下载文件。
从主机下载的文件通常首先被 Boot Loader 保存到目标机的 RAM 中,然后再被 BootLoader 写到目标机上的FLASH 类固态存储设备中。
这种模式通常在第一次安装内核与根文件系统时被使用,或系统更新时使用。
一般嵌入式系统的Boot Loader较为常用的是启动加载模式,它的加载流程也是我们要重点讨论的内容。
(1)启动部分启动部分主要是实现初始化硬件的功能。
在参考板的BootLoader目录下,会发现一些. s文件,可能会是init.s或者是reset.s等,这样的文件是CPU加电后最先执行的代码。
接着Oal.exe通过Startup函数完成硬件的初始化,StartUp 函数是Boot Loader的入口函数。
该函数一般是使用汇编语言编写,与CPU关系非常紧密,能完成初始化CPU、内存等核心硬件。
Startup.s代码与硬件平台的Bootloader启动代码共用。
如果是热启动,即在该函数调用之前已经启动了Bootloader程序,相当基本硬件初始化已经完成,则直接跳转到OALSta rtUp函数中;否则需要进行硬件中断屏蔽、内存、系统时钟频率、电源管理等硬件的基本初始化过程。
在系统硬件初始化完毕之后,Startup调用OALStartUp函数,OALStartUp函数主要完成将OEMAddressTable表传递给内核,然后调用KernelStart函数跳转到内核。
因此,这部分工作是BootLoader的一大重点。
(2)主控部分StartUp 函数初始化CPU等核心硬件并跳转到Main函数后,系统就会转入C语言代码执行环境。
这时函数分为3个模块:BLCOMMON、Download Function、FLASH Function。
其中BL COMMON模块是由微软提供的,执行一些逻辑上的功能,因此建议开发人员不要对其进行修改。
而Download Function、FLASH Function中的函数与硬件平台息息相关,因此对于每种硬件平台都要将函数的实现进行修改。
其中,BLCOMMON库是与BootLoader程序链接在一起的,BLCOMMON库的入口点为Bootlo aderMain函数,它是Startup汇编函数完成后跳转至该入口的。
Main函数的主要任务时调用BLCommon中的 BootloaderMain()函数,这是BootLoader的主控函数,它控制了BootLo ader的完整执行流程。
这部分代码由C语言实现,是BLCOMMON代码的一部分,它可以用来执行比较复杂的操作。
比如检测内存和Flash的有效性、检测外部设备接口、检测串口并且向已经连接的主机发送调试信息、通过串口等待命令、启动网络接口、建立内存映射等汇编无法完成的工作。
(3)下载部分一般在平台调试完毕后,可以在不用人工干预的情况下自动加载CE,这也是BootLoade r的功能之一。
而在调试阶段时,这需要通过Loader所支持的命令来进行操作的,借助于这些命令不仅可以完成硬件平台的部分测试,还能完成CE的BootLoader程序最为重要的一个功能--下载CE映像。
如果说硬件调试功能可以由其它的程序代替而不放入BootLoader 中,但是下载映像文件却是BootLoader必需的功能。
CE映像文件通常叫做nk.bin,它是Windows CE二进制数据格式文件,不仅包含了有效的程序代码,还有按照一定规则加入的控制信息。
当然,也可以选择生成.sre格式的代码文件,但是相于对前一种格式,它的代码要长很多,所需要的下载时间也更长。
(4)支持DOC部份对于WinCE操作系统而言,丰富的多媒体功能是其一大特点。
但是随之而来的问题是,如果选择了图形界面和中文支持,系统很容易大大超出嵌入式系统上百KB的数量级。
而DOC(D isk On Chip)则提供了一种相对廉价的大存储容量的解决方案。
DOC本质上是一种加以软件控制的NAND格式的Flash,通过TFFS这一软件层提供对Win CE的支持。
由于DOC不能像内存一样被直接访问,所以其加载WinCE的过程有些特殊,必须要在BootLoader中加入专门的代码,才能使用DOC来存放WinCE映像文件。
4.Boot Loader的开发经验总结(1)嵌入式系统中,Bootloader的意义与作用与PC上的BIOS有点类似,它对开发板上的主要部件如CPU、SDRAM、FLASH、串口等进行了初始化,也可以使用Bootloader下载文件到开发板和启动系统等。
因此,一个功能比较强大的Bootloader已经相当于一个微型的操作系统了。