Bootloader NORFLASH NANDFlash EBOOT NBOOT UBOOT SDRAM NK.bin N...

 

理清一下Bootloader NORFLASH NANDFlash EBOOT NBOOT UBOOT SDRAM NK.bin NK.nb0的关系

一、在掌上电脑里要使用NAND FLASH存储数据和程序,但是必须有NOR FLASH来启动。除了SAMSUNG处理器,其他用在掌上电脑的主流处理器还不支持直接由NAND FLASH启动程序。因此,必须先用一片小的NOR FLASH启动机器,再把OS等软件从NAND FLASH载入SDRAM中运行。

二、Bootloader的概念就是一个用于引导的loader,在系统上电的时候最先被运行,然后对硬件平台做最基本的初始化,最后把操作系统加载起来。不同的嵌入式操作系统都有自己的Bootloader,但是本质功能都是一样的。

三、在WinCE中用的最多的就是EBOOT,是一个基于网络的Bootloader,而且可以根据需要带有命令行菜单功能,网络调试功能以及文件系统的相关功能。在这里我只谈ARM平台的引导,一般基于不同的硬件设计,会有不同的引导方式:

1、NORFlash Boot:一般ARM处理器的片选0都会接有NORFlash,这样在ARM上电以后,会从0地址开始执行程序,也就是从NORFlash的0地址开始执行。所以把EBOOT烧到NORFlash的0地址开始的地方,这样在上电以后,EBOOT在NORFlash里面开始执行,也可以自拷贝到SDRAM中执行。最后加载WinCE image并运行。

2、NANDFlash Boot with EBOOT:由于NORFlash容量小,价格贵,现在很多ARM处理器支持NandFlash引导。不同厂家的处理器对Nandflash的引导略有区别,具体要看datasheet。但是本质就是先从Nandflash中读出一个小的Loader来运行,这个Loader再从Nandflash中加载EBOOT到SDRAM中运行,最后EBOOT加载WinCE image,就是NK.bin。
a、如果在NandFlash引导的时候不需要EBOOT,也可以不用EBOOT。这样就是系统启动 后从Nandflash中加载一个小的Loader,小的Loader对硬件系统作基本的初始化,然后 直接加载WinCE image,一般应该是NK.nb0,然后运行。

3、这里来说一下NK.bin与NK.nb0,两个不同的WinCE image。
a、NK.nb0:就是一个可以直接运行的WinCE映像文件,直接拷贝到SDRAM中就可以运行。
b、NK.bin:被称为Windows CE binary image data format文件格式,是一种包含了多个独立纪录(Section)的二进制文件。在加载的时候,需要分别加载,不同的Section加载到不同的地方。所以NK.bin需要Bootloader进行解释性加载。但是他的Size会比NK.nb0小。可以使用viewbin命令查询NK.bin中的纪录信息。

nboot,eboot和uboot三者均为bootloader。

----nboot是samsung系列cpu为了能将nondflash里的前4KB程序复制到SRAM中运行,而写的。nboot很小(小于等于4k),一般用在从nandflash启动的情况,nandflash不支持xip,所以必须有一个可以执行的程序将烧写在其中的eboot搬到内存中,nboot就是干这个的。所以nboot一般配合eboot一起使用。

----eboot,即ethernet boot,因为起始时,都是通过网口更新的。现在大都加入了USB下载功能,eboot可以单独使用,就是把eboot烧写到norflash中,norflash支持xip,所以eboot可以自己把自己搬到内存中。

----uboot是linux下主要使用的,不过现在已经剥离开来,ce下已经可以移植了,只是用来debug的多,实际合入工程的少,毕竟与wince系统的契合度不高。

NOR:EBoot->WinCE(NK.bin)
NAND:NBOOT->EBoot->WinCE(NK.bin)
NAND:EBoot->WinCE(NK.nb0)

 

你可能感兴趣的:(Bootloader NORFLASH NANDFlash EBOOT NBOOT UBOOT SDRAM NK.bin N...)