• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    支持Yaffs2文件系統(tǒng)的U-Boot的實(shí)現(xiàn)

    2012-07-25 06:49:24
    關(guān)鍵詞:每頁(yè)大容量字節(jié)

    程 偉

    (安徽理工大學(xué) 電氣與信息工程學(xué)院,安徽 淮南232001)

    0 引 言

    在嵌入式產(chǎn)品中,隨著系統(tǒng)功能復(fù)雜度的增加和對(duì)數(shù)據(jù)操作靈活性的提高,小容量的Flash設(shè)備已經(jīng)不能滿(mǎn)足需求,大容量Flash設(shè)備使用的越來(lái)越廣泛。嵌入式文件系統(tǒng)可以對(duì)Flash存儲(chǔ)器上龐大的數(shù)據(jù)進(jìn)行存儲(chǔ)和管理,而Yaffs2文件系統(tǒng)就是專(zhuān)門(mén)針對(duì)大容量NAND Flash存儲(chǔ)器設(shè)計(jì)的嵌入式文件系統(tǒng),在NAND Flash上運(yùn)行性能穩(wěn)定優(yōu)異。由于Yaffs2文件系統(tǒng)自身的特點(diǎn),在寫(xiě)入到NAND Flash存儲(chǔ)器中時(shí)不能使用一般的工具和方法。U-Boot作為目前被廣泛使用的一種嵌入式系統(tǒng)中的啟動(dòng)引導(dǎo)程序,可以在開(kāi)發(fā)過(guò)程中實(shí)現(xiàn)對(duì)文件的燒寫(xiě)和調(diào)試[1]。目前UBoot自身還不支持燒寫(xiě)Yaffs2文件系統(tǒng),由于Yaffs2文件系統(tǒng)的特殊結(jié)構(gòu),需要對(duì)U-Boot做一定的改進(jìn)。本文給出了U-Boot的修改過(guò)程并進(jìn)行了詳細(xì)分析,改進(jìn)后的U-Boot可直接把Yaffs2文件系統(tǒng)寫(xiě)入NAND Flash存儲(chǔ)器中,方便了構(gòu)建Yaffs2文件系統(tǒng)+大容量NAND Flash形式的嵌入式系統(tǒng)結(jié)構(gòu)[2],使得嵌入式系統(tǒng)的設(shè)計(jì)開(kāi)發(fā)更加便利。

    1 NAND Flash存儲(chǔ)器

    目前Flash存儲(chǔ)器以其速度快、容量大、成本低等優(yōu)點(diǎn),正被廣泛的應(yīng)用于嵌入式系統(tǒng)中。常用的Flash存儲(chǔ)設(shè)備類(lèi)型有 NOR Flash和 NAND Flash兩種。其中 NOR Flash采用或非結(jié)構(gòu)柵格存儲(chǔ)矩陣實(shí)現(xiàn),可片內(nèi)運(yùn)行程序,常用于系統(tǒng)啟動(dòng)代碼和內(nèi)核映像等存儲(chǔ)[3],但是工藝復(fù)雜,容量小、價(jià)格較貴,具有很低的寫(xiě)入和擦除速度。NAND Flash在嵌入式系統(tǒng)中的地位與PC上的硬盤(pán)類(lèi)似,用于保存系統(tǒng)運(yùn)行所必須的操作系統(tǒng)、應(yīng)用程序、用戶(hù)數(shù)據(jù)等,容量大可達(dá)1GB以上且價(jià)格也相對(duì)便宜,其可擦除次數(shù)是NOR Flash的10倍,其壽命也遠(yuǎn)遠(yuǎn)超過(guò) NOR Flash。NAND Flash也不是完全可靠的,每塊芯片出廠時(shí)都有一定比例的壞塊存在,在使用前需要將壞塊掃描出來(lái),確保不再使用它們,否則會(huì)使產(chǎn)品有嚴(yán)重的故障隱患;而且發(fā)生位反轉(zhuǎn)的概率要高于NOR Flash,當(dāng)位反轉(zhuǎn)發(fā)生在關(guān)鍵代碼、數(shù)據(jù)上時(shí),有可能導(dǎo)致系統(tǒng)崩潰,一般在讀寫(xiě)時(shí)需要使用ECC (error correction code)進(jìn)行錯(cuò)誤檢驗(yàn)和恢復(fù)。

    為了方便管理,NAND Flash的存儲(chǔ)空間使用了塊(block)和頁(yè) (page)兩級(jí)存儲(chǔ)體系。一般128MB以下容量的NAND Flash芯片,一頁(yè)大小為 (512+16)字節(jié),其中的512字節(jié)就是一般的存儲(chǔ)數(shù)據(jù)的區(qū)域,16字節(jié)為空閑區(qū) (spare data)又稱(chēng)為 OOB (out of band)區(qū);通常在OOB區(qū)存放壞塊標(biāo)記、前面512字節(jié)的ECC校驗(yàn)碼等[4]。128MB以上大容量的NAND Flash芯片,一頁(yè)大小通常為2 KB,每頁(yè)包含一個(gè)2048字節(jié)的數(shù)據(jù)區(qū)和64字節(jié)的OOB區(qū)[5]。目前大容量的NAND Flash作為嵌入式產(chǎn)品中的存儲(chǔ)介質(zhì),其應(yīng)用日益廣泛,NAND Flash在Compact Flash、Secure Digital、PC Cards和MMC存儲(chǔ)卡市場(chǎng)上所占份額很大。

    2 Yaffs2文件系統(tǒng)分析

    2.1 Yaffs文件系統(tǒng)

    嵌入式文件系統(tǒng)是嵌入式操作系統(tǒng)的一部分,它的任務(wù)是對(duì)邏輯文件進(jìn)行管理,提供對(duì)邏輯文件操作的接口,如檢索、修改、刪除、復(fù)制等,以方便用戶(hù)的使用[6]。嵌入式文件系統(tǒng)還具有兼容性好、支持自定義的實(shí)時(shí)文件系統(tǒng)、可裁剪可配置、支持多種存儲(chǔ)設(shè)備等特點(diǎn),一個(gè)適合嵌入式設(shè)備的文件系統(tǒng),將使嵌入式設(shè)備上的文件管理更加方便快捷,大大提高嵌入式設(shè)備的性能[7]。支持在Flash上運(yùn)行的常用嵌入式文件系統(tǒng)有Cramfs、Jffs、Jffs2、Yaffs、Yaffs2等,Cramfs文件系統(tǒng)是只讀文件系統(tǒng)。通常在NOR Flash上多選用Jffs及Jffs2文件系統(tǒng),在NAND Flash上選用Yaffs或Yaffs2文件系統(tǒng)。

    Yaffs文件系統(tǒng)是一種類(lèi)似于Jffs/Jffs2、專(zhuān)門(mén)為NAND Flash設(shè)計(jì)的嵌入式文件系統(tǒng),目前有Yaffs和Yaffs2兩個(gè)版本,它是日志結(jié)構(gòu)的文件系統(tǒng)[8],開(kāi)源具有很好的移植性,能夠在Linux、ucLinux和 WinCE下面運(yùn)行。提供了損耗平衡和掉電保護(hù),可以有效地避免意外掉電對(duì)文件系統(tǒng)一致性和完整性的影響[9]。

    2.2 Yaffs2文件系統(tǒng)

    2.2.1 Yaffs2文件系統(tǒng)簡(jiǎn)介

    Yaffs是效果很理想的NAND Flash上的文件系統(tǒng),但它不支持?jǐn)?shù)據(jù)壓縮,而且它僅針對(duì)每頁(yè)512字節(jié) (小頁(yè))大小的NAND Flash存儲(chǔ)器;而很多大容量的NAND Flash使用大小為2KB的頁(yè) (大頁(yè)),Yaffs并不能支持這種大頁(yè)NAND Flash。Yaffs2正是為了支持2KB每頁(yè)的大容量NAND Flash和嚴(yán)格的連續(xù)頁(yè)寫(xiě)命令而開(kāi)發(fā)出來(lái)的,Yaffs2作為Yaffs的升級(jí)版,不但支持這兩種頁(yè)大小的NAND Flash,而且還支持一些新型的和具有嚴(yán)格寫(xiě)入時(shí)序的NAND Flash。NAND Flash的基本擦除單位是Block(塊),而基本寫(xiě)入單位是page(頁(yè));Yaffs2在分配存儲(chǔ)空間的時(shí)候也是以頁(yè)為單位的,不過(guò)在Yaffs2中通常被稱(chēng)為塊(chunk),其實(shí)和大頁(yè)NAND Flash的頁(yè) (page)是一樣的大小,在大多數(shù)情況下和頁(yè)是一個(gè)意思。

    Yaffs2充分考慮了大頁(yè)NAND Flash的結(jié)構(gòu)特點(diǎn),文件系統(tǒng)本身就包含了OOB區(qū)的數(shù)據(jù) (里面有壞塊標(biāo)記、ECC校驗(yàn)碼以及其它和Yaffs2相關(guān)的信息)。根據(jù)大頁(yè)NAND Flash以頁(yè)面為單位存取的特點(diǎn),將文件組織成固定大小的數(shù)據(jù)段;利用大頁(yè)NAND Flash提供的每個(gè)頁(yè)面64字節(jié)的OOB空間來(lái)存放ECC和文件系統(tǒng)的組織信息,實(shí)現(xiàn)了錯(cuò)誤檢測(cè)和壞塊處理[10]。寫(xiě)入Yaffs2時(shí),不需要再計(jì)算ECC值,首先檢查是否壞塊 (是則跳過(guò)),然后寫(xiě)入2048字節(jié)的數(shù)據(jù),最后寫(xiě)入64字節(jié)的OOB數(shù)據(jù),如此循環(huán)。

    2.2.2 Yaffs2文件系統(tǒng)數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)

    Yaffs2文件系統(tǒng)中的文件、目錄、鏈接、設(shè)備文件(以下統(tǒng)稱(chēng)文件)統(tǒng)一用文件頭 (Yaffs2_objectHeader結(jié)構(gòu))描述,每個(gè)文件頭存放在NAND Flash某頁(yè)的數(shù)據(jù)區(qū)內(nèi),其中包括了這個(gè)文件的模式、類(lèi)型、所有者ID、創(chuàng)建時(shí)問(wèn)、Parent Object ID等信息,Yaffs2文件系統(tǒng)分區(qū)內(nèi)的所有文件用object ID來(lái)惟一標(biāo)識(shí)。一些文件系統(tǒng)組織信息(YAFFS TAG)即元數(shù)據(jù) (如文件ID、頁(yè)ID、有效字節(jié)數(shù)等)存放在NAND Flash每頁(yè)的OOB區(qū)中,由于文件系統(tǒng)的基本組織信息保存在頁(yè)面的空閑空間中,因此在文件系統(tǒng)加載時(shí)只需要掃描各個(gè)頁(yè)面的空閑空間,即可建立起整個(gè)文件系統(tǒng)的結(jié)構(gòu),提高了文件系統(tǒng)的加載速度。同時(shí)由于支持的頁(yè)變大,Yaffs2的OOB區(qū)的數(shù)據(jù)結(jié)構(gòu)與Yaffs的略有不同,比如Yaffs2的OOB區(qū)中增加了塊分配序列號(hào)[11]。

    2.2.3 Yaffs2文件系統(tǒng)的優(yōu)勢(shì)

    與Yaffs相比,Yaffs2除了可以支持2KB每頁(yè)的NAND Flash外,還做了一些改進(jìn)[12],可存儲(chǔ)信息更多,也更靈活。如文件頭的部分元數(shù)據(jù),免去讀文件頭獲取這些數(shù)據(jù)的時(shí)間;Yaffs在更新文件chunk數(shù)據(jù)時(shí),將標(biāo)志位復(fù)制下來(lái)且寫(xiě)入序列號(hào)加1和新數(shù)據(jù)一起寫(xiě)入空白頁(yè),然后將原chunk的標(biāo)志位字節(jié)寫(xiě)為0,標(biāo)記chunk無(wú)效;而Yaffs2在更新時(shí)不再重寫(xiě)其標(biāo)志位,來(lái)標(biāo)記chunk無(wú)效,加快了寫(xiě)入速度[13]。塊分配序列號(hào)的采用使加載時(shí)還可區(qū)別chunk有效和無(wú)效,在垃圾收集的時(shí)候也會(huì)以此作為參考之一,判斷該塊是否適合回收,同時(shí)垃圾回收策略也有改進(jìn)。Yaffs2在內(nèi)存空間占用、垃圾回收速度、讀/寫(xiě)速度等方面相對(duì)于Yaffs也有較大改進(jìn),如表1所示。

    表1 Yaffs2與Yaffs的性能比較

    表1中Yaffs2的最差性能表現(xiàn)在每頁(yè)512字節(jié)的NAND Flash上,與Yaffs相似;較佳性能則表現(xiàn)在每頁(yè)2KB的NAND Flash上。Yaffs2還可以支持東芝和SanDisk公司的多層單元閃存 (multi-level cell,MLC)部件[14]。

    3 實(shí)現(xiàn)U-Boot寫(xiě)入Yaffs2文件系統(tǒng)

    3.1 U-Boot對(duì)文件系統(tǒng)的支持

    在嵌入式系統(tǒng)中,Bootloader是系統(tǒng)上電后執(zhí)行的一小段程序,它主要完成了初始化硬件設(shè)備、準(zhǔn)備好軟件環(huán)境,最后調(diào)用操作系統(tǒng)內(nèi)核,真正起到了引導(dǎo)和加載內(nèi)核的作用。U-Boot作為嵌入式系統(tǒng)中一種比較流行、功能強(qiáng)大的Bootloader,支持多種嵌入式操作系統(tǒng)和多種處理器系列,性能可靠穩(wěn)定,功能設(shè)置靈活,源代碼開(kāi)放調(diào)試方便,可移植性強(qiáng)可以在不同硬件平臺(tái)上進(jìn)行移植,通過(guò)修改可以方便的增加其功能。

    在實(shí)際生產(chǎn)中,可以通過(guò)燒片器等手段將內(nèi)核、文件系統(tǒng)映像燒入固態(tài)存儲(chǔ)設(shè)備中,U-Boot不需要具備燒寫(xiě)功能。但在嵌入式產(chǎn)品開(kāi)發(fā)過(guò)程中,為了方便通常在U-Boot中增加燒寫(xiě)內(nèi)核、文件系統(tǒng)映像文件等功能,完成向Flash中燒寫(xiě)文件。在目前的U-Boot官方版本中僅能夠支持Cramfs、Jffs1/2文件系統(tǒng)的燒寫(xiě),這些文件系統(tǒng)最初是針對(duì)NOR Flash的設(shè)計(jì)的?,F(xiàn)在大容量的NAND Flash使用越來(lái)越多,同時(shí)由于很多使用NAND Flash的系統(tǒng),在Linux下都用Yaffs2作為存儲(chǔ)數(shù)據(jù)的文件系統(tǒng),甚至是根文件系統(tǒng),所以在實(shí)際開(kāi)發(fā)過(guò)程中U-Boot能夠?qū)崿F(xiàn)燒寫(xiě)Yaffs2文件系統(tǒng)非常必要。

    3.2 具體實(shí)現(xiàn)方案

    本次設(shè)計(jì)的嵌入式手持設(shè)備中用到的軟硬件開(kāi)發(fā)平臺(tái)為處理器ARM+DSP結(jié)構(gòu),ARM處理器采用三星公司的S3C2440A,U-Boot為 u-boot-2010.06版本,基于嵌入式Linux操作系統(tǒng)。由于性能上的需要用到了三星大容量NAND Flash芯片,型號(hào)為K9K4G08U0M總?cè)萘?12M,每頁(yè)大小為 (2048+64)字節(jié),開(kāi)發(fā)過(guò)程中需要使用UBoot燒寫(xiě)Yaffs2文件系統(tǒng)。

    要實(shí)現(xiàn)對(duì)Yaffs2文件系統(tǒng)的支持,首先要修改U-Boot的NAND Flash讀寫(xiě)命令,增加燒寫(xiě)Yaffs2文件系統(tǒng)的命令,其次重要的是實(shí)現(xiàn)U-Boot的內(nèi)存技術(shù)設(shè)備 (memory technology device,MTD)層的驅(qū)動(dòng)支持,針對(duì)大頁(yè)NAND Flash的特點(diǎn)增加處理OOB區(qū)域數(shù)據(jù)的功能。MTD是Linux中對(duì)ROM、NOR Flash、NAND Flash等存儲(chǔ)設(shè)備抽象出來(lái)的一個(gè)設(shè)備層,對(duì)Flash操作的接口提供了一系列的標(biāo)準(zhǔn)函數(shù),將硬件驅(qū)動(dòng)設(shè)計(jì)和系統(tǒng)程序設(shè)計(jì)分開(kāi),硬件驅(qū)動(dòng)人員不用了解存儲(chǔ)設(shè)備的組織方法,只需提供標(biāo)準(zhǔn)的函數(shù)調(diào)用。無(wú)論是Jffs2還是Yaffs2[15],還有當(dāng)NAND Flash進(jìn)行寫(xiě)入和擦出操作時(shí),都需要MTD的支持。

    3.3 在頭文件中添加支持Yaffs2文件系統(tǒng)的相應(yīng)的宏

    在此之前還要針對(duì)具體的NAND Flash芯片,對(duì)NAND Flash的底層驅(qū)動(dòng)代碼進(jìn)行必要的修改,使U-Boot支持大容量的NAND Flash。

    在U-Boot的源代碼目錄中,首先添加自己的開(kāi)發(fā)板命名為Key2440(可任意設(shè)置),然后再添加配置文件include/configs/Key2440.h,并在文件中添加如下宏定義:

    #define CONFIG_CMD_NAND_YAFFS2 1

    /*支持Yaffs2文件系統(tǒng)*/

    #define CONFIG _CMD _NAND _YAFFS2 _SKIPFB 1

    /*Yaffs2文件系統(tǒng)特性決定跳過(guò)第一個(gè)可用的邏輯塊*/

    3.4 添加新的U-Boot命令支持燒寫(xiě)Yaffs2文件系統(tǒng)

    U-Boot的命令為用戶(hù)提供了交互功能,并且已經(jīng)實(shí)現(xiàn)了幾十個(gè)常用的命令。如果開(kāi)發(fā)板需要很特殊的操作,可以添加新的U-Boot命令。U-Boot的每一個(gè)命令都是通過(guò)U_Boot_CMD宏定義的,這樣每一個(gè)U-Boot命令有一個(gè)結(jié)構(gòu)體來(lái)描述。在u-boot-2010.06版本中已經(jīng)可以通過(guò)“nand write…”、“nand write.jffs2…”等命令來(lái)燒寫(xiě)內(nèi)核,燒寫(xiě)Cramfs、Jffs2文件系統(tǒng),因此可以仿照此結(jié)構(gòu)添加燒寫(xiě)Yaffs2文件系統(tǒng)的命令。

    3.4.1 修改common/cmd_nand.c文件

    (1)先添加 “nand write [.Yaffs2]”命令的使用說(shuō)明,U-Boot中的命令都在common/cmd_nand.c文件中定義。

    U _BOOT _CMD (nand,CONFIG _SYS_M(jìn)AXARGS,1,do_nand, …….

    “nand write [.Yaffs2]addr off size- write the‘size’byte Yaffs2image starting\n” /*Yaffs2的寫(xiě)命令*/

    “at offset‘off’from memory address‘a(chǎn)ddr’(.Yaffs2 for 2048+64NAND)\n”

    (2)修改函數(shù)do_nand,添加對(duì) “write[.Yaffs2]”命令的支持,do_nand函數(shù)主要是處理與NAND Flash操作相關(guān)的命令,負(fù)責(zé)NAND命令族的區(qū)分和執(zhí)行[16]。

    }else if(s?。絅ULL &&!strcmp (s," .Yaffs2")){if(read)

    {printf ("nand read.Yaffs [2]is not provide temporarily!" );}

    else{nand->rw_oob=1;/*寫(xiě)OOB數(shù)據(jù)區(qū)*/

    #if defined(CONFIG_CMD_NAND_YAFFS2_SKIPFB)

    nand->skipfirstblk=1;/*跳過(guò)第一個(gè)可用塊*/

    #else nand->skipfirstblk=0;

    #endif

    ret=nand_write_skip_bad (nand,off,&size,(u_char*)addr);

    3.4.2 修改include/linux/mtd/mtd.h文件

    在修改do_nand時(shí)用到了rw_oob和skipfirstblk兩個(gè)結(jié)構(gòu)體數(shù)據(jù)成員,它們是mtd_info結(jié)構(gòu)體中新加的項(xiàng),mtd_info是用于描述MTD原始設(shè)備的數(shù)據(jù)結(jié)構(gòu),其中定義了大量關(guān)于MTD的數(shù)據(jù)和操作函數(shù),所以要修改mtd_info結(jié)構(gòu)添加對(duì)兩個(gè)成員的支持。

    struct mtd_in fo{u_int32_t writesize;

    u_char rw_oob;

    u_char skipfirstblk};

    3.5 修改U-Boot的MTD層的相關(guān)驅(qū)動(dòng)的代碼

    3.5.1 修改drivers/mtd/nand/nand_util.c文件

    在文件中添加NAND Flash的OOB區(qū)數(shù)據(jù)的相關(guān)操作信息。

    /*大頁(yè)NAND Flash中ECC校驗(yàn)碼信息,OOB區(qū)為64字節(jié)*/

    在進(jìn)一步深化大學(xué)英語(yǔ)教學(xué)改革的熱潮下,面對(duì)本科辦學(xué)歷史較短、辦學(xué)經(jīng)驗(yàn)不足、辦學(xué)條件也較有限的辦學(xué)實(shí)情,新升格本科院校的藝體類(lèi)本科大學(xué)英語(yǔ)教學(xué)改革所面臨的壓力和挑戰(zhàn)可想而知。但是,只要切實(shí)結(jié)合自身的辦學(xué)實(shí)情,嚴(yán)格遵循“分類(lèi)指導(dǎo)、因材施教”、“動(dòng)態(tài)分層”、“課程教學(xué)漸進(jìn)性、持續(xù)性和靈活性”等原則,將分類(lèi)分層教學(xué)模式與課程階段遞進(jìn)式教學(xué)模式、必修課程和選修課程有機(jī)結(jié)合,勇于實(shí)踐和創(chuàng)新,新升格本科院校就一定能開(kāi)辟出一條獨(dú)特的藝體類(lèi)本科大學(xué)英語(yǔ)教學(xué)之路,培養(yǎng)出新時(shí)期國(guó)家和社會(huì)所需要的藝體類(lèi)復(fù)合型人才。

    static struct nand_ecclayout Yaffs2_ecclayout= {

    .useecc= MTD_NANDECC_PLACE,

    /*ECC的放置模式*/

    .eccbytes=24, /*ECC字節(jié)數(shù)*/

    .eccpos= { 40,41,……62,63 }

    /*ECC校驗(yàn)碼在OOB區(qū)中的位置*/

    .oobfree= {{2,38}} /*還可被自由使用OOB區(qū)域的開(kāi)始位置和長(zhǎng)度*/};

    剛才在添加 “nand write[.Yaffs2]”命令的代碼中,調(diào)用了nand_write_skip_bad函數(shù),還要對(duì)其進(jìn)行相應(yīng)修改增加兩部分程序,一部分是為了計(jì)算正常數(shù)據(jù)區(qū)的長(zhǎng)度;另一部分是為了在寫(xiě)入一段數(shù)據(jù)后,數(shù)據(jù)指針能正確指向下一段數(shù)據(jù)。

    (1)int nand_write_skip_bad (nand_info_t*nand,loff_t offset,size_t*length,u_char*buffer){

    #if defined (CONFIG_CMD_NAND_YAFFS2)

    /*得到正常數(shù)據(jù)區(qū)的長(zhǎng)度*/

    if(nand->rw_oob==1)

    {size_t oobsize=nand->oobsize;

    size_t datasize=nand->writesize;

    datapages= *length/ (datasize+oobsize);

    *length=datapages*datasize;

    left_to_write= *length;

    #if!defined (CONFIG_M(jìn)TD_NAND_YAFFS2)

    if(len_incl_bad== *length){

    rval=nand_write(nand,offset,length,+buffer);

    return rval; }

    (2)/*使數(shù)據(jù)指針指向下一段數(shù)據(jù)*/

    if(nand->rw_oob==1)

    p_buffer+=write_size+ (write_size/nand->

    writesiz*nand->+oobsize);else p_buffer+= write_size;

    3.5.2 修改drivers/mtd/nand/nand_base.c文件

    在上步中nand_write_skip_bad函數(shù)又對(duì)nand_write函數(shù)進(jìn)行了訪(fǎng)問(wèn),所以還要對(duì)nand_write函數(shù)進(jìn)行修改,添加對(duì)Yaffs2的支持。主要是添加兩部分代碼,一部分把正常數(shù)據(jù)與OOB區(qū)數(shù)據(jù)進(jìn)行分離;另一部分將寫(xiě)頁(yè)時(shí)的模式設(shè)置為MTD_OOB_RAW,使寫(xiě)頁(yè)時(shí)不再進(jìn)行ECC值的計(jì)算。因?yàn)楦鶕?jù)Yaffs2文件系統(tǒng)的特性,ECC的校驗(yàn)值已經(jīng)包含在了Yaffs2文件系統(tǒng)自帶的OOB區(qū)中,不能重寫(xiě)入。在此模式下,寫(xiě)入正常數(shù)據(jù)后會(huì)把OOB區(qū)緩存的數(shù)據(jù)寫(xiě)入NAND Flash的OOB區(qū)中。

    nand_write函數(shù)在drivers/mtd/nand/nand_base.c文件中。

    (1)static int nand_write (struct mtd_info*mtd,loff_t to,s ize_t len,size_t*retlen,const uint8_t*buf)

    { if(mtd->rw_oob==1)

    { size_t oobsize= mtd->oobsize;

    /*mtd->oobsize是U-Boot初始化NAND Flash時(shí)得到的OOB區(qū)的大小,本系統(tǒng)中用的是三星K9K4G08U0M芯片OOB區(qū)為64字節(jié)*/

    size_t datasize= mtd->writesize; /*NAND Flash頁(yè)大小2KB*/

    uint8_t oobtemp [oobsize];/*臨時(shí) OOB區(qū)*/

    datapages=len/(datasize); /*需用頁(yè)數(shù)/*

    for(i=0;i< (datapages);i++)

    /*把正常數(shù)據(jù)與OOB區(qū)數(shù)據(jù)進(jìn)行分離*/

    {memcpy ((void*)oobtemp,(void*)(buf+datasize* (i+1)),oobsize);

    memmove((void*)(buf+datasize* (i+1)),(void*)(buf+datasize* (i+1)+oobsize), (datapages- (i+1))* (datasize)+ (datapages-1)*oobsize);

    …….. }}

    (2)/*設(shè)置模式為MTD_OOB_RAW,使寫(xiě)頁(yè)時(shí)不再進(jìn)行ECC值的計(jì)算*/

    chip->ops.mode=MTD_OOB_RAW/*模式設(shè)置*/

    上述對(duì)U-Boot代碼的修改其實(shí)主要是通過(guò)修改U-Boot的NAND Flash讀寫(xiě)命令,添加讀寫(xiě)Yaffs2文件系統(tǒng)的命令,并對(duì)支持該命令的函數(shù)和被調(diào)用過(guò)的函數(shù)進(jìn)行相應(yīng)修改,針對(duì)大頁(yè)NAND Flash和Yaffs2文件系統(tǒng)的特點(diǎn)增加處理OOB區(qū)數(shù)據(jù)的功能,至此U-Boot已經(jīng)實(shí)現(xiàn)了對(duì)Yaffs2文件系統(tǒng)的支持。

    4 U-Boot的編譯與測(cè)試

    對(duì)U-Boot重新編譯,生成新的U-Boot.bin文件并用JLink工具將其燒入NAND Flash后啟動(dòng)本系統(tǒng),在串口工具中能夠看到提示信息,輸入nand info命令可查看到NAND Flash的信息,說(shuō)明U-Boot識(shí)別出了NAND Flash。在U-Boot的命令行中輸入nand help命令,可以看到剛添加的命令nand write[.Yaffs2]addr off size,這樣就可以用它來(lái)下載Yaffs2文件系統(tǒng)了。

    使用mkyaffs2image工具制作Yaffs2文件系統(tǒng),手工輸入燒寫(xiě)命令 Key2440>nand write.Yaffs2 0x30000000 0x50000 0x3625170,燒寫(xiě)完畢后會(huì)提示:

    NAND write:device 0offset 0x50000,size 0x3625170 skip the first good block 0x3838600

    Bad block at 0x1040000in erase block from 0x1040000 will be skipped

    Bad block at 0x1060000in erase block from 0x1060000 will be skipped

    ……..

    Writing data at 0x0x3838600-100%complete

    52348128bytes written:OK

    說(shuō)明Yaffs2文件系統(tǒng)已成功下載到NAND Flash中。

    5 結(jié)束語(yǔ)

    Yaffs2文件系統(tǒng)與大容量NAND Flash的結(jié)合,能夠加快文件系統(tǒng)的加載速度,實(shí)現(xiàn)錯(cuò)誤檢測(cè)、壞塊處理以及可靠地掉電保護(hù)。編譯和測(cè)試后的結(jié)果表明改進(jìn)后的UBoot可以將Yaffs2文件系統(tǒng)寫(xiě)入到大容量NAND Flash中,完善了U-Boot的文件燒寫(xiě)功能。改進(jìn)后的U-Boot已經(jīng)成功移植到正在開(kāi)發(fā)的工業(yè)用嵌入式手持設(shè)備中,這樣可以在大容量NAND Flash中使用Yaffs2文件系統(tǒng),為設(shè)計(jì)開(kāi)發(fā)人員帶來(lái)了方便,同時(shí)產(chǎn)品的性能也得到了提升,在嵌入式系統(tǒng)的開(kāi)發(fā)過(guò)程中具有實(shí)用價(jià)值。

    [1]WU Yuxiang,ZHOU Jianxiang,GUO Jianxun.Porting and function expansion of U-boot based on S3C2410 [J].Computer Engineering and Design,2010,31 (14):729-732 (in Chinese). [吳玉香,周建香,郭建勛.U-Boot在S3C2410上的移植及功能擴(kuò)展 [J].計(jì)算機(jī)工程與設(shè)計(jì),2010,31 (14):729-732.]

    [2]Lech Józwiak,Nadia Nedjah,Miguel Figueroa.Modern development methods and tools for embedded reconfigurable systems:a survey[J].Integration the VLSI Journal,2010,43 (1):1-33.

    [3]LI Qingcheng,SUN Mingda.Design of NAND flash memorybased embedded file system [J].Application Research of Computers,2006,23 (4):231-233.(in Chinese).[李慶誠(chéng),孫明達(dá).基于NAND型閃存的嵌入式文件系統(tǒng)設(shè)計(jì) [J].計(jì)算機(jī)應(yīng)用研究,2006,23 (4):231-233.]

    [4]WEI Dongshan.Complete guide to embedded Linux application development[M].Beijing:Posts & Telecom Press,2008:283-287 (in Chinese).[韋東山.嵌入式Linux應(yīng)用開(kāi)發(fā)完全手冊(cè) [M].北京:人民郵電出版社,2008:283-287.]

    [5]Micron Company.Small block vs.large block NAND flash devices[EB/OL].[2007-01-20].http://www.micron.com.

    [6]LI Jun.Detailed embedded Linux device driver development[M].Beijing:Posts & Telecom Press,2008:308-310 (in Chinese).[李俊.嵌入式Linux設(shè)備驅(qū)動(dòng)開(kāi)發(fā)詳解 [M].北京:人民郵電出版社,2008:308-310.]

    [7]CHUNG Taesun,PARK Dong joo,PARK Sangwon,et al.A survey of flash translation layer [J].Journal of Systems Architecture,2009,55 (5-6):332-343.

    [8]ZHANG Jian,WANG Jin.Approach to protect data on taxcontrolled system with ucLinux [J].Computer Engineering and Design,2006,27 (16):3055-3057 (in Chinese). [張健,王錦.基于ucLinux稅控系統(tǒng)的數(shù)據(jù)保護(hù)方案設(shè)計(jì) [J].計(jì)算機(jī)工程與設(shè)計(jì),2006,27 (16):3055-3057.]

    [9]SUN Feng,ZHANG Fuxing.Resarch and improvement of YAFFS file system [J].Computer Engineering,2008,34(5):257-259 (in Chinese). [孫豐,張福新.YAFFS文件系統(tǒng)的 研 究 與 改 進(jìn) [J].計(jì) 算 機(jī) 工 程,2008,34 (5):257-259.]

    [10]WEI Feng,LU Zaiqi,LIU Wei.Realization of YAFFS2in the embedded system [J].Modem Electronics Technique,2010,33 (8):30-34 (in Chinese). [韋峰,盧再奇,劉偉.YAFFS2在嵌入式系統(tǒng)中的實(shí)現(xiàn) [J].現(xiàn)代電子技術(shù),2010,33 (8):30-34.]

    [11]LONG Yachun,HUANG Pu,WU Sheng.Create a YAFFS2 bases on super-large NAND flash in Linux [J].Journal of Beijing Electronic Science and Technology Institute,2007,15(2):80-84 (in Chinese).[龍亞春,黃璞,吳勝.超大容量NAND Flash文件系統(tǒng)—YAFFS2在Linux下的實(shí)現(xiàn) [J].北京電子科技學(xué)院學(xué)報(bào),2007,15 (2):80-84.]

    [12]Wookey.YAFFS2specification and development notes [EB/OL].[2005-05-23].http://www.aleph1.co.uk/node/38.

    [13]CAI Yong,PENG Fushi.Research on NAND flash system YAFFS [J].Journal of Zhengzhou University of Light Industry(Natural Science),2007,22 (6):54-58 (in Chinese).[蔡勇,彭福石.NAND閃存文件系統(tǒng)YAFFS的研究 [J].鄭州輕工業(yè)學(xué)院學(xué)報(bào) (自然科學(xué)版),2007,22 (6):54-58.]

    [14]LEE Kiyong,KIM Hyojun,WOO Kyounggu,et al.Design and implementation of MLC NAND flash-based DBMS for mobile devices [J].Journal of Systems and Software,2009,82(9):1447-1458.

    [15]LU Chihyuan,Hsieh Kuangyeu,LIU Rich.Future challenges of flash memory technologies [J].Microelectronic Engineering,2009,86 (3):283-286.

    [16]The U-boot transplantation mini2440detailed manual [R].Guangzhou:Friendly Arm Technology Co Ltd,2010:75-79(in Chinese). [mini2440之 U-boot移植詳細(xì)手冊(cè) [R].廣州:友善之臂科技有限公司,2010:75-79.]

    猜你喜歡
    每頁(yè)大容量字節(jié)
    奶奶的“圖畫(huà)書(shū)”
    No.8 字節(jié)跳動(dòng)將推出獨(dú)立出口電商APP
    No.10 “字節(jié)跳動(dòng)手機(jī)”要來(lái)了?
    12-20升大容量PET瓶裝式吹瓶機(jī)
    簡(jiǎn)談MC7字節(jié)碼
    能變出雨衣的18升大容量背包
    基于大容量指紋識(shí)別的實(shí)時(shí)身份認(rèn)證系統(tǒng)
    版面費(fèi)調(diào)整通知
    大容量Flash在井下記錄儀中的應(yīng)用
    版面費(fèi)調(diào)整通知
    色视频www国产| 啦啦啦啦在线视频资源| 黄色欧美视频在线观看| 99视频精品全部免费 在线| av在线蜜桃| 国产真实伦视频高清在线观看| 国产伦精品一区二区三区视频9| 亚洲精品成人久久久久久| 丰满乱子伦码专区| 亚洲欧美日韩高清专用| 国产大屁股一区二区在线视频| 欧美人与善性xxx| 久久热精品热| 亚洲欧洲日产国产| 最近手机中文字幕大全| 观看免费一级毛片| 变态另类成人亚洲欧美熟女| 成人国产麻豆网| 一个人免费在线观看电影| 亚洲国产精品成人久久小说 | 在线播放无遮挡| 午夜福利在线观看免费完整高清在 | 亚洲av.av天堂| 岛国在线免费视频观看| 国产中年淑女户外野战色| 久久精品国产鲁丝片午夜精品| 日韩国内少妇激情av| 日韩av不卡免费在线播放| 我的女老师完整版在线观看| 国产成人影院久久av| 校园春色视频在线观看| 伦理电影大哥的女人| 亚洲乱码一区二区免费版| 波多野结衣高清作品| 97热精品久久久久久| 如何舔出高潮| 国产精品乱码一区二三区的特点| 91aial.com中文字幕在线观看| 男女边吃奶边做爰视频| 中文字幕精品亚洲无线码一区| 国产 一区 欧美 日韩| 国产精品99久久久久久久久| 18禁黄网站禁片免费观看直播| 乱人视频在线观看| 欧美色欧美亚洲另类二区| 联通29元200g的流量卡| 国产视频内射| 特级一级黄色大片| 久久国产乱子免费精品| 夜夜爽天天搞| 天堂影院成人在线观看| 国产一级毛片七仙女欲春2| 亚洲av男天堂| 国产精品久久久久久av不卡| 欧美成人精品欧美一级黄| 欧美日韩国产亚洲二区| 哪个播放器可以免费观看大片| 乱人视频在线观看| 99久国产av精品| 国产伦在线观看视频一区| 亚洲精品日韩在线中文字幕 | 久久久久久久久久成人| av国产免费在线观看| 欧美性感艳星| 如何舔出高潮| 美女脱内裤让男人舔精品视频 | 青春草国产在线视频 | 在线免费观看的www视频| 久久午夜福利片| 亚洲精品乱码久久久v下载方式| 国产精品乱码一区二三区的特点| 国产伦精品一区二区三区视频9| 少妇猛男粗大的猛烈进出视频 | 久久精品久久久久久噜噜老黄 | 九九热线精品视视频播放| 18禁在线播放成人免费| 欧美xxxx黑人xx丫x性爽| 亚洲最大成人手机在线| 国产一级毛片在线| 联通29元200g的流量卡| 99久久九九国产精品国产免费| av天堂中文字幕网| 久久99精品国语久久久| av又黄又爽大尺度在线免费看 | 精品人妻视频免费看| 久久精品久久久久久噜噜老黄 | 国产一区二区在线av高清观看| 激情 狠狠 欧美| 两个人视频免费观看高清| 日韩欧美精品免费久久| 国产亚洲欧美98| 内地一区二区视频在线| 夫妻性生交免费视频一级片| 亚洲国产欧洲综合997久久,| 一级黄片播放器| 日韩在线高清观看一区二区三区| 亚洲精品成人久久久久久| 日日摸夜夜添夜夜爱| 国产91av在线免费观看| 人体艺术视频欧美日本| 国产亚洲91精品色在线| 1024手机看黄色片| 国产成人一区二区在线| 国产精品av视频在线免费观看| 男女视频在线观看网站免费| 国产色婷婷99| av在线观看视频网站免费| 美女xxoo啪啪120秒动态图| 韩国av在线不卡| 国产伦在线观看视频一区| 亚洲精品成人久久久久久| 免费人成视频x8x8入口观看| 久久人妻av系列| 成年女人看的毛片在线观看| 欧美性猛交黑人性爽| 久久久久性生活片| 日韩在线高清观看一区二区三区| 少妇被粗大猛烈的视频| 久久国内精品自在自线图片| 国产精品人妻久久久久久| 久久99精品国语久久久| 亚洲精品久久国产高清桃花| 啦啦啦韩国在线观看视频| 悠悠久久av| 亚洲精品国产成人久久av| 免费在线观看成人毛片| 久久精品国产亚洲av涩爱 | 色哟哟·www| 精品一区二区三区视频在线| 日日摸夜夜添夜夜添av毛片| 少妇丰满av| 夜夜爽天天搞| 一级毛片aaaaaa免费看小| 91午夜精品亚洲一区二区三区| 国产精品女同一区二区软件| 久久精品国产亚洲av天美| 中文亚洲av片在线观看爽| 亚洲国产欧洲综合997久久,| 婷婷色av中文字幕| 国产精品久久久久久久电影| 舔av片在线| 国产一级毛片在线| 国产极品精品免费视频能看的| 哪里可以看免费的av片| av女优亚洲男人天堂| 国产午夜精品一二区理论片| 久久精品久久久久久噜噜老黄 | 国产色爽女视频免费观看| 成人毛片a级毛片在线播放| 欧美精品国产亚洲| 又爽又黄无遮挡网站| 国产毛片a区久久久久| 国产精品,欧美在线| 国产精品久久久久久精品电影小说 | 国产成人午夜福利电影在线观看| 色噜噜av男人的天堂激情| 亚洲va在线va天堂va国产| 精品国内亚洲2022精品成人| 婷婷色综合大香蕉| 国产片特级美女逼逼视频| 亚洲精华国产精华液的使用体验 | 男女那种视频在线观看| 最好的美女福利视频网| 亚洲精品国产av成人精品| 国产精品电影一区二区三区| 五月伊人婷婷丁香| 国产69精品久久久久777片| 精品少妇黑人巨大在线播放 | 99久久无色码亚洲精品果冻| 久久久a久久爽久久v久久| 亚洲精品乱码久久久久久按摩| 观看美女的网站| 欧洲精品卡2卡3卡4卡5卡区| 亚洲精品亚洲一区二区| 最后的刺客免费高清国语| 国产精品电影一区二区三区| avwww免费| 毛片女人毛片| 国产精品99久久久久久久久| 长腿黑丝高跟| 国产91av在线免费观看| 日韩精品青青久久久久久| 最近中文字幕高清免费大全6| 又爽又黄a免费视频| 男的添女的下面高潮视频| 超碰av人人做人人爽久久| 高清毛片免费看| 12—13女人毛片做爰片一| 免费观看人在逋| 日韩欧美国产在线观看| 亚洲欧美日韩无卡精品| 国产老妇伦熟女老妇高清| 尾随美女入室| 中文精品一卡2卡3卡4更新| 欧美xxxx性猛交bbbb| 黄色配什么色好看| 国国产精品蜜臀av免费| 老师上课跳d突然被开到最大视频| 天天躁夜夜躁狠狠久久av| 亚洲av第一区精品v没综合| 日韩欧美国产在线观看| 免费观看a级毛片全部| 久久九九热精品免费| kizo精华| 亚洲18禁久久av| 日本黄色片子视频| 1000部很黄的大片| 精品久久久久久久末码| 国产在线男女| 亚洲综合色惰| 免费看日本二区| 你懂的网址亚洲精品在线观看 | 国产黄a三级三级三级人| 成年免费大片在线观看| 我的老师免费观看完整版| 观看美女的网站| 精品久久久久久久久久免费视频| 自拍偷自拍亚洲精品老妇| 一区二区三区免费毛片| 国产伦理片在线播放av一区 | 亚洲欧美精品综合久久99| 日本-黄色视频高清免费观看| 我要看日韩黄色一级片| 亚洲三级黄色毛片| 97人妻精品一区二区三区麻豆| 国产精华一区二区三区| 成人综合一区亚洲| 免费观看在线日韩| 床上黄色一级片| 看免费成人av毛片| 97人妻精品一区二区三区麻豆| 一夜夜www| 亚洲美女搞黄在线观看| 欧美区成人在线视频| 18禁黄网站禁片免费观看直播| 国产精品久久视频播放| 日韩欧美国产在线观看| 日韩欧美 国产精品| 国产高清视频在线观看网站| 一本久久中文字幕| 久久精品国产鲁丝片午夜精品| 成年女人看的毛片在线观看| 国产精品日韩av在线免费观看| 国产真实乱freesex| 美女被艹到高潮喷水动态| 一进一出抽搐gif免费好疼| 九九热线精品视视频播放| 成年免费大片在线观看| 中文资源天堂在线| 在线观看av片永久免费下载| 亚洲熟妇中文字幕五十中出| 亚洲欧美日韩高清专用| 韩国av在线不卡| 99热这里只有是精品在线观看| 免费看av在线观看网站| 又黄又爽又刺激的免费视频.| 人人妻人人看人人澡| 亚洲欧美日韩东京热| 在线观看66精品国产| 日韩人妻高清精品专区| 国产一区二区三区av在线 | 一进一出抽搐动态| 少妇丰满av| 久久久精品94久久精品| 亚洲在线自拍视频| 高清日韩中文字幕在线| 内地一区二区视频在线| 五月伊人婷婷丁香| 女人被狂操c到高潮| 99久久久亚洲精品蜜臀av| 国产成人a∨麻豆精品| 欧美日本视频| 欧美一区二区国产精品久久精品| 亚洲在线自拍视频| 久久中文看片网| 久久草成人影院| 欧美一区二区精品小视频在线| 一区二区三区免费毛片| 国产精品.久久久| 九九热线精品视视频播放| 国产亚洲av片在线观看秒播厂 | 精品少妇黑人巨大在线播放 | 午夜激情福利司机影院| 欧美一区二区精品小视频在线| 国模一区二区三区四区视频| 99久久九九国产精品国产免费| 成年女人永久免费观看视频| 干丝袜人妻中文字幕| 人妻制服诱惑在线中文字幕| 只有这里有精品99| 国产私拍福利视频在线观看| 青春草国产在线视频 | 免费搜索国产男女视频| 一个人看视频在线观看www免费| 国产精品日韩av在线免费观看| 久久久a久久爽久久v久久| 男人舔女人下体高潮全视频| 晚上一个人看的免费电影| 久久欧美精品欧美久久欧美| 成人性生交大片免费视频hd| 国产精品一区二区性色av| 一区二区三区免费毛片| 尾随美女入室| 久久人人精品亚洲av| 亚洲高清免费不卡视频| 久久久精品大字幕| 亚洲精品乱码久久久久久按摩| 久久精品国产亚洲av香蕉五月| 床上黄色一级片| 日韩亚洲欧美综合| 亚洲不卡免费看| 日韩在线高清观看一区二区三区| 国产女主播在线喷水免费视频网站 | 国产人妻一区二区三区在| 99久久成人亚洲精品观看| 人妻制服诱惑在线中文字幕| 美女大奶头视频| 综合色av麻豆| 熟女人妻精品中文字幕| 久久人妻av系列| 在线a可以看的网站| 丰满人妻一区二区三区视频av| 日韩一区二区三区影片| 边亲边吃奶的免费视频| 99在线视频只有这里精品首页| 中文亚洲av片在线观看爽| 国产精品久久久久久av不卡| 亚洲色图av天堂| 亚洲av一区综合| 亚洲成av人片在线播放无| 色哟哟·www| 国内精品久久久久精免费| 日韩欧美一区二区三区在线观看| 高清毛片免费看| 精品久久久久久久久亚洲| 啦啦啦啦在线视频资源| 国产真实伦视频高清在线观看| 久久久久性生活片| 国产三级中文精品| 美女 人体艺术 gogo| 寂寞人妻少妇视频99o| 最近手机中文字幕大全| 精品熟女少妇av免费看| 日本一二三区视频观看| 亚洲欧美精品自产自拍| 日韩亚洲欧美综合| 一区二区三区高清视频在线| 国产老妇伦熟女老妇高清| 成人特级黄色片久久久久久久| 中国美女看黄片| 网址你懂的国产日韩在线| 国产高清有码在线观看视频| 日韩,欧美,国产一区二区三区 | 午夜激情欧美在线| 亚洲人成网站在线播放欧美日韩| 久久久精品欧美日韩精品| 99热这里只有是精品50| 亚洲av.av天堂| 久久久久久久久久久丰满| 在线观看一区二区三区| 女人被狂操c到高潮| 欧美区成人在线视频| 日韩成人av中文字幕在线观看| 日日摸夜夜添夜夜添av毛片| 黑人高潮一二区| 麻豆精品久久久久久蜜桃| 91久久精品电影网| 国产人妻一区二区三区在| 99久久久亚洲精品蜜臀av| 国产老妇伦熟女老妇高清| 国产成人精品久久久久久| 春色校园在线视频观看| 三级国产精品欧美在线观看| 国产精品久久久久久精品电影小说 | 国产高潮美女av| 最后的刺客免费高清国语| 欧美日韩综合久久久久久| av卡一久久| 网址你懂的国产日韩在线| 久久韩国三级中文字幕| 国产精品一区二区在线观看99 | 男人舔女人下体高潮全视频| 日本在线视频免费播放| 国产精品久久久久久精品电影| 国内久久婷婷六月综合欲色啪| 男女做爰动态图高潮gif福利片| 欧美极品一区二区三区四区| 99久久精品热视频| 国产综合懂色| 久久精品影院6| 日韩大尺度精品在线看网址| 国产亚洲91精品色在线| a级一级毛片免费在线观看| 三级毛片av免费| 日韩在线高清观看一区二区三区| 国产一区二区三区在线臀色熟女| 久久久久久久久久成人| 99国产精品一区二区蜜桃av| 国产精品一区二区在线观看99 | 日韩欧美一区二区三区在线观看| 丝袜喷水一区| 哪里可以看免费的av片| 久久久久久久久中文| 久久久精品欧美日韩精品| 尾随美女入室| 欧美zozozo另类| 白带黄色成豆腐渣| 一边摸一边抽搐一进一小说| 国产成人精品久久久久久| 欧美色视频一区免费| 国产爱豆传媒在线观看| 亚洲成a人片在线一区二区| 国产三级在线视频| 亚洲av不卡在线观看| 搡女人真爽免费视频火全软件| 欧洲精品卡2卡3卡4卡5卡区| 丰满人妻一区二区三区视频av| 亚洲人成网站高清观看| 亚洲精品粉嫩美女一区| av在线亚洲专区| 最近中文字幕高清免费大全6| 婷婷亚洲欧美| 春色校园在线视频观看| 午夜福利高清视频| 欧美丝袜亚洲另类| 日本色播在线视频| 99久久人妻综合| 日日撸夜夜添| 中文字幕久久专区| 亚洲精品国产成人久久av| 国产伦在线观看视频一区| 成熟少妇高潮喷水视频| av国产免费在线观看| 九九爱精品视频在线观看| 91麻豆精品激情在线观看国产| 精品久久久久久久久久免费视频| 色综合站精品国产| 麻豆成人av视频| 一区二区三区四区激情视频 | 能在线免费观看的黄片| av在线观看视频网站免费| 国产精品久久久久久久久免| 久久久成人免费电影| 国产高清三级在线| 亚洲无线在线观看| 久久精品国产亚洲av涩爱 | 1000部很黄的大片| 国产视频内射| 亚洲美女视频黄频| 久久久精品大字幕| 听说在线观看完整版免费高清| 伊人久久精品亚洲午夜| 久久午夜福利片| 寂寞人妻少妇视频99o| 亚洲人与动物交配视频| 深夜a级毛片| 亚洲精品乱码久久久v下载方式| 国产精品,欧美在线| 啦啦啦韩国在线观看视频| 看非洲黑人一级黄片| 秋霞在线观看毛片| 亚洲欧美日韩无卡精品| 99久久成人亚洲精品观看| 波多野结衣高清作品| 午夜免费男女啪啪视频观看| 精品免费久久久久久久清纯| 波野结衣二区三区在线| 国产淫片久久久久久久久| 日本五十路高清| 国产v大片淫在线免费观看| 国产精品久久久久久精品电影| 国产色婷婷99| 18禁在线播放成人免费| 夫妻性生交免费视频一级片| 成人av在线播放网站| 国产av在哪里看| 欧美另类亚洲清纯唯美| 99热只有精品国产| 亚洲欧美成人精品一区二区| 狠狠狠狠99中文字幕| 成人亚洲欧美一区二区av| 能在线免费看毛片的网站| 欧美精品一区二区大全| 夜夜夜夜夜久久久久| 最新中文字幕久久久久| 成人综合一区亚洲| 欧美日韩乱码在线| 亚洲人成网站在线播放欧美日韩| 最近的中文字幕免费完整| 国产 一区精品| 国产在视频线在精品| 麻豆国产97在线/欧美| 国产伦一二天堂av在线观看| 国产精品久久视频播放| 大型黄色视频在线免费观看| 亚洲av电影不卡..在线观看| 欧美精品国产亚洲| 内射极品少妇av片p| 99riav亚洲国产免费| 日韩一本色道免费dvd| 亚洲精品456在线播放app| 高清日韩中文字幕在线| 国产精品人妻久久久久久| 99国产精品一区二区蜜桃av| 国产精品一区二区性色av| 色视频www国产| www.色视频.com| a级一级毛片免费在线观看| 91在线精品国自产拍蜜月| 在线天堂最新版资源| 一级黄片播放器| 热99在线观看视频| a级一级毛片免费在线观看| av在线播放精品| av.在线天堂| a级毛色黄片| 色综合亚洲欧美另类图片| 看片在线看免费视频| 欧美激情在线99| 午夜福利在线观看免费完整高清在 | 全区人妻精品视频| 亚洲成a人片在线一区二区| 精品一区二区免费观看| 免费一级毛片在线播放高清视频| 两个人视频免费观看高清| 国内精品美女久久久久久| 女人被狂操c到高潮| 美女黄网站色视频| 91精品一卡2卡3卡4卡| 卡戴珊不雅视频在线播放| 日韩欧美 国产精品| 女的被弄到高潮叫床怎么办| 长腿黑丝高跟| 九草在线视频观看| 在线免费十八禁| 精华霜和精华液先用哪个| 亚洲在线观看片| 一夜夜www| 国内精品美女久久久久久| 国产精品伦人一区二区| 亚洲国产欧洲综合997久久,| 国产成人freesex在线| 色播亚洲综合网| 国产爱豆传媒在线观看| 高清毛片免费看| a级毛片免费高清观看在线播放| 网址你懂的国产日韩在线| 可以在线观看的亚洲视频| 国内揄拍国产精品人妻在线| 99久久精品一区二区三区| 免费人成视频x8x8入口观看| 精品人妻偷拍中文字幕| 欧美成人精品欧美一级黄| 哪里可以看免费的av片| 国产精品.久久久| 一进一出抽搐动态| 久久久成人免费电影| 日韩在线高清观看一区二区三区| 18禁裸乳无遮挡免费网站照片| 99国产极品粉嫩在线观看| 乱码一卡2卡4卡精品| 青春草亚洲视频在线观看| 国产精品一区二区在线观看99 | 丰满乱子伦码专区| 成人亚洲欧美一区二区av| 久久精品国产亚洲网站| 精品一区二区免费观看| 欧美日本视频| 99久国产av精品国产电影| 亚洲国产精品sss在线观看| 亚洲人成网站高清观看| 日日干狠狠操夜夜爽| 一进一出抽搐gif免费好疼| 欧美高清性xxxxhd video| 久久久久久久午夜电影| 精品不卡国产一区二区三区| 美女高潮的动态| 亚洲熟妇中文字幕五十中出| 色综合色国产| 99热全是精品| 黑人高潮一二区| 黄色配什么色好看| 午夜激情欧美在线| 国产精品免费一区二区三区在线| 人人妻人人看人人澡| 亚洲va在线va天堂va国产| 久久人人精品亚洲av| 成人综合一区亚洲| av卡一久久| 2021天堂中文幕一二区在线观| 国产高清三级在线| 欧美激情在线99| 亚洲精品日韩在线中文字幕 | 黄色日韩在线| 精品无人区乱码1区二区| 在线免费观看的www视频| 亚洲欧美日韩东京热| 亚洲人与动物交配视频| 国产精品,欧美在线| 日韩,欧美,国产一区二区三区 | 看片在线看免费视频| 一级毛片我不卡| 精品人妻视频免费看| av专区在线播放| 成人无遮挡网站| 91av网一区二区| 波多野结衣巨乳人妻| 18禁裸乳无遮挡免费网站照片| 亚洲精品日韩av片在线观看| 免费一级毛片在线播放高清视频| 一级毛片我不卡| 18禁黄网站禁片免费观看直播| 波多野结衣巨乳人妻| 免费观看的影片在线观看| 男女下面进入的视频免费午夜|