norflsh nandflash之类的存储设备启动bootloader概述
NAND結構能提供極高的單元密度,可以達到高存儲密度,并且寫入和擦除的速度也很快。應用NAND的困難在于flash的管理和需要特殊的系統接口。優點:大存儲容量,而且便宜。缺點,就是無法尋址直接運行程序,只能存儲數據。另外NAND FLASH 非常容易出現壞區,所以需要有校驗的算法。
??? 任何flash器件的寫入操作只能在空或已擦除的單元內進行
(1)NAND器件執行擦除操作是十分簡單的,而NOR則要求在進行擦除前先要將目標塊內所有的位都寫為1。
(2)擦除NOR器件時是以64~128KB的塊進行的,執行一個寫入/擦除操作的時間為5s,NORFLASHSECTOR擦除時間視品牌、大小不同而不同,比如,4MFLASH,有的SECTOR擦除時間為60ms,而有的需要最大6S。與此相反,擦除NAND器件是以8~32KB的塊進行的,執行相同的操作最多只需要4ms
(3)當選擇存儲解決方案時,設計師必須權衡以下的各項因素。
●NOR的讀速度比NAND稍快一些。
●NAND的寫入速度比NOR快很多。
●NAND的4ms擦除速度遠比NOR的5s快。
●大多數寫入操作需要先進行擦除操作。
●NAND的擦除單元更小,相應的擦除電路更少。
(4)接口差別
NORflash帶有SRAM接口,有足夠的地址引腳來尋址,可以很容易地存取其內部的每一個字節。
NAND器件使用復雜的I/O口來串行地存取數據,各個產品或廠商的方法可能各不相同。8個引腳用來傳送控制、地址和數據信息。NAND讀和寫操作采用512字節的塊,這一點有點像硬盤管理此類操作,因此,基于NAND的存儲器就可以取代硬盤或其他塊設備。
(5)容量差別:
??? NORflash占據了容量為1~16MB閃存市場的大部分,而NANDflash只是用在8~128MB的產品當中,這也說明NOR主要應用在代碼存儲介質中,NAND適合于數據存儲。
(6)可靠性和耐用性
-壽命(耐用性)
在NAND閃存中每個塊的最大擦寫次數是一百萬次,而NOR的擦寫次數是十萬次。NAND存儲器除了具有10比1的塊擦除周期優勢,典型的NAND塊尺寸要比NOR器件小8倍,每個NAND存儲器塊在給定的時間內的刪除次數要少一些。
-位交換
所有flash器件都受位交換現象的困擾。位真的改變了,就必須采用錯誤探測/錯誤更正(EDC/ECC)算法。位反轉的問題更多見于NAND閃存,在使用NAND閃存的時候,應使用EDC/ECC算法。用NAND存儲多媒體信息時倒不是致命的。當然,如果用本地存儲設備來存儲操作系統、配置文件或其他敏感信息時,必須使用EDC/ECC系統以確保可靠性。
-壞塊處理
NAND器件中的壞塊是隨機分布的,NAND器件需要對介質進行初始化掃描以發現壞塊,并將壞塊標記為不可用。在已制成的器件中,如果通過可靠的方法不能進行這項處理,將導致高故障率。
(7)易于使用
可以非常直接地使用基于NOR的閃存。在使用NAND器件時,必須先寫入驅動程序,才能繼續執行其他操作。向NAND器件寫入信息需要相當的技巧,因為設計師絕不能向壞塊寫入,這就意味著在NAND器件上自始至終都必須進行虛擬映射。
(8)軟件支持
在NOR器件上運行代碼不需要任何的軟件支持,在NAND器件上進行同樣操作時,通常需要驅動程序,也就是內存技術驅動程序(MTD),NAND和NOR器件在進行寫入和擦除操作時都需要MTD。
??? 使用NOR器件時所需要的MTD要相對少一些,許多廠商都提供用于NOR器件的更高級軟件,這其中包括M-System的TrueFFS驅動,該驅動被WindRiverSystem、Microsoft、QNXSoftwareSystem、Symbian和Intel等廠商所采用。驅動還用于對DiskOnChip產品進行仿真和NAND閃存的管理,包括糾錯、壞塊處理和損耗平衡。
(9)在掌上電腦里要使用NAND FLASH 存儲數據和程序,但是必須有NOR FLASH來啟動。除了SAMSUNG處理器,其他用在掌上電腦的主流處理器還不支持直接由NAND FLASH 啟動程序。因此,必須先用一片小的NOR FLASH 啟動機器,在把OS等軟件從NAND FLASH 載入SDRAM中運行才行
2、Bootloader的概念就是一個用于引導的loader,在系統上電的時候最先被運行,然后對硬件平臺做最基本的初始化,最后把操作系統加載起來。不同的嵌入式操作系統都有自己的Bootloader,但是本質功能都是一樣的。
在WinCE中用的最多的就是EBOOT,是一個基于網絡的Bootloader,而且可以根據需要帶有命令行菜單功能,網絡調試功能以及文件系統的相關功能。在這里我只談ARM平臺的引導,因為其他架構的CPU我沒用過,就不吹牛了。一般基于不同的硬件設計,會有不同的引導方式:
NORFlash Boot:
一般ARM處理器的片選0都會接有NORFlash,這樣在ARM上電以后,會從0地址開始執行程序,也就是從NORFlash的0地址開始執行。所以把EBOOT燒到NORFlash的0地址開始的地方,這樣在上電以后,EBOOT開始執行,可以在NORFlash里面執行,也可以自拷貝到SDRAM中執行。最后加載WinCE image并運行。
NANDFlash Boot with EBOOT:
由于NORFlash容量小,價格貴,現在很多ARM處理器支持NandFlash引導。不同廠家的處理器對Nandflash的引導略有區別,具體要看datasheet。但是本質就是先從Nandflash中讀出一個小的Loader來運行,這個Loader再從Nandflash中加載EBOOT到SDRAM中運行,最后EBOOT加載WinCE image,就是NK.bin。
NANDFlash Boot without EBOOT:
如果在NandFlash引導的時候不需要EBOOT,也可以不用EBOOT。這樣就是系統啟動后從Nandflash中加載一個小的Loader,小的Loader對硬件系統作基本的初始化,然后直接加載WinCE image,一般應該是NK.nb0,然后運行。
這里來說一下NK.bin與NK.nb0,兩個不同的WinCE image。
NK.nb0:就是一個可以直接運行的WinCE映像文件,直接拷貝到SDRAM中就可以運行。
NK.bin:被稱為Windows CE binary image data format文件格式,是一種包含了多個獨立紀錄(Section)的二進制文件。在加載的時候,需要分別加載,不同的Section加載到不同的地方。所以NK.bin需要Bootloader進行解釋性加載。但是他的Size會比NK.nb0小??梢允褂胿iewbin命令查詢NK.bin中的紀錄信息。
viewbin –rec nk.bin
前面已經講過了一般系統會使用到的引導方式,下面介紹一下EBOOT。在WinCE中EBOOT一個作用可以加載WinCE image,還可以通過網絡配合Platform Builder下載WinCE image進行調試。在開發一個新的BSP的時候,首先會基于一個相似的平臺的BSP進行克隆,然后要做的就是要開發和調試EBOOT了,EBOOT的架構如圖:
BLCOMMON:相當于EBOOT的一個基本框架,主要完成bootloader相關內存的分配,解析NK.bin文件并進行效驗,初始化平臺,通過網絡下載image等功能。
OEM Code:主要是基于硬件平臺,為BLCOMMON提供相應的接口函數,幫助完成相應的功能。
Eboot:一個小的網絡協議棧,為網絡下載image提供DHCP,TFTP,UDP等網絡服務功能。
Network Driver:硬件平臺的網絡驅動部分,支持上層的網絡功能。
Bootpart:為Flash設備提供分區功能,bootloader可以創建一個BinFS分區和一個文件系統分區。還可以用它來創建一個引導分區用來存放引導參數。
Flash Memory:硬件平臺的Flash驅動。
3、其他啟動方式
? ? eeprom也是可以的,跟norflash啟動方式一樣。而rom就不行了,,因為她是只讀的,不能對bootloader進行燒寫。像norflash之類的存儲設備不需要MTD支持,是因為她們有足夠的地址引腳來尋址。而norflash則是地址、數據復用的。
轉載于:https://www.cnblogs.com/gmh915/archive/2009/03/27/1945434.html
總結
以上是生活随笔為你收集整理的norflsh nandflash之类的存储设备启动bootloader概述的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: arp 命令最简单的小应用
- 下一篇: 小米空气净化器滤芯怎么重置(小米官方售后