專利名稱:向閃存芯片中燒寫數(shù)據(jù)文件的方法、預(yù)處理方法及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及閃存技術(shù)領(lǐng)域,尤其涉及一種向閃存芯片中燒寫數(shù)據(jù)文件的方法、預(yù)處理方法及裝置。
背景技術(shù):
與NOR Flash (英特爾公司開發(fā)的一種閃存技術(shù))相比,NAND Flash (與非閃存,東芝公司開發(fā)的一種閃存技術(shù))的集成度更高,每bit (比特)成本更低,是高數(shù)據(jù)存儲(chǔ)密度的理想解決方案。一種常用的NAND Flash芯片量產(chǎn)方案是,采用NAND Flash編程器將NAND Flash系統(tǒng)軟件的數(shù)據(jù)文件燒寫到多個(gè)NAND Flash空白芯片中。由于NAND Flash存在“位反轉(zhuǎn)(bit twiddling)”現(xiàn)象,因此 NAND Flash 編程器需要使用 ECC (Error Correcting Code,錯(cuò)誤檢查和糾正)算法對(duì)數(shù)據(jù)文件進(jìn)行校驗(yàn)來確保系統(tǒng)軟件運(yùn)行的可靠性。在NAND Flash中常用的ECC算法包括Hanming (漢明碼)糾錯(cuò)算法、BCH (—種二元線性循環(huán)碼)糾錯(cuò)算法和RC (BCH碼的一種特例)糾錯(cuò)算法等等。如果NAND Flash編程器使用ECC算法對(duì)數(shù)據(jù)文件進(jìn)行校驗(yàn),具體的NAND Flash編程器以“頁(yè)”為單位依次從數(shù)據(jù)文件中讀取數(shù)據(jù),對(duì)每次讀取的數(shù)據(jù)進(jìn)行ECC算法校驗(yàn),生成ECC校驗(yàn)碼。完成對(duì)數(shù)據(jù)文件的ECC算法校驗(yàn)后,將攜帶ECC校驗(yàn)碼的數(shù)據(jù)文件燒寫到NAND Flash芯片中。針對(duì)不同的應(yīng)用,向NAND Flash芯片中燒寫數(shù)據(jù)文件所使用的ECC算法不同,不同的NAND Flash編程器所支持的ECC算法也不同。NAND Flash芯片量產(chǎn)依賴于NAND Flash編程器所支持的ECC算法,需要針對(duì)向NAND Flash芯片燒寫數(shù)據(jù)文件所需的ECC算法,選擇支持相應(yīng)的ECC算法的NAND Flash編程器,增加了生產(chǎn)成本。對(duì)于其他需要進(jìn)行ECC算法校驗(yàn)處理的閃存芯片,向其中燒寫數(shù)據(jù)文件時(shí),同樣存在依賴編程器所支持的ECC算法導(dǎo)致生產(chǎn)成本增加的問題。
發(fā)明內(nèi)容
本發(fā)明的目的是提供一種向閃存芯片中燒寫數(shù)據(jù)文件的方法、預(yù)處理方法及裝置,以解決向閃存芯片中燒寫數(shù)據(jù)文件時(shí)依賴閃存編程器所支持的ECC算法導(dǎo)致生產(chǎn)成本增加的問題。本發(fā)明的目的是通過以下技術(shù)方案實(shí)現(xiàn)的一種向閃存芯片中燒寫數(shù)據(jù)文件的預(yù)處理方法,包括調(diào)用向所述閃存芯片中燒寫數(shù)據(jù)文件所需的ECC算法函數(shù)對(duì)所述數(shù)據(jù)文件進(jìn)行ECC算法校驗(yàn),生成ECC校驗(yàn)碼;將攜帶ECC校驗(yàn)碼的數(shù)據(jù)文件發(fā)送給關(guān)閉了 ECC算法功能的閃存編程器。一種向閃存芯片中燒寫數(shù)據(jù)文件的方法,包括關(guān)閉了 ECC算法功能的閃存芯片編程器接收攜帶ECC校驗(yàn)碼的數(shù)據(jù)文件,所述ECC校驗(yàn)碼是通過調(diào)用向所述閃存芯片中燒寫數(shù)據(jù)文件所需的ECC算法函數(shù)對(duì)所述數(shù)據(jù)文件進(jìn)行ECC算法校驗(yàn)生成的;所述閃存芯片編程器將所述攜帶ECC校驗(yàn)碼的數(shù)據(jù)文件燒寫到所述閃存芯片中。一種向閃存芯片中燒寫數(shù)據(jù)文件的預(yù)處理裝置,包括
數(shù)據(jù)文件預(yù)處理模塊,用于調(diào)用向所述閃存芯片中燒寫數(shù)據(jù)文件所需的ECC算法函數(shù)對(duì)所述數(shù)據(jù)文件進(jìn)行ECC算法校驗(yàn),生成ECC校驗(yàn)碼;數(shù)據(jù)文件發(fā)送模塊,用于將攜帶ECC校驗(yàn)碼的數(shù)據(jù)文件發(fā)送給關(guān)閉了 ECC算法功能的閃存編程器。本發(fā)明實(shí)施例提供的方法及裝置,由于不需要芯片編程器參與ECC算法校驗(yàn),SP使芯片編程器不支持向所述閃存芯片中燒寫數(shù)據(jù)文件所需的ECC算法,也可以由該芯片編程器向所述閃存芯片中燒寫數(shù)據(jù)文件,不需要更換芯片編程器,即可以支持多種ECC算法,從而避免了對(duì)芯片編程器所支持ECC算法的依賴。由于預(yù)處理過程中的ECC算法可以通過軟件實(shí)現(xiàn),其實(shí)現(xiàn)成本遠(yuǎn)遠(yuǎn)低于更換芯片編程器的成本。
圖I為本發(fā)明實(shí)施例提供的一個(gè)燒寫數(shù)據(jù)文件的預(yù)處理方法流程圖;圖2為本發(fā)明實(shí)施例提供的一個(gè)燒寫數(shù)據(jù)文件的方法流程圖;圖3為本發(fā)明實(shí)施例提供的另一個(gè)燒寫數(shù)據(jù)文件的預(yù)處理方法流程圖;圖4為本發(fā)明實(shí)施例提供的又一個(gè)燒寫數(shù)據(jù)文件的預(yù)處理方法流程圖;圖5為本發(fā)明實(shí)施例提供的裝置結(jié)構(gòu)示意圖。
具體實(shí)施例方式本發(fā)明實(shí)施例提供了一種向閃存芯片中燒寫數(shù)據(jù)文件的方法、預(yù)處理方法及裝置,在預(yù)處理過程中對(duì)數(shù)據(jù)文件進(jìn)行ECC算法校驗(yàn),生成ECC校驗(yàn)碼,然后將攜帶有ECC校驗(yàn)碼的數(shù)據(jù)文件發(fā)送給關(guān)閉了 ECC算法功能的閃存編程器,閃存編程器在將攜帶有ECC校驗(yàn)碼的數(shù)據(jù)文件燒寫到閃存芯片的過程中,不需要再對(duì)數(shù)據(jù)文件進(jìn)行ECC算法校驗(yàn)。為了實(shí)現(xiàn)上述預(yù)處理過程,技術(shù)人員預(yù)先編程實(shí)現(xiàn)常用的ECC算法函數(shù)并保存。在預(yù)處理過程中,如果存儲(chǔ)的ECC算法函數(shù)中沒有向閃存芯片中燒寫數(shù)據(jù)文件所需的ECC算法函數(shù),可以發(fā)出提示信息,以便技術(shù)人員編寫所需的ECC算法函數(shù)并保存。采用本發(fā)明實(shí)施例的方法及裝置,由于不需要芯片編程器參與ECC算法校驗(yàn),即使芯片編程器不支持向所述閃存芯片中燒寫數(shù)據(jù)文件所需的ECC算法,也可以由該芯片編程器向所述閃存芯片中燒寫數(shù)據(jù)文件,不需要更換芯片編程器,即可以支持多種ECC算法,從而避免了對(duì)芯片編程器所支持ECC算法的依賴。由于預(yù)處理過程中的ECC算法可以通過軟件實(shí)現(xiàn),其實(shí)現(xiàn)成本遠(yuǎn)遠(yuǎn)低于更換芯片編程器的成本。下面將結(jié)合附圖對(duì)本發(fā)明實(shí)施例提供的方法及裝置進(jìn)行說明。如圖I所示,本發(fā)明實(shí)施例提供的向閃存芯片中燒寫數(shù)據(jù)文件的預(yù)處理方法包括如下操作步驟100、調(diào)用向所述閃存芯片中燒寫數(shù)據(jù)文件所需的ECC算法函數(shù)對(duì)上述數(shù)據(jù)文件進(jìn)行ECC算法校驗(yàn),生成ECC校驗(yàn)碼。
步驟110、將攜帶ECC校驗(yàn)碼的數(shù)據(jù)文件發(fā)送給關(guān)閉了 ECC算法功能的閃存編程器。本發(fā)明實(shí)施例提供的預(yù)處理方法可以但不僅限于在與芯片編程器連接的上位機(jī)(如個(gè)人電腦、服務(wù)器等等)上實(shí)現(xiàn)。如圖2所示,本發(fā)明實(shí)施例提供的向閃存芯片中燒寫數(shù)據(jù)文件的方法包括如下操作步驟200、關(guān)閉了 ECC算法功能的閃存芯片編程器接收攜帶ECC校驗(yàn)碼的數(shù)據(jù)文件。其中的ECC校驗(yàn)碼是通過調(diào)用向上述閃存芯片中燒寫數(shù)據(jù)文件所需的ECC算法函數(shù)對(duì)該數(shù)據(jù)文件進(jìn)行ECC算法校驗(yàn)生成的。·步驟210、上述閃存芯片編程器將攜帶ECC校驗(yàn)碼的數(shù)據(jù)文件燒寫到該閃存芯片中。本發(fā)明實(shí)施例提供的方法不僅適用于向NAND Flash芯片燒寫數(shù)據(jù)文件之前,對(duì)數(shù)據(jù)文件進(jìn)行預(yù)處理。對(duì)于其他閃存芯片,只要是通過閃存編程器向其燒寫數(shù)據(jù)文件,且需要對(duì)數(shù)據(jù)文件進(jìn)行ECC算法校驗(yàn),都可以使用本發(fā)明實(shí)施例提供的預(yù)處理方法替換閃存編程器的ECC算法校驗(yàn)功能。如果按照對(duì)閃存芯片進(jìn)行讀寫時(shí)的讀寫單位對(duì)閃存芯片的存儲(chǔ)空間進(jìn)行劃分,那么,閃存芯片的存儲(chǔ)空間可以被劃分為多個(gè)讀寫單元。進(jìn)一步的,每個(gè)讀寫單元被劃分為數(shù)據(jù)存儲(chǔ)區(qū)域和文件信息存儲(chǔ)區(qū)域。其中,數(shù)據(jù)存儲(chǔ)區(qū)域用于存儲(chǔ)數(shù)據(jù)文件中的數(shù)據(jù),文件信息存儲(chǔ)區(qū)域用于存儲(chǔ)數(shù)據(jù)文件的ECC校驗(yàn)碼和文件系統(tǒng)相關(guān)信息。數(shù)據(jù)存儲(chǔ)區(qū)域與文件信息存儲(chǔ)區(qū)域的空間位置既可以是級(jí)聯(lián)的關(guān)系,也可以不是級(jí)聯(lián)的。如果一個(gè)讀寫單元的數(shù)據(jù)存儲(chǔ)區(qū)域與文件信息存儲(chǔ)區(qū)域的空間位置不是級(jí)聯(lián)的,則還保存有數(shù)據(jù)存儲(chǔ)區(qū)域與文件信息存儲(chǔ)區(qū)域的對(duì)應(yīng)關(guān)系。其對(duì)應(yīng)關(guān)系的表達(dá)方式本發(fā)明實(shí)施例不作限定,作為舉例而非限定,可以在數(shù)據(jù)存儲(chǔ)區(qū)域中保存指向文件信息存儲(chǔ)區(qū)域的指針,以建立兩個(gè)存儲(chǔ)區(qū)域之間的對(duì)應(yīng)關(guān)系;也可以在文件信息存儲(chǔ)區(qū)域中保存指向數(shù)據(jù)存儲(chǔ)區(qū)域的指針,以建立兩個(gè)存儲(chǔ)區(qū)域之間的對(duì)應(yīng)關(guān)系。以NAND Flash芯片為例。對(duì)NAND Flash芯片的讀寫以“頁(yè)”為單位,存儲(chǔ)空間被劃分為多個(gè)讀寫單元,一個(gè)讀寫單元占用一“頁(yè)”大小的存儲(chǔ)空間。一個(gè)讀寫單元進(jìn)一步被劃分為級(jí)聯(lián)的頁(yè)數(shù)據(jù)區(qū)域(即數(shù)據(jù)存儲(chǔ)區(qū)域)和OOB數(shù)據(jù)區(qū)域(即文件信息存儲(chǔ)區(qū)域)?;谏鲜鲎x寫單元的劃分,較佳地,對(duì)上述數(shù)據(jù)文件進(jìn)行ECC算法校驗(yàn)的具體實(shí)現(xiàn)方式可以是以閃存芯片的一個(gè)讀寫單元中數(shù)據(jù)存儲(chǔ)區(qū)域的大小為讀寫單位,從上述數(shù)據(jù)文件中依次讀取數(shù)據(jù)進(jìn)行ECC算法校驗(yàn),生成ECC校驗(yàn)碼。例如,閃存芯片的一個(gè)讀寫單元的大小為2112Bytes (字節(jié)),其中數(shù)據(jù)存儲(chǔ)區(qū)域的大小為2048Bytes,文件信息存儲(chǔ)區(qū)域的大小為64Bytes。那么,以2048Bytes為讀寫單位,從數(shù)據(jù)文件中依次讀取數(shù)據(jù)進(jìn)行ECC算法校驗(yàn)。較佳地,本發(fā)明實(shí)施例提供的方法還可以包括按照讀取順序,將每次讀取的數(shù)據(jù)和對(duì)應(yīng)的ECC校驗(yàn)碼保存在新建的數(shù)據(jù)文件中。該新建的數(shù)據(jù)文件即上述攜帶ECC校驗(yàn)碼的數(shù)據(jù)文件。對(duì)于一次讀取的數(shù)據(jù)進(jìn)行ECC算法校驗(yàn)后,將讀取的數(shù)據(jù)和對(duì)應(yīng)的ECC校驗(yàn)碼保存在新建的數(shù)據(jù)文件中的具體實(shí)現(xiàn)方式可以是JfECC校驗(yàn)碼保存在文件信息緩存空間;按照上述閃存芯片中數(shù)據(jù)存儲(chǔ)區(qū)域和文件信息存儲(chǔ)區(qū)域的對(duì)應(yīng)關(guān)系(例如,級(jí)聯(lián)關(guān)系),將讀取的數(shù)據(jù)和該文件信息緩存空間中的數(shù)據(jù)保存在上述新建的數(shù)據(jù)文件中。其中,文件信息緩存空間的大小與該閃存芯片的一個(gè)讀寫單元中文件信息存儲(chǔ)區(qū)域的大小相同。仍以上述2112Bytes的讀寫單元?jiǎng)澐譃槔?,假設(shè)文件信息存儲(chǔ)區(qū)域級(jí)聯(lián)在數(shù)據(jù)存儲(chǔ)區(qū)域之后。那么,文件信息緩存空間的大小為64Bytes,對(duì)于一次讀取的數(shù)據(jù)進(jìn)行ECC算法校驗(yàn)后,將ECC校驗(yàn)碼保存在64Bytes的文件信息緩存空間中,然后讀取信息緩存空間數(shù)據(jù)(大小為64Bytes,包括ECC校驗(yàn)碼),將該64Bytes數(shù)據(jù)級(jí)聯(lián)在讀取的數(shù)據(jù)之后一并保存在新建的數(shù)據(jù)文件中。較佳地,本發(fā)明實(shí)施例提供的方法還可以包括
對(duì)于一次讀取的數(shù)據(jù)進(jìn)行ECC算法校驗(yàn)后,將ECC校驗(yàn)碼保存在文件信息緩存空間;按照上述閃存芯片中數(shù)據(jù)存儲(chǔ)區(qū)域和文件信息存儲(chǔ)區(qū)域的對(duì)應(yīng)關(guān)系,在上述數(shù)據(jù)文件中插入該文件信息緩存空間的數(shù)據(jù)。該數(shù)據(jù)文件即上述攜帶ECC校驗(yàn)碼的數(shù)據(jù)文件。仍以上述2112Bytes的讀寫單元?jiǎng)澐譃槔?,假設(shè)文件信息存儲(chǔ)區(qū)域級(jí)聯(lián)在數(shù)據(jù)存儲(chǔ)區(qū)域之后。那么,文件信息緩存空間的大小為64Bytes,對(duì)于一次讀取的數(shù)據(jù)進(jìn)行ECC算法校驗(yàn)后,將ECC校驗(yàn)碼保存在64Bytes的文件信息緩存空間中,然后讀取信息緩存空間數(shù)據(jù)(大小為64Bytes,包括ECC校驗(yàn)碼),將該64Bytes數(shù)據(jù)插入上述數(shù)據(jù)文件中讀取的數(shù)據(jù)之后。應(yīng)當(dāng)指出的是,上述本發(fā)明實(shí)施例例舉了兩種在數(shù)據(jù)文件中攜帶ECC校驗(yàn)碼的具體實(shí)現(xiàn)方式,但這不代表本發(fā)明僅限于這兩種較佳地實(shí)現(xiàn)方式。只要是按照閃存芯片中數(shù)據(jù)存儲(chǔ)區(qū)域和文件信息存儲(chǔ)區(qū)域的對(duì)應(yīng)關(guān)系將ECC校驗(yàn)碼與對(duì)應(yīng)的讀取數(shù)據(jù)保存的實(shí)現(xiàn)方式,均在本發(fā)明實(shí)施例的保護(hù)范圍之內(nèi)。上述例舉的兩種實(shí)現(xiàn)方式中,將ECC校驗(yàn)碼保存在文件信息緩存空間的具體實(shí)現(xiàn)方式可以是將ECC校驗(yàn)碼保存在文件信息緩存空間中的指定存儲(chǔ)位置。在應(yīng)用過程中,可以根據(jù)實(shí)際應(yīng)用環(huán)境指定文件信息緩存空間中用于存儲(chǔ)ECC校驗(yàn)碼的指定存儲(chǔ)位置。下面以NAND Flash芯片為例,對(duì)本發(fā)明實(shí)施例提供的預(yù)處理實(shí)現(xiàn)方案進(jìn)行詳細(xì)說明。假設(shè)待燒制的NAND Flash芯片中,一個(gè)頁(yè)大小的讀取單元為2112Bytes。其中,頁(yè)數(shù)據(jù)區(qū)域大小為2048Bytes,OOB數(shù)據(jù)區(qū)域大小為64Bytes,OOB數(shù)據(jù)區(qū)域級(jí)聯(lián)在頁(yè)數(shù)據(jù)區(qū)域之后。如果向該型號(hào)的NAND Flash芯片(一次燒制的芯片數(shù)量由NAND Flash編程器的結(jié)構(gòu)及處理能力決定)中燒寫數(shù)據(jù)文件,在NAND Flash編程器處理之前,對(duì)數(shù)據(jù)文件進(jìn)行預(yù)處理,即預(yù)先對(duì)其進(jìn)行ECC算法校驗(yàn),一種具體實(shí)現(xiàn)方式如圖3所示,具體包括如下操作步驟300、將數(shù)據(jù)文件(假設(shè)其文件名為boot, bin)拷貝到上位機(jī)的操作系統(tǒng)(如Linux系統(tǒng))中。對(duì)數(shù)據(jù)文件進(jìn)行ECC算法校驗(yàn)的預(yù)處理過程可以由軟件實(shí)現(xiàn),該軟件被軟件編譯器編譯為可以在上位機(jī)操作系統(tǒng)下運(yùn)行的可執(zhí)行文件。相應(yīng)的,步驟300的具體實(shí)現(xiàn)方式可以是,調(diào)用預(yù)處理軟件將boot, bin文件拷貝到上位機(jī)的操作系統(tǒng)中。具體的,可以拷貝到預(yù)處理軟件所在的文件目錄下。
步驟310、確定NAND Flash芯片中一個(gè)讀寫單元的頁(yè)數(shù)據(jù)區(qū)域大小、OOB數(shù)據(jù)區(qū)域大小,和頁(yè)數(shù)據(jù)區(qū)域與OOB數(shù)據(jù)區(qū)域的級(jí)聯(lián)關(guān)系。具體的,可以通過確定OBB數(shù)據(jù)區(qū)域在讀寫單元中的起始地址和范圍來確定頁(yè)數(shù)據(jù)區(qū)域與OOB數(shù)據(jù)區(qū)域的級(jí)聯(lián)關(guān)系。步驟320、創(chuàng)建一個(gè)新的數(shù)據(jù)文件(假設(shè)其文件名為eccboot. bin),并定義一個(gè)頁(yè)數(shù)據(jù)區(qū)域大小的頁(yè)數(shù)據(jù)緩存區(qū)域(page_bUf)和一個(gè)OOB數(shù)據(jù)區(qū)域大小的OOB數(shù)據(jù)緩存區(qū)域(oob_buf)。步驟330、從boot, bin文件中讀取頁(yè)數(shù)據(jù)區(qū)域大小的數(shù)據(jù)保存到page_buf中。步驟340、調(diào)用所需的ECC算法函數(shù)對(duì)讀取的數(shù)據(jù)進(jìn)行ECC校驗(yàn),并將生成的ECC校驗(yàn)碼保存到oob_buf中的指定位置。 如果存儲(chǔ)的ECC算法函數(shù)中沒有向NAND Flash芯片燒寫數(shù)據(jù)文件所需的ECC算法函數(shù),可以提示技術(shù)人員編程實(shí)現(xiàn)該ECC算法函數(shù)并保存,以便后續(xù)的預(yù)處理過程調(diào)用。其中,oob_buf中還可以保存其他的文件系統(tǒng)信息。如果oob_buf中僅保存了 ECC校驗(yàn)碼,則其他字節(jié)以默認(rèn)字符填充。其中,該ECC算法函數(shù)中有兩個(gè)指針參數(shù),分別指向page_buf和oob_buf,以便根據(jù)指針從page_buf中讀取數(shù)據(jù)進(jìn)行ECC校驗(yàn),并將生成的校驗(yàn)碼保存在指針指向的oob_buf ο步驟350、按照步驟310中確定的頁(yè)數(shù)據(jù)區(qū)域與OOB數(shù)據(jù)區(qū)域的級(jí)聯(lián)關(guān)系,將page_buf和oob_buf中的數(shù)據(jù)依次寫入到eccboot. bin文件中。在eccboot. bin文件中,按照數(shù)據(jù)的讀取順序保存讀取的數(shù)據(jù)和對(duì)應(yīng)的ECC校驗(yàn)碼。步驟360、判斷boot, bin文件中是否還有未被讀取的數(shù)據(jù),如果有,返回步驟330讀取下一組數(shù)據(jù),如果沒有,執(zhí)行步驟370。步驟370、保存 eccboot. bin 文件。如果ECC算法校驗(yàn)的過程由預(yù)處理軟件實(shí)現(xiàn),在保存了 eccboot. bin文件后,退出預(yù)處理軟件。步驟380、將eccboot. bin文件發(fā)送給關(guān)閉了 ECC算法校驗(yàn)功能的NANDFlash編程器。NAND Flash編程器在收到eccboot. bin文件后,不需要對(duì)其進(jìn)行ECC處理,直接將該文件燒寫到NAND Flash芯片中。仍以一個(gè)頁(yè)大小的讀取單元為2112Bytes。其中,頁(yè)數(shù)據(jù)區(qū)域大小為2048Bytes,00B數(shù)據(jù)區(qū)域大小為64Bytes,00B數(shù)據(jù)區(qū)域級(jí)聯(lián)在頁(yè)數(shù)據(jù)區(qū)域之后的NAND Flash芯片為例。如果向該型號(hào)的NAND Flash芯片中燒寫數(shù)據(jù)文件,在NAND Flash編程器處理之前,對(duì)數(shù)據(jù)文件進(jìn)行預(yù)處理,另一種具體實(shí)現(xiàn)方式如圖4所示,具體包括如下操作步驟400、將數(shù)據(jù)文件(假設(shè)其文件名為boot, bin)拷貝到上位機(jī)的操作系統(tǒng)(如Linux系統(tǒng))中。步驟410、確定NAND Flash芯片中一個(gè)讀寫單元的頁(yè)數(shù)據(jù)區(qū)域大小、00B數(shù)據(jù)區(qū)域大小,和頁(yè)數(shù)據(jù)區(qū)域與00B數(shù)據(jù)區(qū)域的級(jí)聯(lián)關(guān)系。步驟420、定義一個(gè)頁(yè)數(shù)據(jù)區(qū)域大小的頁(yè)數(shù)據(jù)緩存區(qū)域(page_bUf)和一個(gè)00B數(shù)據(jù)區(qū)域大小的OOB數(shù)據(jù)緩存區(qū)域(oob_bUf)。步驟430、從boot, bin文件中讀取頁(yè)數(shù)據(jù)區(qū)域大小的數(shù)據(jù)保存到page_buf中。步驟440、調(diào)用所需的ECC算法函數(shù)對(duì)讀取的數(shù)據(jù)進(jìn)行ECC校驗(yàn),并將生成的ECC校驗(yàn)碼保存到oob_buf中的指定位置。步驟450、按照步驟410中確定的頁(yè)數(shù)據(jù)區(qū)域與OOB數(shù)據(jù)區(qū)域的級(jí)聯(lián)關(guān)系,將oob_buf中的數(shù)據(jù)插入到boot, bin文件中對(duì)應(yīng)的數(shù)據(jù)之后。步驟460、判斷boot, bin文件中是否還有未被讀取的數(shù)據(jù),如果有,返回步驟430讀取下一組數(shù)據(jù),如果沒有,執(zhí)行步驟470。 步驟470、保存 boot, bin 文件。如果ECC算法校驗(yàn)的過程由預(yù)處理軟件實(shí)現(xiàn),在保存了 boot, bin文件后,退出預(yù)處理軟件。步驟480、將boot, bin文件發(fā)送給關(guān)閉了 ECC算法校驗(yàn)功能的NAND Flash編程器。NAND Flash編程器在收到boot, bin文件后,不需要對(duì)其進(jìn)行ECC處理,直接將該文件燒寫到NAND Flash芯片中。上述處理過程與圖3所示的處理過程有雷同之處,對(duì)于雷同處的具體實(shí)現(xiàn)方式,不再贅述?;谕瑯拥陌l(fā)明構(gòu)思,本發(fā)明實(shí)施例還提供了一種向閃存芯片中燒寫數(shù)據(jù)文件的預(yù)處理裝置,其實(shí)現(xiàn)結(jié)構(gòu)如圖5所示,包括數(shù)據(jù)文件預(yù)處理模塊501,用于調(diào)用向所述閃存芯片中燒寫數(shù)據(jù)文件所需的ECC算法函數(shù)對(duì)所述數(shù)據(jù)文件進(jìn)行ECC算法校驗(yàn),生成ECC校驗(yàn)碼;數(shù)據(jù)文件發(fā)送模塊502,用于將攜帶ECC校驗(yàn)碼的數(shù)據(jù)文件發(fā)送給關(guān)閉了 ECC算法功能的閃存編程器。較佳地,數(shù)據(jù)文件預(yù)處理模塊501具體用于以所述閃存芯片的一個(gè)讀寫單元中數(shù)據(jù)存儲(chǔ)區(qū)域的大小為讀寫單位,從所述數(shù)據(jù)文件中依次讀取數(shù)據(jù)進(jìn)行ECC算法校驗(yàn),生成ECC校驗(yàn)碼。較佳地,所述數(shù)據(jù)文件預(yù)處理模塊501還用于按照讀取順序,將每次讀取的數(shù)據(jù)和對(duì)應(yīng)的ECC校驗(yàn)碼保存在新建的數(shù)據(jù)文件中,所述新建的數(shù)據(jù)文件即攜帶ECC校驗(yàn)碼的數(shù)據(jù)文件;對(duì)于一次讀取的數(shù)據(jù)進(jìn)行ECC算法校驗(yàn)后,將讀取的數(shù)據(jù)和對(duì)應(yīng)的ECC校驗(yàn)碼保存在新建的數(shù)據(jù)文件中,所述數(shù)據(jù)文件預(yù)處理模塊501具體用于將ECC校驗(yàn)碼保存在文件信息緩存空間,所述文件信息緩存空間的大小與所述閃存芯片的一個(gè)讀寫單元中文件信息存儲(chǔ)區(qū)域的大小相同;按照所述閃存芯片中數(shù)據(jù)存儲(chǔ)區(qū)域和文件信息存儲(chǔ)區(qū)域的對(duì)應(yīng)關(guān)系,將讀取的數(shù)據(jù)和所述文件信息緩存空間中的數(shù)據(jù)保存在所述新建的數(shù)據(jù)文件中。較佳地,對(duì)于一次讀取的數(shù)據(jù)進(jìn)行ECC算法校驗(yàn)后,所述數(shù)據(jù)文件預(yù)處理模塊501還用于將ECC校驗(yàn)碼保存在文件信息緩存空間,所述文件信息緩存空間的大小與所述閃存芯片的一個(gè)讀寫單元中文件信息存儲(chǔ)區(qū)域的大小相同;
按照所述閃存芯片中數(shù)據(jù)存儲(chǔ)區(qū)域和文件信息存儲(chǔ)區(qū)域的對(duì)應(yīng)關(guān)系,在所述數(shù)據(jù)文件中插入所述文件信息緩存空間的數(shù)據(jù)。較佳地,將ECC校驗(yàn)碼保存在文件信息緩存空間時(shí),所述數(shù)據(jù)文件預(yù)處理模塊501具體用于將ECC校驗(yàn)碼保存在文件信息緩存空間中的指定存儲(chǔ)位置。顯然,本領(lǐng)域的技術(shù)人員可以對(duì)本發(fā)明進(jìn)行各種改動(dòng)和變型而不脫離本發(fā)明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包含這些改動(dòng)和變型在內(nèi)?!?br>
權(quán)利要求
1.一種向閃存芯片中燒寫數(shù)據(jù)文件的預(yù)處理方法,其特征在于,包括 調(diào)用向所述閃存芯片中燒寫數(shù)據(jù)文件所需的錯(cuò)誤檢查和糾正ECC算法函數(shù)對(duì)所述數(shù)據(jù)文件進(jìn)行ECC算法校驗(yàn),生成ECC校驗(yàn)碼; 將攜帶ECC校驗(yàn)碼的數(shù)據(jù)文件發(fā)送給關(guān)閉了 ECC算法功能的閃存編程器。
2.根據(jù)權(quán)利要求I所述的方法,其特征在于,對(duì)所述數(shù)據(jù)文件進(jìn)行ECC算法校驗(yàn),包括 以所述閃存芯片的一個(gè)讀寫單元中數(shù)據(jù)存儲(chǔ)區(qū)域的大小為讀寫單位,從所述數(shù)據(jù)文件中依次讀取數(shù)據(jù)進(jìn)行ECC算法校驗(yàn),生成ECC校驗(yàn)碼。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,該方法還包括 按照讀取順序,將每次讀取的數(shù)據(jù)和對(duì)應(yīng)的ECC校驗(yàn)碼保存在新建的數(shù)據(jù)文件中,所述新建的數(shù)據(jù)文件即攜帶ECC校驗(yàn)碼的數(shù)據(jù)文件; 對(duì)于一次讀取的數(shù)據(jù)進(jìn)行ECC算法校驗(yàn)后,將讀取的數(shù)據(jù)和對(duì)應(yīng)的ECC校驗(yàn)碼保存在新建的數(shù)據(jù)文件中,具體包括 將ECC校驗(yàn)碼保存在文件信息緩存空間,所述文件信息緩存空間的大小與所述閃存芯片的一個(gè)讀寫單元中文件信息存儲(chǔ)區(qū)域的大小相同; 按照所述閃存芯片中數(shù)據(jù)存儲(chǔ)區(qū)域和文件信息存儲(chǔ)區(qū)域的對(duì)應(yīng)關(guān)系,將讀取的數(shù)據(jù)和所述文件信息緩存空間中的數(shù)據(jù)保存在所述新建的數(shù)據(jù)文件中。
4.根據(jù)權(quán)利要求2所述的方法,其特征在于,對(duì)于一次讀取的數(shù)據(jù)進(jìn)行ECC算法校驗(yàn)后,該方法還包括 將ECC校驗(yàn)碼保存在文件信息緩存空間,所述文件信息緩存空間的大小與所述閃存芯片的一個(gè)讀寫單元中文件信息存儲(chǔ)區(qū)域的大小相同; 按照所述閃存芯片中數(shù)據(jù)存儲(chǔ)區(qū)域和文件信息存儲(chǔ)區(qū)域的對(duì)應(yīng)關(guān)系,在所述數(shù)據(jù)文件中插入所述文件信息緩存空間的數(shù)據(jù)。
5.根據(jù)權(quán)利要求3或4所述的方法,其特征在于,所述將ECC校驗(yàn)碼保存在文件信息緩存空間,具體包括 將ECC校驗(yàn)碼保存在文件信息緩存空間中的指定存儲(chǔ)位置。
6.—種向閃存芯片中燒寫數(shù)據(jù)文件的方法,其特征在于,包括 關(guān)閉了 ECC算法功能的閃存芯片編程器接收攜帶ECC校驗(yàn)碼的數(shù)據(jù)文件,所述ECC校驗(yàn)碼是通過調(diào)用向所述閃存芯片中燒寫數(shù)據(jù)文件所需的ECC算法函數(shù)對(duì)所述數(shù)據(jù)文件進(jìn)行ECC算法校驗(yàn)生成的; 所述閃存芯片編程器將所述攜帶ECC校驗(yàn)碼的數(shù)據(jù)文件燒寫到所述閃存芯片中。
7.—種向閃存芯片中燒寫數(shù)據(jù)文件的預(yù)處理裝置,其特征在于,包括 數(shù)據(jù)文件預(yù)處理模塊,用于調(diào)用向所述閃存芯片中燒寫數(shù)據(jù)文件所需的ECC算法函數(shù)對(duì)所述數(shù)據(jù)文件進(jìn)行ECC算法校驗(yàn),生成ECC校驗(yàn)碼; 數(shù)據(jù)文件發(fā)送模塊,用于將攜帶ECC校驗(yàn)碼的數(shù)據(jù)文件發(fā)送給關(guān)閉了 ECC算法功能的閃存編程器。
8.根據(jù)權(quán)利要求7所述的預(yù)處理裝置,其特征在于,所述數(shù)據(jù)文件預(yù)處理模塊具體用于 以所述閃存芯片的一個(gè)讀寫單元中數(shù)據(jù)存儲(chǔ)區(qū)域的大小為讀寫單位,從所述數(shù)據(jù)文件中依次讀取數(shù)據(jù)進(jìn)行ECC算法校驗(yàn),生成ECC校驗(yàn)碼。
9.根據(jù)權(quán)利要求8所述的預(yù)處理裝置,其特征在于,所述數(shù)據(jù)文件預(yù)處理模塊還用于 按照讀取順序,將每次讀取的數(shù)據(jù)和對(duì)應(yīng)的ECC校驗(yàn)碼保存在新建的數(shù)據(jù)文件中,所述新建的數(shù)據(jù)文件即攜帶ECC校驗(yàn)碼的數(shù)據(jù)文件; 對(duì)于一次讀取的數(shù)據(jù)進(jìn)行ECC算法校驗(yàn)后,將讀取的數(shù)據(jù)和對(duì)應(yīng)的ECC校驗(yàn)碼保存在新建的數(shù)據(jù)文件中,所述數(shù)據(jù)文件預(yù)處理模塊具體用于 將ECC校驗(yàn)碼保存在文件信息緩存空間,所述文件信息緩存空間的大小與所述閃存芯片的一個(gè)讀寫單元中文件信息存儲(chǔ)區(qū)域的大小相同; 按照所述閃存芯片中數(shù)據(jù)存儲(chǔ)區(qū)域和文件信息存儲(chǔ)區(qū)域的對(duì)應(yīng)關(guān)系,將讀取的數(shù)據(jù)和所述文件信息緩存空間中的數(shù)據(jù)級(jí)存在所述新建的數(shù)據(jù)文件中。
10.根據(jù)權(quán)利要求8所述的預(yù)處理裝置,其特征在于,對(duì)于一次讀取的數(shù)據(jù)進(jìn)行ECC算法校驗(yàn)后,所述數(shù)據(jù)文件預(yù)處理模塊還用于 將ECC校驗(yàn)碼保存在文件信息緩存空間,所述文件信息緩存空間的大小與所述閃存芯片的一個(gè)讀寫單元中文件信息存儲(chǔ)區(qū)域的大小相同; 按照所述閃存芯片中數(shù)據(jù)存儲(chǔ)區(qū)域和文件信息存儲(chǔ)區(qū)域的對(duì)應(yīng)關(guān)系,在所述數(shù)據(jù)文件中插入所述文件信息緩存空間的數(shù)據(jù)。
11.根據(jù)權(quán)利要求9或10所述的預(yù)處理裝置,其特征在于,將ECC校驗(yàn)碼保存在文件信息緩存空間時(shí),所述數(shù)據(jù)文件預(yù)處理模塊具體用于 將ECC校驗(yàn)碼保存在文件信息緩存空間中的指定存儲(chǔ)位置。
全文摘要
本發(fā)明公開了一種向閃存芯片中燒寫數(shù)據(jù)文件的預(yù)處理方法及裝置,和向閃存芯片中燒寫數(shù)據(jù)文件的方法。其方法包括調(diào)用向閃存芯片中燒寫數(shù)據(jù)文件所需的ECC算法函數(shù)對(duì)數(shù)據(jù)文件進(jìn)行ECC算法校驗(yàn),生成ECC校驗(yàn)碼;將經(jīng)過ECC算法校驗(yàn)的數(shù)據(jù)文件發(fā)送給關(guān)閉了ECC算法功能的閃存編程器。采用本發(fā)明實(shí)施例提供的方法及裝置,由于不需要芯片編程器參與ECC算法校驗(yàn),即使芯片編程器不支持向所述閃存芯片中燒寫數(shù)據(jù)文件所需的ECC算法,也可以由該芯片編程器向所述閃存芯片中燒寫數(shù)據(jù)文件,避免了對(duì)芯片編程器所支持ECC算法的依賴。由于預(yù)處理過程中的ECC算法可以通過軟件實(shí)現(xiàn),其實(shí)現(xiàn)成本遠(yuǎn)遠(yuǎn)低于更換芯片編程器的成本。
文檔編號(hào)G06F9/445GK102929655SQ201210365000
公開日2013年2月13日 申請(qǐng)日期2012年9月26日 優(yōu)先權(quán)日2012年9月26日
發(fā)明者王愛國(guó), 高旭, 宋國(guó)良 申請(qǐng)人:瑞斯康達(dá)科技發(fā)展股份有限公司