SCH平臺(tái)Booloader和Nandflash學(xué)習(xí)交流_第1頁(yè)
SCH平臺(tái)Booloader和Nandflash學(xué)習(xí)交流_第2頁(yè)
SCH平臺(tái)Booloader和Nandflash學(xué)習(xí)交流_第3頁(yè)
SCH平臺(tái)Booloader和Nandflash學(xué)習(xí)交流_第4頁(yè)
SCH平臺(tái)Booloader和Nandflash學(xué)習(xí)交流_第5頁(yè)
已閱讀5頁(yè),還剩57頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

SC6800H平臺(tái)Bootloader和Nandflash學(xué)習(xí)交流Author:車(chē)國(guó)盛Date:2012.04.11內(nèi)容提綱1.Bootloader簡(jiǎn)介2.為什么需要Bootloader?3.Bootloader存放在哪里?為什么?4.Bootloader運(yùn)行在哪里?5.Bootloader代碼構(gòu)架是怎樣的?6.Bootparameter如何設(shè)定的?7.Bootloader代碼解讀8.Nandflash簡(jiǎn)介9.Nandflash和Norflash比較10.Nandflash工作原理11.Nandflash的ECC簡(jiǎn)介12.Nandflash常用的軟件管理方案13.6800H平臺(tái)NandInterface簡(jiǎn)介14.6800H平臺(tái)Nandflash驅(qū)動(dòng)配置15.6800H平臺(tái)Nandflash分區(qū)Bootloader簡(jiǎn)介Bootloader就是一段小程序,它在系統(tǒng)上電時(shí)開(kāi)始執(zhí)行,初始化硬件設(shè)備、準(zhǔn)備好軟件環(huán)境,最后調(diào)用系統(tǒng)內(nèi)核。典型的嵌入式系統(tǒng)Bootloader有Blob(bootloadobject)和U-boot(universalbootloader),其中U-boot支持ARM,MIPS,X86,Nios,可啟動(dòng)VxWorks,QNX,Linux什么是Bootloader?為什么需要BootloaderNand與Nor的區(qū)別

Nand不能runinplace,Nand不支持即時(shí)的讀寫(xiě)操作,需要將代碼拷貝到RAM執(zhí)行;Nand會(huì)有壞塊,需要一個(gè)壞塊管理模塊,這個(gè)模塊相對(duì)來(lái)說(shuō)還是比較復(fù)雜的。Nand的壞塊特性決定了從Nand拷貝代碼到RAM是一個(gè)相對(duì)比較復(fù)雜的動(dòng)作。SDRAMSDRAM需要初始化,這意味著最早的一些代碼不能在SDRAM中執(zhí)行,需要先在IRAM中運(yùn)行;IRAM很小。

Bootloader存放在哪里?為什么?在nand的第一個(gè)block

NAND_PartTable_XXX.c配置文件NBL_OFFSET即是Bootloader的位置,可以看到是0。為什么在這里:

Nand的第一個(gè)block永遠(yuǎn)不會(huì)損壞的特性決定了可以很簡(jiǎn)單的讀取這個(gè)塊。

Bootloader運(yùn)行在哪里?boot0運(yùn)行在IRAM,boot1運(yùn)行在SDRAM。boot0的運(yùn)行地址可以從scatter0.scf中找到如下:ROM_EXEC0x400000000x8000{

boot0_entry.o(Reset,+First)sdram_init.o(+RO,+RW,+ZI)prod_cfg.o(+RO,+RW,+ZI)*.o(+RO,+RW)}

Bootloader運(yùn)行在哪里?boot1的運(yùn)行地址可以從scatter1.scf中找到如下:ROM_EXEC0x10000000x14000{

boot1_entry.o(Reset,+First)*.o(+RO,+RW)}

Bootloader代碼構(gòu)架是怎樣的?Bootloader分兩部分:boot0和boot1。boot0引導(dǎo)boot1,boot1引導(dǎo)EXEC_KERNEL_IMAGE.bin。boot0不超過(guò)16K,boot1不超過(guò)128K。boot0為什么不超過(guò)16K?(Nand第一個(gè)block永遠(yuǎn)不會(huì)壞,不做壞塊管理。一個(gè)block可能是16K或者128K,為了統(tǒng)一處理,當(dāng)16K來(lái)使用。)boot1為什么不超過(guò)128K?(暫時(shí)不確定)在scatter中boot0和boot1的大小設(shè)置為:scatter0.scf:ROM_LOAD0x400000000x4000;0x4000->16Kscatter1.scf:ROM_LOAD0x10000000x14000;0x14000->80K

