




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(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第一頁(yè),共六十二頁(yè)。內(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ū)第二頁(yè),共六十二頁(yè)。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?第三頁(yè),共六十二頁(yè)。為什么需要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很小。第四頁(yè),共六十二頁(yè)。
Bootloader存放在哪里?為什么?在nand的第一個(gè)block
NAND_PartTable_XXX.c配置文件NBL_OFFSET即是Bootloader的位置,可以看到是0。為什么在這里:
Nand的第一個(gè)block永遠(yuǎn)不會(huì)損壞的特性決定了可以很簡(jiǎn)單的讀取這個(gè)塊。第五頁(yè),共六十二頁(yè)。
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)}第六頁(yè),共六十二頁(yè)。
Bootloader運(yùn)行在哪里?boot1的運(yùn)行地址可以從scatter1.scf中找到如下:ROM_EXEC0x10000000x14000{
boot1_entry.o(Reset,+First)*.o(+RO,+RW)}第七頁(yè),共六十二頁(yè)。
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第八頁(yè),共六十二頁(yè)。
Bootloader代碼構(gòu)架是怎樣的?boot0入口地址:0x40000000(IRAM起始地址)boot0主要工作:boot0_entry.s
:
Remap->初始化SDRAM->__main->聲明bootparameter并分配空間boot0_main.c
:
將boot1拷貝到SDRAM->set_pc到SDRAM執(zhí)行boot1。第九頁(yè),共六十二頁(yè)。
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存放的起始地址。第十頁(yè),共六十二頁(yè)。Bootparameter如何設(shè)定的?bootparameter(nand分區(qū)表等相關(guān)信息)的設(shè)定在fdl相關(guān)代碼中,該部分代碼已封裝。在函數(shù)BOOLEANcopyKernelImg(void)中,可以看出,從flash中讀取出來(lái)bootparameter存放在bootParam中。_copyImg(ftlHandle,SDRAM_BASE_ADDR,osInfo->offset,osInfo->size,ftlPartitionInfo.sctSize)這里可以看到一部分bootparameter參數(shù)。第十一頁(yè),共六十二頁(yè)。Bootloader代碼解讀主要文件:目錄fdl_bootloader\bootloader\srcboot0_entry.sboot0_main.cboot1_entry.sboot1_main.c第十二頁(yè),共六十二頁(yè)。NandFlash簡(jiǎn)介Flash存儲(chǔ)器又稱(chēng)閃存,是一種可在線多次擦除的非易失性存儲(chǔ)器,即掉電后數(shù)據(jù)不會(huì)丟失。Flash存儲(chǔ)器還具有體積小、功耗低、抗振性強(qiáng)等優(yōu)點(diǎn)。
Flash存儲(chǔ)器主要分為兩種:一種為Nor型Flash,另一種為Nand型Flash。Nand內(nèi)部采用非線性宏單元模式,為固態(tài)大容量?jī)?nèi)存的實(shí)現(xiàn)提供了廉價(jià)有效的解決方案。Nand存儲(chǔ)器具有容量較大,改寫(xiě)速度快等優(yōu)點(diǎn),適用于大量數(shù)據(jù)的存儲(chǔ),因而在業(yè)界得到了越來(lái)越廣泛的應(yīng)用。第十三頁(yè),共六十二頁(yè)。Nandflash和Norflash比較接口比較:Nor帶有SRAM接口,有足夠的地址引腳來(lái)尋址,可以很容易地存取其內(nèi)部的每一個(gè)字節(jié)。Nor的特點(diǎn)是芯片內(nèi)執(zhí)行(XIP,eXecuteInPlace),這樣應(yīng)用程序可以直接在Norflash內(nèi)運(yùn)行,可以不把代碼讀到系統(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)傳送控制、地址和數(shù)據(jù)信息,由于時(shí)序較為復(fù)雜,所以一般CPU集成Nand控制器。Nand讀和寫(xiě)操作采用512字節(jié)的塊,這一點(diǎn)有點(diǎn)像硬盤(pán)管理此類(lèi)操作。Nand是非線性存儲(chǔ)器,不支持eXecuteInPlace。第十四頁(yè),共六十二頁(yè)。Nandflash和Norflash比較容量和成本比較:相比起Nand來(lái)說(shuō),Nor的容量要小,一般在1-16MByte左右,一些新工藝采用了芯片疊加技術(shù)可以把Nor的容量做得大一些。在價(jià)格方面,Nor相比Nand來(lái)說(shuō)要高一些。Nand生產(chǎn)過(guò)程更為簡(jiǎn)單,結(jié)構(gòu)可以在給定的模具尺寸內(nèi)提供更高的容量,這樣也就相應(yīng)地降低了價(jià)格。第十五頁(yè),共六十二頁(yè)。Nandflash和Norflash比較其他方面如可靠性,耐用性等方面的比較,在這里就不一一詳述了。第十六頁(yè),共六十二頁(yè)。Nandflash工作原理-組成結(jié)構(gòu)Nand的數(shù)據(jù)是以bit的方式保存在memorycell,一般來(lái)說(shuō),一個(gè)cell中只能存儲(chǔ)一個(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。第十七頁(yè),共六十二頁(yè)。Nandflash工作原理-組成結(jié)構(gòu)這里以三星的Nand型號(hào)K9F1208為例子說(shuō)明Nand的組成結(jié)構(gòu)。第十八頁(yè),共六十二頁(yè)。Nandflash工作原理-組成結(jié)構(gòu)對(duì)于上圖的Nand芯片K9F1208:每頁(yè)528Bytes:512byte(MainArea)+16byte(SpareArea)。每32個(gè)page形成一個(gè)Block(32*528B)。4096個(gè)block組成一片Nand芯片K9F1208。故總?cè)萘繛?096*(32*528B)=66MB,其中的2MB是用來(lái)保存ECC校驗(yàn)碼等額外數(shù)據(jù)的,實(shí)際中可使用的為64MB。說(shuō)明:這只是針對(duì)芯片K9F1208的組成結(jié)構(gòu),不同的芯片可以根據(jù)datasheet確定。第十九頁(yè),共六十二頁(yè)。Nandflash工作原理-組成結(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)保存ECC校驗(yàn)碼等額外數(shù)據(jù)的,實(shí)際中可使用的為64Mbyte。說(shuō)明:這只是針對(duì)芯片K9F1208的組成結(jié)構(gòu),不同的芯片可以根據(jù)datasheet確定。第二十頁(yè),共六十二頁(yè)。Nandflash工作原理-組成結(jié)構(gòu)Page分為main和spare區(qū)。main是用來(lái)保存數(shù)據(jù)的,spare區(qū)一般用來(lái)標(biāo)記壞塊以及保存對(duì)main區(qū)數(shù)據(jù)的ECC校驗(yàn)碼等。spare區(qū)大小:(每512+16)byte就有16byte作為spare區(qū)。spare區(qū)這16byte格式:不同廠家的格式可能有所區(qū)別,沒(méi)有統(tǒng)一的標(biāo)準(zhǔn)格式。第二十一頁(yè),共六十二頁(yè)。Nandflash工作原理-組成結(jié)構(gòu)以下是spare區(qū)的一個(gè)例子:LSN0LSN1LSN2RESERVEDRESERVEDBIECC0ECC1ECC2S-ECC0S-ECC1RESERVEDRESERVEDRESERVEDRESERVEDRESERVED其中:LSN:LogicalSectorNumber(跟壞塊管理有關(guān))ECCa,ECCb,ECCc:ECCcodeforMainareadata(ErrorCheckingandCorrection)S_ECCa,S_ECCb:ECCcodeforLSNdataBI:BadblockInformation第二十二頁(yè),共六十二頁(yè)。Nandflash工作原理-尋址剛才算的容量是有64Mbyte的空間,225bit<64Mbyte<226bit
也就是說(shuō)需要26位地址傳送,可是看Nand的原理圖發(fā)現(xiàn)有IO0-IO7,它是怎么尋址的呢?第二十三頁(yè),共六十二頁(yè)。Nandflash工作原理-尋址看看下面完整的ArrayOrganization第二十四頁(yè),共六十二頁(yè)。Nandflash工作原理-尋址原來(lái)Nand并不是直接通過(guò)里面的存儲(chǔ)物理層,而是有一個(gè)專(zhuān)門(mén)的頁(yè)寄存器來(lái)管理的。不論是什么操作都要首先通過(guò)pageregsiter。從上圖來(lái)看,A0-A7是頁(yè)內(nèi)尋址,也叫列尋址,也就是512尋址,不過(guò)A0-A7才8位,最大也就尋址256?實(shí)質(zhì)上還有一位A8,A8是由Nand里面的某個(gè)硬件電路根據(jù)相關(guān)的命令而置為1或者0,這不用軟件來(lái)操作。例如說(shuō)要尋址0~255字節(jié),這樣的話8位IO搞定了,這時(shí)候硬件電路就會(huì)把A8置為0;如果說(shuō)要尋址第484字節(jié),8位就不夠了,硬件電路就會(huì)把A8置1,完成所謂的第484個(gè)字節(jié)尋址。484的二進(jìn)制是111100100,需要9位才行,A8此時(shí)就充當(dāng)?shù)?位,其余8位還是由IO完成的,這樣就可以完成512字節(jié)內(nèi)的任何尋址了。第二十五頁(yè),共六十二頁(yè)。Nandflash工作原理-尋址A9~A25是用來(lái)進(jìn)行頁(yè)尋址的,也叫行尋址,4096塊*32頁(yè)=131072頁(yè),用A9~A25就可以搞定這么多頁(yè)了?;谝陨峡芍?A9~A25是進(jìn)行多達(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è)Nand分成若干個(gè)層(plane),每層若干塊,每層里還有個(gè)528字節(jié)的頁(yè)寄存器。如下圖:第二十六頁(yè),共六十二頁(yè)。Nandflash工作原理-尋址K9F1208分4個(gè)層,每層1024塊,所以說(shuō)A14~A15是用于plane尋址的,A16~A25用于Block尋址。第二十七頁(yè),共六十二頁(yè)。Nandflash工作原理-指令集這里簡(jiǎn)單介紹下Nand的指令操作:第二十八頁(yè),共六十二頁(yè)。Nandflash工作原理-壞塊管理為什么會(huì)出現(xiàn)壞塊?由于Nand的工藝不能保證Nand的MemoryArray在其生命周期中保持性能的可靠,因此,在Nand的生產(chǎn)中及使用過(guò)程中會(huì)產(chǎn)生壞塊。說(shuō)明:Nand的第一個(gè)Block經(jīng)特殊工藝處理,默認(rèn)是不會(huì)成為壞塊的,常用于系統(tǒng)的引導(dǎo)。第二十九頁(yè),共六十二頁(yè)。NandFlash工作原理-壞塊管理壞塊的具體表現(xiàn):當(dāng)編程/擦除這個(gè)塊時(shí),不能將某些位拉高,這會(huì)造成PageProgram和BlockErase操作時(shí)的錯(cuò)誤,相應(yīng)地反映到StatusRegister的相應(yīng)位。第三十頁(yè),共六十二頁(yè)。NandFlash工作原理-壞塊管理壞塊的種類(lèi):先天性壞塊這種壞塊是在生產(chǎn)過(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è)塊作為壞塊來(lái)處理,這個(gè)時(shí)候需要把壞塊標(biāo)記起來(lái)。為了和先天性壞塊信息保持一致,將新發(fā)現(xiàn)的壞塊的第一個(gè)page的spare區(qū)的第6個(gè)Byte標(biāo)記為非0xff的值。第三十一頁(yè),共六十二頁(yè)。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ì)造成Nand操作的錯(cuò)誤。但是,為了數(shù)據(jù)的可靠性及軟件設(shè)計(jì)的簡(jiǎn)單化,壞塊一個(gè)也不能放過(guò)。第三十二頁(yè),共六十二頁(yè)。NandFlash工作原理-壞塊管理錯(cuò)殺壞塊的補(bǔ)救方法:如果在對(duì)一個(gè)塊的某個(gè)page進(jìn)行編程的時(shí)候發(fā)生了錯(cuò)誤就要把這個(gè)塊標(biāo)記為壞塊,首先就要把其他好的page里面的內(nèi)容備份到另外一個(gè)空的好塊里面,然后,把這個(gè)塊標(biāo)記為壞塊。當(dāng)發(fā)生“錯(cuò)殺”之后,可以在進(jìn)行完頁(yè)備份之后,再將這個(gè)塊擦除一遍,如果BlockErase發(fā)生錯(cuò)誤,那就證明這個(gè)塊是個(gè)真正的壞塊。第三十三頁(yè),共六十二頁(yè)。Nandflash的ECC簡(jiǎn)介ECC的全稱(chēng)是ErrorCheckingandCorrection,是一種用于Nand的差錯(cuò)檢測(cè)和修正算法。如果操作時(shí)序和電路穩(wěn)定性不存在問(wèn)題的話,NandFlash出錯(cuò)的時(shí)候一般不會(huì)造成整個(gè)Block或是Page不能讀取或是全部出錯(cuò),而是整個(gè)Page(例如512Bytes)中只有一個(gè)或幾個(gè)bit出錯(cuò)。ECC能糾正1個(gè)比特錯(cuò)誤和檢測(cè)2個(gè)比特錯(cuò)誤,而且計(jì)算速度很快,但對(duì)1比特以上的錯(cuò)誤無(wú)法糾正,對(duì)2比特以上的錯(cuò)誤不保證能檢測(cè)。第三十四頁(yè),共六十二頁(yè)。Nandflash的ECC簡(jiǎn)介ECC校驗(yàn)算法:ECC校驗(yàn)每次對(duì)256字節(jié)的數(shù)據(jù)進(jìn)行操作,包含列校驗(yàn)和行校驗(yàn)。ECC糾錯(cuò)算法:當(dāng)往NandFlash的page中寫(xiě)入數(shù)據(jù)的時(shí)候,每256字節(jié)生成一個(gè)ECC校驗(yàn)和,稱(chēng)之為原ECC校驗(yàn)和,保存到PAGE的OOB(out-of-band)數(shù)據(jù)區(qū)中。當(dāng)從NandFlash中讀取數(shù)據(jù)的時(shí)候,每256字節(jié)我們生成一個(gè)ECC校驗(yàn)和,稱(chēng)之為新ECC校驗(yàn)和。將從OOB區(qū)中讀出的原ECC校驗(yàn)和新ECC校驗(yàn)和按位異或,若結(jié)果為0,則表示不存在錯(cuò)(或是出現(xiàn)了ECC無(wú)法檢測(cè)的錯(cuò)誤);若3個(gè)字節(jié)異或結(jié)果中存在11個(gè)比特位為1,表示存在一個(gè)比特錯(cuò)誤,且可糾正;若3個(gè)字節(jié)異或結(jié)果中只存在1個(gè)比特位為1,表示OOB區(qū)出錯(cuò);其他情況均表示出現(xiàn)了無(wú)法糾正的錯(cuò)誤。第三十五頁(yè),共六十二頁(yè)。Nandflash常用的軟件管理方案NandFlash由于自身的原因,會(huì)有一些限制:1不能直接在數(shù)據(jù)上進(jìn)行覆蓋,必須先擦后寫(xiě)。2寫(xiě)和擦有壽命。某些塊可能會(huì)用的更頻繁從而導(dǎo)致壞塊。3在出廠時(shí)會(huì)存在壞塊,在使用過(guò)程中也會(huì)產(chǎn)生壞塊。4會(huì)在讀取數(shù)據(jù)時(shí)產(chǎn)生錯(cuò)誤或讀取失敗。正是因?yàn)檫@些限制,NandFlash的操作相對(duì)比較復(fù)雜,因此需要通過(guò)軟件將NandFlash仿真為傳統(tǒng)的邏輯塊設(shè)備,便于讀擦寫(xiě)等操作。SC6800H平臺(tái)目前支持FTL和XSR兩種軟件管理方案:在PDA_V2.0之前,平臺(tái)使用的是XSR解決方案,在PDA_V2.0平臺(tái)使用的是FTL解決方案。第三十六頁(yè),共六十二頁(yè)。Nandflash常用的軟件管理方案FTL(FlashTranslationLayer)
傳統(tǒng)的嵌入式系統(tǒng)一般使用FTL方案。FTL將NandFlash仿真為一個(gè)塊設(shè)備使得NandFlash與其他常規(guī)塊存儲(chǔ)設(shè)備一樣。FTL是處于文件系統(tǒng)和NandFlash設(shè)備之間一個(gè)中間層。
FTL從文件系統(tǒng)層收到讀寫(xiě)操作的邏輯地址。在FTL層把這些邏輯地址映射成真正的物理地址,從而正確的進(jìn)行相應(yīng)操作。由于FTL創(chuàng)建了虛擬塊進(jìn)行映射管理,所以對(duì)這些虛擬塊會(huì)有一些相應(yīng)的軟件算法,比如垃圾收集(Garbage
Collection),壞塊管理(BadBlockManagement),寫(xiě)平衡算法(Wear-Leveling)等。這些算法有助于管理塊結(jié)構(gòu)和延長(zhǎng)NandFlash的壽命。第三十七頁(yè),共六十二頁(yè)。Nandflash常用的軟件管理方案FTL(FlashTranslationLayer)垃圾收集(Garbage
Collection)
在對(duì)數(shù)據(jù)進(jìn)行修改的時(shí)候,因?yàn)闆](méi)有把原來(lái)的數(shù)據(jù)清空,這樣就會(huì)導(dǎo)致部分物理區(qū)域中的數(shù)據(jù)是無(wú)效的,即垃圾數(shù)據(jù)。通過(guò)垃圾收集技術(shù)(GarbageCollection),系統(tǒng)把要清零的塊中的有效數(shù)據(jù)先移動(dòng)到其他區(qū)域,并且改變邏輯塊到物理塊的映射關(guān)系,然后對(duì)整塊進(jìn)行清零操作。
一般垃圾收集遵循兩個(gè)原則:垃圾最多(速度原則);使用的次數(shù)最少(平衡原則)。第三十八頁(yè),共六十二頁(yè)。Nandflash常用的軟件管理方案FTL(FlashTranslationLayer)寫(xiě)平衡算法(Wear-LevelingAlgorithm)
一般的NandFlash能保證每個(gè)塊可以擦寫(xiě)10萬(wàn)次。但是由于一些塊所使用的次數(shù)會(huì)比其他塊頻繁,從而導(dǎo)致更容易出現(xiàn)壞塊。
寫(xiě)平衡算法(Wear-LevelingAlgorithm)就是用于保證每個(gè)塊都能得到比較均衡的使用。由于在每個(gè)塊中都有一個(gè)計(jì)數(shù)器,用于記錄該塊被擦除的次數(shù),所以寫(xiě)平衡算法會(huì)自動(dòng)利用這個(gè)計(jì)數(shù)器,并將被擦除次數(shù)最少的塊用于新的操作中。第三十九頁(yè),共六十二頁(yè)。Nandflash常用的軟件管理方案FTL(FlashTranslationLayer)ErrorCorrectionCode
ECC分為硬件ECC和軟件ECC。ECC使用就是糾正偵測(cè)到的數(shù)據(jù)錯(cuò)誤,它保證了NandFlash的可靠性和數(shù)據(jù)完整性。而在NandFlash中采取的是“先寫(xiě)后清除”的措施,如果出現(xiàn)錯(cuò)誤,原始的數(shù)據(jù)還可以使用,從而保證了數(shù)據(jù)的可恢復(fù)性。第四十頁(yè),共六十二頁(yè)。Nandflash常用的軟件管理方案XSR(eXtendedSectorRemapper)XSR是SAMSUNG推出的專(zhuān)門(mén)用于管理NandFlash的軟件解決方案。XSR將NandFlash看作常規(guī)的塊設(shè)備,其功能同傳統(tǒng)的FTL一樣。但XSR比FTL更加強(qiáng)大。XSR處于文件系統(tǒng)和NandFlash之間。它提供給操作系統(tǒng)全部的塊設(shè)備功能,使得NandFlash就像一個(gè)常規(guī)的硬盤(pán)一樣,能更方便管理數(shù)據(jù)。第四十一頁(yè),共六十二頁(yè)。Nandflash常用的軟件管理方案XSR(eXtendedSectorRemapper)XSR共分為五個(gè)主要部分:1
XSR核心層(XSRCore),其中XSR核心層又可分為兩個(gè)層次:
扇區(qū)轉(zhuǎn)換層STL(SectorTranslationLayer)
塊管理層BML(BlockManagementLayer)2操作系統(tǒng)適配模塊層OAM(OSAdaptationModule)3平臺(tái)適配模塊層PAM(PlatformAdaptationModule)4底層設(shè)備驅(qū)動(dòng)層LLD(LowLevelDeviceDriver)第四十二頁(yè),共六十二頁(yè)。Nandflash常用的軟件管理方案XSR(eXtendedSectorRemapper)扇區(qū)轉(zhuǎn)換層STL(SectorTranslationLayer)
STL(扇區(qū)轉(zhuǎn)換層)是XSR架構(gòu)中一個(gè)很重要的部分,它從事一些主要的管理任務(wù)。該層主要同扇區(qū)轉(zhuǎn)換相關(guān),將文件系統(tǒng)傳來(lái)的邏輯扇區(qū)地址(logicalsectoraddress)轉(zhuǎn)換為虛擬扇區(qū)地址(virtualsectoraddress)。
STL主要包括:地址轉(zhuǎn)換(AddressTranslation),寫(xiě)平衡算法(NaturalWearLeveling),大塊優(yōu)化管理(LargeBlockOptimization),斷電保護(hù)(PoweroffRecovery),允許異步/同步操作,支持多卷(SupportingMultipleVolume)等。第四十三頁(yè),共六十二頁(yè)。Nandflash常用的軟件管理方案XSR(eXtendedSectorRemapper)BML(BlockManagementLayer)
BML將從STL層傳來(lái)的虛擬地址轉(zhuǎn)換為具體的物理地址。在對(duì)NandFlash進(jìn)行讀/寫(xiě)/擦除操作時(shí)。但有可能會(huì)遇到錯(cuò)誤或者失敗,而這些有錯(cuò)誤或發(fā)生失敗的塊就叫做壞塊。BML專(zhuān)門(mén)用于管理這些壞塊,并且還可以對(duì)一些無(wú)效塊進(jìn)行管理.
BML主要包括:分區(qū)信息管理(PartitionInformationManagement),交錯(cuò)訪問(wèn)NandFlash設(shè)備(NANDDeviceInterleaving),壞塊管理(BadBlockManagement),軟件ECC(SoftwareECC),多卷管理(MultipleVolume
Management)等。第四十四頁(yè),共六十二頁(yè)。Nandflash常用的軟件管理方案XSR(eXtendedSectorRemapper)LLD(LowLevelDeviceDriver)
LLD(底層設(shè)備驅(qū)動(dòng)層)是所有XSR的結(jié)構(gòu)層中真正同物理層接觸的,即真正能夠訪問(wèn)物理設(shè)備的層次。通過(guò)前面STL和BML的轉(zhuǎn)換,LLD使用上面?zhèn)鱽?lái)的真正的物理地址,找到需要的NandFlash空間,對(duì)它進(jìn)行所需的各種操作。第四十五頁(yè),共六十二頁(yè)。Nandflash常用的軟件管理方案XSR(eXtendedSectorRemapper)OAM(OSAdaptationModule)
OAM(操作系統(tǒng)適配模塊層)用于接收操作系統(tǒng)提供的服務(wù),并將它們作用到XSR架構(gòu)中。OAM是一個(gè)相對(duì)獨(dú)立的層次,當(dāng)操作系統(tǒng)改變后,用戶(hù)只需要改變OAM的配置即可。OAM會(huì)提供一些中斷,時(shí)序,異步/同步標(biāo)志等功能函數(shù)。第四十六頁(yè),共六十二頁(yè)。Nandflash常用的軟件管理方案XSR(eXtendedSectorRemapper)PAM(PlatformAdaptationModule)
PAM(平臺(tái)適配模塊層)用于將XSR同具體的平臺(tái)聯(lián)系在一起,用于獲取平臺(tái)的相關(guān)信息或者功能。PAM同樣也是獨(dú)立的層次,平臺(tái)改變后,用戶(hù)只需改變PAM相關(guān)配置即可。這里所指的平臺(tái)是由CPU,SDRAM,NandFlash等組成的系統(tǒng)。第四十七頁(yè),共六十二頁(yè)。6800H平臺(tái)NandInterface簡(jiǎn)介支持8/16bit寬度。支持Nand的容量不大于2Gbyte,支持3~4地址序列,若是每頁(yè)大小為2kbyte,支持4~5地址序列。若是每頁(yè)大小為512byte,硬件上支持4頁(yè)連續(xù)讀寫(xiě)。支持硬件ECC校驗(yàn),但須由軟件來(lái)糾錯(cuò)。支持SmallPage(512byte)和LargePage(2Kbyte)。第四十八頁(yè),共六十二頁(yè)。6800H平臺(tái)Nandflash驅(qū)動(dòng)配置6800H平臺(tái)推薦的memory方案是Nand+SDRAM(目前Nor+pSram方案還沒(méi)有做好)。其中完成一款新的Nand驅(qū)動(dòng)一般是配置一張表,即NandSpec.c中的astNandSpec[]表,對(duì)應(yīng)的結(jié)構(gòu)體為L(zhǎng)LDSpec。第四十九頁(yè),共六十二頁(yè)。6800H平臺(tái)Nandflash驅(qū)動(dòng)配置結(jié)構(gòu)體LLDSpec的定義為:第五十頁(yè),共六十二頁(yè)。6800H平臺(tái)Nandflash驅(qū)動(dòng)配置LLDSpec參數(shù)說(shuō)明:第五十一頁(yè),共六十二頁(yè)。6800H平臺(tái)Nandflash驅(qū)動(dòng)配置這里特別說(shuō)明一下幾個(gè)參數(shù):UINT8nBadPos;/*BadBlockInformationPoisition*/UINT8nLsnPos;/*LSNPosition*/UINT8nEccPos;/*ECCBytePosition*/UINT8nAdvance;/*thepropertyofAdvance*/UINT16nTrTime;/*read-timeofNANDdevice(unit:usec)*/UINT16nTwTime;/*write-ti
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024-2025學(xué)年高中地理第一章區(qū)域地理環(huán)境與人類(lèi)活動(dòng)第四節(jié)區(qū)域差異第1課時(shí)我國(guó)三大自然區(qū)課時(shí)作業(yè)湘教版必修3
- 2024-2025學(xué)年高中英語(yǔ)Unit18BeautySectionⅤLanguageAwareness3課后限時(shí)訓(xùn)練北師大版選修6
- 2024-2025學(xué)年高中物理第二章恒定電流第9節(jié)實(shí)驗(yàn)練習(xí)使用多用電表課時(shí)訓(xùn)練含解析新人教版選修3-1
- 2024-2025學(xué)年高中數(shù)學(xué)課時(shí)作業(yè)20指數(shù)函數(shù)冪函數(shù)對(duì)數(shù)函數(shù)增長(zhǎng)的比較北師大版必修1
- 2024-2025學(xué)年高中政治第二單元綜合探究建設(shè)學(xué)習(xí)型社會(huì)練習(xí)含解析新人教版必修3
- 2024-2025學(xué)年高中地理課時(shí)分層作業(yè)8單元活動(dòng)學(xué)會(huì)小區(qū)域調(diào)查含解析魯教版必修3
- 2025年中國(guó)汽車(chē)服務(wù)行業(yè)未來(lái)趨勢(shì)預(yù)測(cè)分析及投資規(guī)劃研究建議報(bào)告
- 單位申購(gòu)洗衣機(jī)的請(qǐng)示報(bào)告
- 2023-2029年中國(guó)連鎖經(jīng)營(yíng)行業(yè)市場(chǎng)調(diào)查研究及發(fā)展戰(zhàn)略規(guī)劃報(bào)告
- 中國(guó)涂塑篷布項(xiàng)目投資可行性研究報(bào)告
- 《水稻高產(chǎn)栽培技術(shù)》全套課件
- 嗆咳患者的護(hù)理
- 涼山州西昌市人民醫(yī)院招聘筆試真題2023
- 住建局條文解讀新規(guī)JGJT46-2024《施工現(xiàn)場(chǎng)臨時(shí)用電安全技術(shù)標(biāo)準(zhǔn)》
- 中國(guó)古代舞蹈史課件
- DB3502T 078-2022 代建工作規(guī)程
- 冠心病課件完整版本
- 光伏發(fā)電+儲(chǔ)能項(xiàng)目三期項(xiàng)目建筑安裝工程投標(biāo)方案(技術(shù)方案)
- 2024關(guān)于進(jìn)一步提升基層應(yīng)急管理能力的意見(jiàn)詳細(xì)解讀課件
- 生活垃圾轉(zhuǎn)運(yùn)站技術(shù)規(guī)范 CJJT47-2016知識(shí)培訓(xùn)
- 課前三分鐘有效利用活動(dòng)方案
評(píng)論
0/150
提交評(píng)論