2.BootLoader在PC机与嵌入式的区别比较
(1)引导程序在PC机和嵌入式上的区别
一般来说,在PC的硬件平台上,由于硬件启动根本就不是通过BootLoader(而是通过BIOS),所以BootLoader就不需要对CPU加电后的初始化做任何工作。在桌面系统中,有以下几种设备可以作为启动设备使用:硬盘、USB盘、光盘驱动器、还有网卡的Boot ROM等。但无论选择了哪一种启动设备,操作系统都会去将该设备起始地址的内容读入内存,BIOS将控制移交给引导装载程序。如果启动设备是IDE硬盘,这时通常将引导装载程序装入第一个扇区(通常被称做主引导扇区,MBR),然后将内容读入内存再运行。
在嵌入式平台上,引导装载程序是在硬件上执行的第一段代码,通常将引导程序放置在不易丢失的存储器的开始地址或者是系统冷启动时PC寄存器的初始值。在嵌入式系统中,通常并没有像BIOS那样的固件程序,因此整个系统的加载启动任务就完全由BootLoader来完成,引导程序完成自己的任务后,也将控制权移交给操作系统。因此,BootLoader是最先被执行的程序,所以就必须包括加电初始化程序。
(2)BSP在嵌入式和桌面Windows中的区别
其实运行在PC机上的桌面Windows或Linux系统也是有BSP的,只是PC机均采用统一的X86体系架构,这样操作系统的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程序是用户不能更改和编译编程的,只能对参数进行修改设置,当然更不会包含一些基本的硬件驱动。