Bootloader代碼構(gòu)架是怎樣的?boot0入口地址:0x40000000(IRAM起始地址)boot0主要工作:boot0_entry.s

Remap->初始化SDRAM->__main->聲明bootparameter并分配空間boot0_main.c

將boot1拷貝到SDRAM->set_pc到SDRAM執(zhí)行boot1。

Bootloader代碼構(gòu)架是怎樣的?boot1入口地址:0x01000000(SDRAM)boot1主要工作:boot1_entry.s

__main->聲明bootparameter并分配空間。boot1_main.c

將EXEC_KERNEL_IMAGE.bin拷貝到SDRAM,并set_pc到SDRAM執(zhí)行EXEC_KERNEL_IMAGE.bin。Kernel的運(yùn)行地址:由函數(shù)PUBLICvoidcall_kernel(void){set_pc(SDRAM_BASE_ADDR);}可以看出,SDRAM_BASE_ADDR為0地址,即EXEC_KERNEL_IMAGE.bin存放的起始地址。Bootparameter如何何設(shè)設(shè)定定的的??bootparameter(nand分分區(qū)區(qū)表表等等相相關(guān)關(guān)信信息息)的的設(shè)設(shè)定定在在fdl相相關(guān)關(guān)代代碼碼中中,,該部部分分代代碼碼已封封裝裝。。在函函數(shù)數(shù)BOOLEANcopyKernelImg(void)中中,,可可以看出出,,從從flash中中讀讀取取出出來(lái)來(lái)bootparameter存存放放在在bootParam中中。。_copyImg(ftlHandle,SDRAM_BASE_ADDR,osInfo->offset,osInfo->size,ftlPartitionInfo.sctSize)這這里里可可以以看看到到一一部部分分bootparameter參參數(shù)數(shù)。。Bootloader代碼碼解解讀讀主要要文文件件::目錄錄fdl_bootloader\bootloader\srcboot0_entry.sboot0_main.cboot1_entry.sboot1_main.cNandFlash簡(jiǎn)介介Flash存儲(chǔ)儲(chǔ)器器又又稱稱閃閃存存,,是是一一種種可可在在線線多多次次擦擦除除的的非非易易失失性性存存儲(chǔ)儲(chǔ)器器,,即即掉掉電電后后數(shù)數(shù)據(jù)據(jù)不不會(huì)會(huì)丟丟失失。。Flash存儲(chǔ)儲(chǔ)器器還還具具有有體體積積小小、、功功耗耗低低、、抗抗振振性性強(qiáng)強(qiáng)等等優(yōu)優(yōu)點(diǎn)點(diǎn)。。Flash存儲(chǔ)儲(chǔ)器器主主要要分分為為兩兩種種:一種種為為Nor型Flash,另另一一種種為為Nand型Flash。Nand內(nèi)內(nèi)部部采采用用非線線性性宏單單元元模模式式,,為為固固態(tài)態(tài)大大容容量量?jī)?nèi)內(nèi)存存的的實(shí)實(shí)現(xiàn)現(xiàn)提提供供了了廉廉價(jià)價(jià)有有效效的的解解決決方方案案。。Nand存存儲(chǔ)儲(chǔ)器器具具有有容容量量較較大大,,改改寫(xiě)寫(xiě)速速度度快快等等優(yōu)優(yōu)點(diǎn)點(diǎn),,適適用用于于大大量量數(shù)數(shù)據(jù)據(jù)的的存存儲(chǔ)儲(chǔ),,因因而而在在業(yè)業(yè)界界得得到到了了越越來(lái)來(lái)越越廣廣泛泛的的應(yīng)應(yīng)用用。。Nandflash和Norflash比較接口比較較:Nor帶有SRAM接口,有足夠的的地址引引腳來(lái)尋尋址,可以很容容易地存存取其內(nèi)內(nèi)部的每每一個(gè)字字節(jié)。Nor的特點(diǎn)是是芯片內(nèi)內(nèi)執(zhí)行(XIP,eXecuteInPlace),這樣應(yīng)用用程序可可以直接接在Norflash內(nèi)運(yùn)行,可以不把把代碼讀讀到系統(tǒng)統(tǒng)RAM中。例如如uboot中的ro段可以直直接在Norflash上運(yùn)行,只需要把把rw和zi段拷貝到到RAM中運(yùn)行即即可。Nand器件使用用復(fù)雜的的I/O口來(lái)串行行地存取取數(shù)據(jù),I/O引腳用來(lái)來(lái)傳送控控制、地地址和數(shù)數(shù)據(jù)信息息,由于時(shí)序序較為復(fù)復(fù)雜,所以一般般CPU集成Nand控制器。。Nand讀和寫(xiě)操操作采用用512字節(jié)的塊塊,這一點(diǎn)有有點(diǎn)像硬硬盤(pán)管理理此類操操作。Nand是非線性性存儲(chǔ)器器,不支持eXecuteInPlace。Nandflash和Norflash比較容量和成成本比較較:相比起Nand來(lái)說(shuō),Nor的容量要要小,一般在1-16MByte左右,一些新工工藝采用用了芯片片疊加技技術(shù)可以以把Nor的容量做做得大一一些。在價(jià)格方方面,Nor相比Nand來(lái)說(shuō)要高高一些。。Nand生產(chǎn)過(guò)程程更為簡(jiǎn)簡(jiǎn)單,結(jié)構(gòu)可以以在給定定的模具具尺寸內(nèi)內(nèi)提供更更高的容容量,這樣也就就相應(yīng)地地降低了了價(jià)格。。Nandflash和Norflash比較其他方面面如可靠靠性,耐用性等等方面的的比較,,在這里里就不一一一詳述述了。Nandflash工作原理理-組成結(jié)構(gòu)構(gòu)Nand的數(shù)據(jù)是是以bit的方式保保存在memorycell,一般來(lái)說(shuō)說(shuō),一個(gè)cell中只能存存儲(chǔ)一個(gè)個(gè)bit。這些cell以8個(gè)或者16個(gè)為單位位,連成bitline,形成所謂謂的byte(x8)/word(x16),這就是NandDevice的位寬(當(dāng)然還有有32bit或更大的的位寬的的)。若干個(gè)Line會(huì)再組成成Page。若干個(gè)Page組成block。若干個(gè)block組成Plane。若干個(gè)Plane組成Device。Nandflash工作原理理-組成結(jié)構(gòu)構(gòu)這里以三三星的Nand型號(hào)K9F1208為例子說(shuō)說(shuō)明Nand的組成結(jié)結(jié)構(gòu)。Nandflash工作原理理-組成結(jié)構(gòu)構(gòu)對(duì)于上圖圖的Nand芯片K9F1208:每頁(yè)528Bytes:512byte(MainArea)+16byte(SpareArea)。每32個(gè)page形成一個(gè)個(gè)Block(32*528B)。4096個(gè)block組成一片片Nand芯片K9F1208。故總?cè)萑萘繛闉?096*(32*528B)=66MB,其中中的2MB是用來(lái)來(lái)保存存ECC校驗(yàn)碼碼等額額外數(shù)數(shù)據(jù)的的,,實(shí)際際中可可使用用的為為64MB。說(shuō)明::這只只是針針對(duì)芯芯片K9F1208的組成成結(jié)構(gòu)構(gòu),不不同的的芯片片可以以根據(jù)據(jù)datasheet確定。。Nandflash工作原原理-組成結(jié)結(jié)構(gòu)對(duì)于上上圖的的Nand芯片K9F1208:1Page=528Byte,其中512byte為MainArea,16byte為SpareArea。1Block=32Page*528Byte。1Device=4096(塊)*32(頁(yè))*528(字節(jié))*8(位)=528Mbit=66Mbyte總?cè)萘苛繛?6Mbyte,其中的的2Mbyte是用來(lái)來(lái)保存存ECC校驗(yàn)碼碼等額額外數(shù)數(shù)據(jù)的的,實(shí)際中中可使使用的的為64Mbyte。說(shuō)明::這只只是針針對(duì)芯芯片K9F1208的組成成結(jié)構(gòu)構(gòu),不不同的的芯片片可以以根據(jù)據(jù)datasheet確定。。Nandflash工作原原理-組成結(jié)結(jié)構(gòu)Page分為main和spare區(qū)。main是用來(lái)來(lái)保存存數(shù)據(jù)據(jù)的,spare區(qū)一般般用來(lái)來(lái)標(biāo)記記壞塊塊以及及保存存對(duì)main區(qū)數(shù)據(jù)據(jù)的ECC校驗(yàn)碼碼等。。spare區(qū)大小小:(每512+16)byte就有16byte作為spare區(qū)。spare區(qū)這16byte格式:不同廠廠家的的格式式可能能有所所區(qū)別別,沒(méi)有統(tǒng)統(tǒng)一的的標(biāo)準(zhǔn)準(zhǔn)格式式。Nandflash工作原原理-組成結(jié)結(jié)構(gòu)以下是是spare區(qū)的一一個(gè)例例子::LSN0LSN1LSN2RESERVEDRESERVEDBIECC0ECC1ECC2S-ECC0S-ECC1RESERVEDRESERVEDRESERVEDRESERVEDRESERVED其中::LSN:LogicalSectorNumber(跟壞塊塊管理理有關(guān)關(guān))ECCa,ECCb,ECCc:ECCcodeforMainareadata(ErrorCheckingandCorrection)S_ECCa,S_ECCb:ECCcodeforLSNdataBI:BadblockInformationNandflash工作原原理-尋址剛才算算的容容量是是有64Mbyte的空間間,225bit<64Mbyte<226bit也就是是說(shuō)需需要26位地址址傳送送,可是看看Nand的原理理圖發(fā)發(fā)現(xiàn)有有IO0-IO7,它是怎怎么尋尋址的的呢?Nandflash工作原原理-尋址看看下下面完完整的的ArrayOrganizationNandflash工作原原理-尋址原來(lái)Nand并不是是直接接通過(guò)過(guò)里面面的存存儲(chǔ)物物理層層,而是有有一個(gè)個(gè)專門(mén)門(mén)的頁(yè)頁(yè)寄存存器來(lái)來(lái)管理理的。。不論論是什什么操操作都都要首首先通通過(guò)pageregsiter。從上圖圖來(lái)看看,A0-A7是頁(yè)內(nèi)尋尋址,也叫列列尋址址,也就是是512尋址,不過(guò)A0-A7才8位,最大也也就尋尋址256?實(shí)質(zhì)質(zhì)上還還有一一位A8,A8是由Nand里面的的某個(gè)個(gè)硬件件電路路根據(jù)據(jù)相關(guān)關(guān)的命命令而而置為為1或者0,這不用用軟件件來(lái)操操作。。例如說(shuō)說(shuō)要尋尋址0~255字節(jié),這樣的的話8位IO搞定了了,這時(shí)候候硬件件電路路就會(huì)會(huì)把A8置為0;如果果說(shuō)要要尋址址第484字節(jié),8位就不夠了了,硬件電路就就會(huì)把A8置1,完成所謂的的第484個(gè)字節(jié)尋址址。484的二進(jìn)制是是111100100,需要9位才行,A8此時(shí)就充當(dāng)當(dāng)?shù)?位,其余8位還是由IO完成的,這樣就可以以完成512字節(jié)內(nèi)的任任何尋址了了。Nandflash工作原理-尋址A9~A25是用來(lái)進(jìn)行行頁(yè)尋址的,也叫行尋址址,4096塊*32頁(yè)=131072頁(yè),用A9~A25就可以搞定定這么多頁(yè)頁(yè)了?;谝陨峡煽芍?A9~A25是進(jìn)行多達(dá)達(dá)上萬(wàn)頁(yè)尋尋址的,其實(shí)還可以以細(xì)分的,A9~A13是塊內(nèi)的32頁(yè)尋址,正好5位,2的5次方=32,一塊由32頁(yè)組成,A14~A25是用來(lái)進(jìn)行行塊尋址的,4096塊,也足夠了。。其實(shí)A14~A25還可以細(xì)分分,還有個(gè)叫““層”的概概念。Nand還被組織成成一種形式式,就是把整個(gè)個(gè)Nand分成若干個(gè)個(gè)層(plane),每層若干塊塊,每層里還有有個(gè)528字節(jié)的頁(yè)寄寄存器。如如下圖:Nandflash工作原理-尋址K9F1208分4個(gè)層,每層1024塊,所以說(shuō)A14~A15是用于plane尋址的,A16~A25用于Block尋址。Nandflash工作原理-指令集這里簡(jiǎn)單介介紹下Nand的指令操作作:Nandflash工作原理-壞塊管理為什么會(huì)出出現(xiàn)壞塊??由于Nand的工藝不能能保證Nand的MemoryArray在其生命周周期中保持持性能的可可靠,因此此,在Nand的生產(chǎn)中及及使用過(guò)程程中會(huì)產(chǎn)生生壞塊。說(shuō)明:Nand的第一個(gè)Block經(jīng)特殊工藝藝處理,默認(rèn)是不會(huì)會(huì)成為壞塊塊的,常用于系統(tǒng)統(tǒng)的引導(dǎo)。。NandFlash工作原理-壞塊管理壞塊的具體體表現(xiàn):當(dāng)編程/擦除這個(gè)塊塊時(shí),不能能將某些位位拉高,這這會(huì)造成PageProgram和BlockErase操作時(shí)的錯(cuò)錯(cuò)誤,相應(yīng)應(yīng)地反映到到StatusRegister的相應(yīng)位。。NandFlash工作原理-壞塊管理壞塊的種類類:先天性壞塊塊這種壞塊是是在生產(chǎn)過(guò)過(guò)程中產(chǎn)生生的,一般芯片原原廠都會(huì)在在出廠時(shí)都都會(huì)將壞塊塊第一個(gè)page的spare區(qū)的第6個(gè)byte標(biāo)記為非0xff的值。后天性壞塊塊這種壞塊是是在Nandflash使用過(guò)程中中產(chǎn)生的,如果BlockErase或者PageProgram錯(cuò)誤,就可以簡(jiǎn)單單地將這個(gè)個(gè)塊作為壞壞塊來(lái)處理理,這個(gè)時(shí)候需需要把壞塊塊標(biāo)記起來(lái)來(lái)。為了和和先天性壞壞塊信息保保持一致,將新發(fā)現(xiàn)的的壞塊的第第一個(gè)page的spare區(qū)的第6個(gè)Byte標(biāo)記為非0xff的值。NandFlash工作原理-壞塊管理壞塊的處理理:理解了先天天性壞塊和和后天性壞壞塊后,我們已明白白Nand出廠時(shí)在spare區(qū)中已經(jīng)反反映出了壞壞塊信息,因此,如果在擦除除一個(gè)塊之之前,一定要先檢檢查spare區(qū)的第6個(gè)byte是否是0xff,如果是就證證明這是一一個(gè)好塊,可以擦除;如果是非0xff,那么就不能能擦除。不過(guò),這樣處理可可能會(huì)錯(cuò)殺殺偽壞塊,因?yàn)樵谛酒僮鬟^(guò)程程中可能由由于電壓不不穩(wěn)定等偶偶然因素會(huì)會(huì)造成Nand操作的錯(cuò)誤誤。但是,為了數(shù)據(jù)的的可靠性及及軟件設(shè)計(jì)計(jì)的簡(jiǎn)單化化,壞塊一個(gè)也也不能放過(guò)過(guò)。NandFlash工作原理-壞塊管理錯(cuò)殺壞塊的的補(bǔ)救方法法:如果在對(duì)一一個(gè)塊的某某個(gè)page進(jìn)行編程的的時(shí)候發(fā)生生了錯(cuò)誤就就要把這個(gè)個(gè)塊標(biāo)記為為壞塊,首先就要把把其他好的的page里面的內(nèi)容容備份到另另外一個(gè)空空的好塊里里面,然后,把這個(gè)塊標(biāo)標(biāo)記為壞塊塊。當(dāng)發(fā)生生“錯(cuò)殺””之后,可以在進(jìn)行行完頁(yè)備份份之后,再將這個(gè)塊塊擦除一遍遍,如果BlockErase發(fā)生錯(cuò)誤,那就證明這這個(gè)塊是個(gè)個(gè)真正的壞壞塊。Nandflash的ECC簡(jiǎn)介ECC的全全稱是ErrorCheckingandCorrection,,是一種用用于Nand的差錯(cuò)錯(cuò)檢測(cè)和修修正算法。。如果操作作時(shí)序和電電路穩(wěn)定性性不存在問(wèn)問(wèn)題的話,,NandFlash出錯(cuò)錯(cuò)的時(shí)候一一般不會(huì)造造成整個(gè)Block或是Page不能能讀取或是是全部出錯(cuò)錯(cuò),而是整整個(gè)Page(例如如512Bytes)中只有有一個(gè)或幾幾個(gè)bit出錯(cuò)。ECC能糾糾正1個(gè)比比特錯(cuò)誤和和檢測(cè)2個(gè)個(gè)比特錯(cuò)誤誤,而且計(jì)算算速度很快快,但對(duì)1比特以上上的錯(cuò)誤無(wú)無(wú)法糾正,,對(duì)2比特特以上的錯(cuò)錯(cuò)誤不保證證能檢測(cè)。。Nandflash的ECC簡(jiǎn)介ECC校驗(yàn)驗(yàn)算法:ECC校驗(yàn)驗(yàn)每次對(duì)256字節(jié)節(jié)的數(shù)據(jù)進(jìn)進(jìn)行操作,,包含列校校驗(yàn)和行校校驗(yàn)。ECC糾錯(cuò)錯(cuò)算法:當(dāng)往NandFlash的的page中寫(xiě)入數(shù)數(shù)據(jù)的時(shí)候候,每256字節(jié)生生成一個(gè)ECC校驗(yàn)驗(yàn)和,稱之之為原ECC校驗(yàn)和和,保存到到PAGE的OOB(out-of-band)數(shù)據(jù)區(qū)區(qū)中。當(dāng)從從NandFlash中讀讀取數(shù)據(jù)的的時(shí)候,每每256字字節(jié)我們生生成一個(gè)ECC校驗(yàn)驗(yàn)和,稱之之為新ECC校驗(yàn)和和。將從OOB區(qū)中中讀出的原原ECC校校驗(yàn)和新ECC校驗(yàn)驗(yàn)和按位異異或,若結(jié)結(jié)果為0,,則表示不不存在錯(cuò)((或是出現(xiàn)現(xiàn)了ECC無(wú)法檢檢測(cè)的錯(cuò)誤誤);若3個(gè)字節(jié)異異或結(jié)果中中存在11個(gè)比特位位為1,表表示存在一一個(gè)比特錯(cuò)錯(cuò)誤,且可可糾正;若若3個(gè)字節(jié)節(jié)異或結(jié)果果中只存在在1個(gè)比特特位為1,,表示OOB區(qū)出錯(cuò)錯(cuò);其他情情況均表示示出現(xiàn)了無(wú)無(wú)法糾正的的錯(cuò)誤。Nandflash常用的軟件件管理方案案NandFlash由于自自身的原因因,會(huì)有一一些限制::1不能直直接在數(shù)據(jù)據(jù)上進(jìn)行覆覆蓋,必須須先擦后寫(xiě)寫(xiě)。2寫(xiě)和擦擦有壽命。。某些塊可可能會(huì)用的的更頻繁從從而導(dǎo)致壞壞塊。3在出廠廠時(shí)會(huì)存在在壞塊,在在使用過(guò)程程中也會(huì)產(chǎn)產(chǎn)生壞塊。。4會(huì)在讀讀取數(shù)據(jù)時(shí)時(shí)產(chǎn)生錯(cuò)誤誤或讀取失失敗。正是因?yàn)檫@這些限制,,NandFlash的操操作相對(duì)比比較復(fù)雜,,因此需要通過(guò)軟軟件將NandFlash仿真為傳傳統(tǒng)的邏輯輯塊設(shè)備,,便于讀擦寫(xiě)等操操作。SC6800H平臺(tái)臺(tái)目前支持持FTL和和XSR兩兩種軟件管管理方案:在PDA_V2.0之前,平平臺(tái)使用的的是XSR解決方案案,在PDA_V2.0平臺(tái)臺(tái)使用的是是FTL解解決方案。。Nandflash常用的軟件件管理方案案FTL(FlashTranslationLayer)傳統(tǒng)的嵌入入式系統(tǒng)一一般使用FTL方案案。FTL將NandFlash仿真為一個(gè)個(gè)塊設(shè)備使使得NandFlash與與其他常規(guī)規(guī)塊存儲(chǔ)設(shè)設(shè)備一樣。FTL是處于文文件系統(tǒng)和和NandFlash設(shè)備備之間一個(gè)個(gè)中間層。FTL從文文件系統(tǒng)層層收到讀寫(xiě)寫(xiě)操作的邏邏輯地址。。在FTL層把這些邏輯地地址映射成成真正的物物理地址,,從而正確確的進(jìn)行相相應(yīng)操作。由于于FTL創(chuàng)創(chuàng)建了虛擬擬塊進(jìn)行映映射管理,,所以對(duì)這這些虛擬塊會(huì)有一些些相應(yīng)的軟軟件算法,,比如垃圾圾收集(GarbageCollection),壞壞塊管理(BadBlockManagement),寫(xiě)平平衡算法(Wear-Leveling)等等。這些算算法有助于于管理塊結(jié)結(jié)構(gòu)和延長(zhǎng)長(zhǎng)NandFlash的壽命命。Nandflash常用的軟件件管理方案案FTL(FlashTranslationLayer)垃圾收集(GarbageCollection)在對(duì)數(shù)據(jù)進(jìn)進(jìn)行修改的的時(shí)候,因因?yàn)闆](méi)有把把原來(lái)的數(shù)數(shù)據(jù)清空,這這樣就會(huì)導(dǎo)導(dǎo)致部分物物理區(qū)域中中的數(shù)據(jù)是是無(wú)效的,即垃圾圾數(shù)據(jù)。通通過(guò)垃圾收收集技術(shù)(GarbageCollection),系系統(tǒng)把要清清零的塊中中的有效數(shù)數(shù)據(jù)先移動(dòng)到其他區(qū)區(qū)域,并且且改變邏輯輯塊到物理理塊的映射射關(guān)系,然后對(duì)對(duì)整塊進(jìn)行行清零操作作。一般垃圾收收集遵循兩兩個(gè)原則::垃圾最多多(速度原則);使用的次次數(shù)最少(平衡原則)。Nandflash常用的軟件件管理方案案FTL(FlashTranslationLayer)寫(xiě)平衡算法法(Wear-LevelingAlgorithm)一般的NandFlash能保證每每個(gè)塊可以以擦寫(xiě)10萬(wàn)次。但是由于于一些塊所所使用的次次數(shù)會(huì)比其其他塊頻繁繁,從而導(dǎo)致更容容易出現(xiàn)壞壞塊。寫(xiě)平衡算法法(Wear-LevelingAlgorithm)就是用用于保證每個(gè)個(gè)塊都能得得到比較均均衡的使用用。由于在在每個(gè)塊中都有一一個(gè)計(jì)數(shù)器器,用于記記錄該塊被被擦除的次次數(shù),所以寫(xiě)平衡衡算法會(huì)自自動(dòng)利用這這個(gè)計(jì)數(shù)器器,并將被被擦除次數(shù)最少的的塊用于新新的操作中中。Nandflash常用的軟軟件管理理方案FTL(FlashTranslationLayer)ErrorCorrectionCodeECC分分為硬件件ECC和軟件件ECC。ECC使用用就是糾糾正偵測(cè)到的的數(shù)據(jù)錯(cuò)錯(cuò)誤,它它保證了了NandFlash的可可靠性和數(shù)據(jù)完完整性。。而在NandFlash中采取取的是““先寫(xiě)后清除””的措施施,如果果出現(xiàn)錯(cuò)錯(cuò)誤,原原始的數(shù)數(shù)據(jù)還可可以使用,,從而保保證了數(shù)數(shù)據(jù)的可可恢復(fù)性性。Nandflash常用的軟軟件管理理方案XSR(eXtendedSectorRemapper)XSR是是SAMSUNG推出出的專門(mén)門(mén)用于管管理NandFlash的的軟件解決決方案。。XSR將NandFlash看看作常規(guī)規(guī)的塊設(shè)設(shè)備,其功功能同傳傳統(tǒng)的FTL一一樣。但但XSR比FTL更加加強(qiáng)大。XSR處處于文件件系統(tǒng)和和NandFlash之間間。它提提供給操作系統(tǒng)統(tǒng)全部的的塊設(shè)備備功能,,使得NandFlash就像一一個(gè)常規(guī)的的硬盤(pán)一一樣,能能更方便便管理數(shù)數(shù)據(jù)。Nandflash常用的軟軟件管理理方案XSR(eXtendedSectorRemapper)XSR共分為五五個(gè)主要要部分::1XSR核核心層(XSRCore),其中XSR核核心層又又可分為為兩個(gè)層層次:扇區(qū)轉(zhuǎn)換換層STL(SectorTranslationLayer)塊管理層層BML(BlockManagementLayer)2操作系統(tǒng)統(tǒng)適配模模塊層OAM(OSAdaptationModule)3平臺(tái)適配配模塊層層PAM(PlatformAdaptationModule)4底層設(shè)備備驅(qū)動(dòng)層層LLD(LowLevelDeviceDriver)Nandflash常用的軟軟件管理理方案XSR(eXtendedSectorRemapper)扇區(qū)轉(zhuǎn)換換層STL(SectorTranslationLayer)STL(扇區(qū)轉(zhuǎn)轉(zhuǎn)換層)是XSR架構(gòu)構(gòu)中一個(gè)個(gè)很重要要的部分分,它從從事一些主主要的管管理任務(wù)務(wù)。該層層主要同同扇區(qū)轉(zhuǎn)轉(zhuǎn)換相關(guān)關(guān),將文文件系統(tǒng)傳來(lái)來(lái)的邏輯輯扇區(qū)地地址(logicalsectoraddress)轉(zhuǎn)換為虛擬扇扇區(qū)地址址(virtualsectoraddress)。STL主主要包括括:地址址轉(zhuǎn)換(AddressTranslation),寫(xiě)平衡算法法(NaturalWearLeveling),大塊塊優(yōu)化管管理(LargeBlockOptimization),斷斷電保護(hù)護(hù)(PoweroffRecovery),允許異步步/同步步操作,支持持多卷(SupportingMultipleVolume)等。Nandflash常用的軟軟件管理理方案XSR(eXtendedSectorRemapper)BML(BlockManagementLayer)BML將將從STL層傳傳來(lái)的虛虛擬地址址轉(zhuǎn)換為為具體的的物理地地址。在對(duì)NandFlash進(jìn)行行讀/寫(xiě)寫(xiě)/擦除除操作時(shí)時(shí)。但有有可能會(huì)會(huì)遇到錯(cuò)錯(cuò)誤或者失失敗,而而這些有有錯(cuò)誤或或發(fā)生失失敗的塊塊就叫做做壞塊。。BML專門(mén)用于于管理這這些壞塊塊,并且且還可以以對(duì)一些些無(wú)效塊塊進(jìn)行管管理.BML主主要包括括:分區(qū)區(qū)信息管管理(PartitionInformationManagement),交錯(cuò)訪訪問(wèn)NandFlash設(shè)備備(NANDDeviceInterleaving),壞塊塊管理(BadBlockManagement),軟件件ECC(SoftwareECC),多多卷管理理(MultipleVolumeManagement)等。。Nandflash常用的軟軟件管理理方案XSR(eXtendedSectorRemapper)LLD(LowLevelDeviceDriver)LLD(底層設(shè)設(shè)備驅(qū)動(dòng)動(dòng)層)是是所有XSR的的結(jié)構(gòu)層層中真正正同物理層層接觸的的,即真真正能夠夠訪問(wèn)物物理設(shè)備備的層次次。通過(guò)前面面STL和BML的轉(zhuǎn)轉(zhuǎn)換,LLD使使用上面面?zhèn)鱽?lái)的的真正的物理地地址,找找到需要要的NandFlash空間間,對(duì)它它進(jìn)行所需的各各種操作作。Nandflash常用的軟軟件管理理方案XSR(eXtendedSectorRemapper)OAM(OSAdaptationModule)OAM(操作系系統(tǒng)適配配模塊層層)用于于接收操操作系統(tǒng)統(tǒng)提供的服務(wù)務(wù),并將將它們作作用到XSR架架構(gòu)中。。OAM是一個(gè)個(gè)相對(duì)獨(dú)立的的層次,,當(dāng)操作作系統(tǒng)改改變后,,用戶只只需要改改變OAM的的配置即即可。OAM會(huì)會(huì)提供一一些中斷斷,時(shí)序序,異步步/同步標(biāo)志志等功能能函數(shù)。。Nandflash常用的軟軟件管理理方案XSR(eXtendedSectorRemapper)PAM(PlatformAdaptationModule)PAM(平臺(tái)適適配模塊塊層)用用于將XSR同同具體的的平臺(tái)聯(lián)聯(lián)系在一起起,用于于獲取平平臺(tái)的相相關(guān)信息息或者功功能。PAM同樣也是是獨(dú)立的的層次,,平臺(tái)改改變后,,用戶只只需改變變PAM相相關(guān)配置置即可。。這里所所指的平平臺(tái)是由由CPU,SDRAM,NandFlash等組組成的系系統(tǒng)。6800H平臺(tái)NandInterface簡(jiǎn)介支持8/16bit寬度。支持Nand的容量不不大于2Gbyte,支持3~4地址序列列,若是是每頁(yè)大大小為2kbyte,支持4~5地址序列列。若是每頁(yè)頁(yè)大小為為512byte,硬件上上支持4頁(yè)連續(xù)讀讀寫(xiě)。支持硬件件ECC校驗(yàn),但但須由軟軟件來(lái)糾糾錯(cuò)。支持SmallPage(512byte)和LargePage(2Kbyte)。6800H平臺(tái)Nandflash驅(qū)動(dòng)配置置6800H平臺(tái)推薦薦的memory方案是Nand+SDRAM(目前Nor+pSram方案還沒(méi)沒(méi)有做好好)。其中完完成一款款新的Nand驅(qū)動(dòng)一一般是是配置置一張張表,即NandSpec.c中的astNandSpec[]表,對(duì)應(yīng)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論