国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      在單任務(wù)中實現(xiàn)同時燒寫多片nandflash的方法

      文檔序號:6773473閱讀:487來源:國知局
      專利名稱:在單任務(wù)中實現(xiàn)同時燒寫多片nandflash的方法
      技術(shù)領(lǐng)域
      本發(fā)明涉及具有燒寫NANDFLASH (NANDFLASH是一種存儲介質(zhì))功能的終端產(chǎn)品, 尤其涉及一種在單任務(wù)中實現(xiàn)同時燒寫多片NANDFLASH的方法。背景技術(shù)
      在嵌入式終端生產(chǎn)中,一般都會在NANDFLASH貼片之前把軟件燒寫到NANDFLASH 上,傳統(tǒng)的燒寫方法是1、采用逐片燒寫的方法,每次燒寫一片。2、并發(fā)燒寫,為每片分配一 個單獨的燒寫任務(wù)。
      在嵌入式終端功能單一,軟件規(guī)模比較小的時候,上面兩種都是很好的實現(xiàn)方式, 因為這時候要燒寫的程序鏡像都會比較小。但是隨著發(fā)展,嵌入式終端的功能越來越復(fù)雜, 軟件規(guī)模也變得龐大。要燒寫的程序鏡像也就變得很大,那這時候上面這兩種方法就不能 很好的滿足要求了。程序鏡像變大意味著要花費更多的時間才能完成一片的燒寫,對于第 一種串行化的逐片燒寫的方式就會嚴(yán)重影響生產(chǎn)效率。第二種方式在一定程度上實現(xiàn)了并 行化的燒寫,當(dāng)會隨著要同時燒寫的芯片數(shù)的增加,效率會急劇下降,也不能夠到達(dá)生產(chǎn)效 率的最大化。
      發(fā)明內(nèi)容
      本發(fā)明要解決的技術(shù)問題,在于提供一種在單任務(wù)中實現(xiàn)同時燒寫多片 NANDFLASH的方法,克服了背景技術(shù)中,生產(chǎn)效率低的問題。
      本發(fā)明是這樣實現(xiàn)的一種在單任務(wù)中實現(xiàn)同時燒寫多片NANDFLASH的方法,首 先從外部存儲器讀取要燒寫的鏡像文件,然后把鏡像文件寫入到母片中;在燒寫的時候把 母片中的數(shù)據(jù)導(dǎo)入到所有燒寫座上的NANDFLASH芯片;在此過程中采用在單線程任務(wù)中 同時控制多片NANDFLASH芯片的信號引腳的方式對多片NANDFLASH芯片執(zhí)行燒寫操作;在 錯誤處理的方式上燒寫代碼每次都對所有的NANDFLASH芯片發(fā)起編程操作即先設(shè)置每塊 NANDFLASH芯片對應(yīng)的地址,不跳過異?;虿辉谖坏腘ANDFLASH芯片,只要有一片編程成 功,上層燒寫代碼獲取到的編程狀態(tài)都是成功的;當(dāng)上層燒寫代碼獲取異?;虿辉谖坏男?片的編程狀態(tài)時,由燒寫系統(tǒng)軟件模擬返回成功。
      本發(fā)明具有如下優(yōu)點本發(fā)明采用在單任務(wù)中對多片NANDFLASH芯片同時進(jìn)行并 發(fā)燒寫的方法來代替?zhèn)鹘y(tǒng)的串行化的逐片燒寫的方法和每片一個燒寫任務(wù)的多任務(wù)方法, 且在遇到燒寫錯誤時進(jìn)行了特殊處理,當(dāng)上層燒寫代碼獲取異常或不在位的芯片的編程狀 態(tài)時,由燒寫系統(tǒng)軟件模擬返回成功,這樣使得燒寫與生產(chǎn)效率大幅提高。

      圖1是本發(fā)明測試平臺的硬件框圖。
      圖2是本發(fā)明的NANDFLASH芯片視圖。
      圖3是本發(fā)明數(shù)據(jù)編程與燒寫的流程示意圖。
      具體實施方式
      下面參照附圖結(jié)合實施例對本發(fā)明作進(jìn)一步的說明。
      一種在單任務(wù)中實現(xiàn)同時燒寫多片NANDFLASH的方法,其實現(xiàn)步驟步驟如下首 先從外部存儲器讀取要燒寫的鏡像文件,然后把鏡像文件寫入到母片中;在燒寫的時候把 母片中的數(shù)據(jù)導(dǎo)入到所有燒寫座上的NANDFLASH芯片;在此過程中采用在單線程任務(wù)中 同時控制多片NANDFLASH芯片的信號引腳的方式對多片芯片執(zhí)行燒寫操作;在錯誤處理 的方式上燒寫代碼每次都對所有的芯片發(fā)起編程操作即先設(shè)置每塊NANDFLASH芯片對 應(yīng)的地址,不跳過異常或不在位的NANDFLASH芯片,只要有一片編程成功,上層燒寫代碼 獲取到的編程狀態(tài)都是成功的;當(dāng)上層燒寫代碼獲取異?;虿辉谖坏男酒木幊虪顟B(tài)時, 由燒寫系統(tǒng)軟件模擬返回成功,所述的燒寫系統(tǒng)軟件模擬返回成功的方式是在發(fā)現(xiàn)哪塊 NANDFLASH芯片燒寫異常、錯誤時斷開相應(yīng)SN74HC245的電源,同時判斷該NANDFLASH芯片 RB腳狀態(tài)的操作永遠(yuǎn)都返回READY狀態(tài),讓讀取此芯片I/O腳的操作也都返回成功狀態(tài)。
      本發(fā)明的燒寫操作是通過在單任務(wù)中同時對所有芯片發(fā)起編程操作來實現(xiàn)偽并 發(fā)的編程操作。由于消除了不必要的大量的任務(wù)上下文切換操作,而且在單處理器上不可 能實現(xiàn)多任務(wù)的正在并發(fā),所以單任務(wù)的偽并發(fā)燒寫操作,效率大大高于多任務(wù)的偽并發(fā) 燒寫操作。
      見圖1,是本發(fā)明測試平臺的硬件框圖,包括外部存儲器、CUP、母片、IXD、多片的 SN74HC245芯片以及多片NANDFLASH芯片。用戶從外部存儲器讀取要燒寫的鏡像文件,然后 把鏡像文件寫入到母片中,LCD負(fù)責(zé)顯示燒寫的情況。
      這里要說明的是1、設(shè)置每塊NANDFLASH芯片對應(yīng)的地址通過以下代碼實現(xiàn)由 于每一塊NANDFLASH芯片的壞塊布局是不一樣的,所以需單獨維護(hù)每一塊芯片的編程地 址,在發(fā)送編程地址時,需要設(shè)置每塊芯片對應(yīng)的地址。
      for(i = 0 ;i < CONFIG_EXT_NAND_NUM ;++i) {
      col = 0 ;
      page = nandset- > nand_offset[i]/nandset- > pagesize ;
      //逐片發(fā)送行列地址
      s3c_nand_addr (nandset, & nandset—> chip [i],col,page);
      }
      2、發(fā)起編程操作方式
      每次都對所有的芯片發(fā)起編程操作,而不對異常/不在位的芯片做特殊處理,這 樣就避免了由于引入大量的判斷語句而導(dǎo)致執(zhí)行效率降低。例如發(fā)送對所有芯片發(fā)送命 令
      static inline
      void s3c_nandset_cmd(struct s3c_nand_set氺nand_set, uint8_t cmd)
      {
      H逐片CLE使能
      s3c_extnand_setcle( & nand_set_ > chip
      );
      s3c_extnand_setcle( & nand_set_ > chip[1]);
      s3c extnand setcle(&hand set一>chip[2]);
      s3c extnand setcle(&hand set一>chip[3]);
      //投送命令數(shù)據(jù)
      s3c handset write bur(hand set,&cmd,1)
      //逐片CLE不使能
      s3c extnand clrcle(&hand set一>chip
      );
      s3c extnand clrcle(&hand set一>chip[1]);
      s3c extnand clrcle(&hand set一>chip[2]);
      s3c extnand clrcle(&hand set一>chip[3]);
      }
      stariC inl ine
      VOid s3c handset write bur(struct s3c hand set*hand set,uint8t,bur,
      int leFl)
      {
      int i一0
      for(;i<len;++i){
      //逐片發(fā)送每字節(jié)數(shù)
      s3c—hand—lOUt—byte(bur[i],&hand—set一>chip
      );
      s3c—hand—lOUt—byte(bur[i],&hand—set一>chip[1]);
      s3c—hand—lOUt—byte(bur[i],&hand—set一>chip[2]);
      s3c—hand—lOUt—byte(bur[i],&hand—set一>chip[3]);
      }
      }
      3.編程錯誤,異常處理方式
      在發(fā)現(xiàn)編程異常,錯誤時斷開相應(yīng)SN74HC245的電源,這樣后繼的編程信號不會再傳遞到此芯片。同時讓判斷此芯片朋腳狀態(tài)的操作永遠(yuǎn)都返回READY狀態(tài),讓讀取此芯片i/o腳的操作也永遠(yuǎn)都返回0。(通過i/o腳的引腳0的邏輯電平來判斷編程是否成功,低表示成功,高表示錯誤,這里也就是永遠(yuǎn)返回成功)。通過此機制,燒寫代碼無需關(guān)心那些芯片不在位,那些芯片燒寫失敗的問題。每次都對所有芯片都發(fā)起編程操作
      //獲取逐片的朋腳狀態(tài)
      ready
      一s3c—extnand—ready(&hand—set一>chip
      )(!hand—set一>hand valid
      );
      ready[1]一s3c—extnand—ready(&hand—set一>chip[1])(!hand—set一>hand valid[1]);
      ready[2]一s3c—extnand—ready(&hand—set一>chip[2])(!hand—set一>hand valid[2]);
      ready[3]一s3c—extnand—ready(&hand—set一>chip[3])(!hand—set一>hand valid[3]);
      如果芯片不在位或異常,則對應(yīng)的nrnd—valid值為0,正常為1。上面的操作可保 證對于異常,錯誤的芯片此表達(dá)式永遠(yuǎn)為真,也就是準(zhǔn)備好。
      //逐片讀取IO腳電平
      status
      = s3c—nand—get—byte( & nand—set-> chip
      ) & (nand—set-> nand—valid
      );
      status[1] = s3c—nand—get—byte ( & nand—set-> chip[1]) & (nand—set-> nand—valid[1]);
      status[2] = s3c—nand—get—byte ( & nand—set-> chip[2]) & (nand—set-> nand—valid[2]);
      status[3] = s3c—nand—get—byte ( & nand—set-> chip[3]) & (nand—set-> nand—valid[3]);
      上面的操作可保證對于異常,錯誤的芯片的引腳0的電平永遠(yuǎn)都為0。
      值得一提的是NANDFLASH芯片視圖如圖2所示,其中芯片的數(shù)據(jù)編程與燒寫的流 程示意圖見圖3,首先從母片中讀取要燒寫的數(shù)據(jù)到內(nèi)存,依次有效芯片的CS信號,依次有 效芯片的CLE信號,依次給芯片發(fā)送80H命令,依次無效芯片的CLE信號,依次發(fā)送燒寫地 址給芯片,其發(fā)送燒寫地址的流程為有效芯片的ALE信號,發(fā)送要寫入數(shù)據(jù)的地址,無效 ALE信號;再把從母片讀取的數(shù)據(jù)依次發(fā)送給芯片;依次有效芯片的CLE信號,依次給芯片 發(fā)送IOH命令,依次無效芯片的CLE信號,依次獲取芯片的RB腳狀態(tài),等待芯片編程完成; 依次有效芯片的CLE信號,依次發(fā)送70H命令,依次無效芯片的CLE信號,讀取8BIT I/O總 線,根據(jù)結(jié)果判斷數(shù)據(jù)是否寫入成功。
      總之,本發(fā)明在單任務(wù)中實現(xiàn)了同時燒寫多片NANDFLASH芯片的功能,而傳統(tǒng)的 方式單任務(wù)只能實現(xiàn)串行化的逐片燒寫功能,只能通過增加任務(wù)數(shù)來實現(xiàn)同時燒寫,但由 于任務(wù)上下文切換的大量開銷也不能到達(dá)生產(chǎn)燒寫效率的最大化。通過在單任務(wù)中實現(xiàn)同 時燒寫,避免了大量任務(wù)上下文切換的開銷,使得燒寫效率進(jìn)一步提高。
      以上所述僅為本發(fā)明的較佳實施例,凡依本發(fā)明申請專利范圍所做的均等變化與 修飾,皆應(yīng)屬本發(fā)明的涵蓋范圍。
      權(quán)利要求
      1.一種在單任務(wù)中實現(xiàn)同時燒寫多片NANDFLASH的方法,其特征在于首先從外部存 儲器讀取要燒寫的鏡像文件,然后把鏡像文件寫入到母片中;在燒寫的時候把母片中的數(shù) 據(jù)導(dǎo)入到所有燒寫座上的NANDFLASH芯片;在此過程中采用在單線程任務(wù)中同時控制多 片NANDFLASH芯片的信號引腳的方式對多片NANDFLASH芯片執(zhí)行燒寫操作;在錯誤處理的 方式上燒寫代碼每次都對所有的NANDFLASH芯片發(fā)起編程操作即先設(shè)置每塊NANDFLASH 芯片對應(yīng)的地址,不跳過異?;虿辉谖坏腘ANDFLASH芯片,只要有一片編程成功,上層燒寫 代碼獲取到的編程狀態(tài)都是成功的;當(dāng)上層燒寫代碼獲取異?;虿辉谖坏男酒木幊虪顟B(tài) 時,由燒寫系統(tǒng)軟件模擬返回成功。
      2.根據(jù)權(quán)利要求1所述的在單任務(wù)中實現(xiàn)同時燒寫多片NANDFLASH的方法,其特征在 于所述的燒寫系統(tǒng)軟件模擬返回成功的方式是在發(fā)現(xiàn)哪塊NANDFLASH芯片燒寫異常、錯 誤時斷開相應(yīng)SN74HC245的電源,同時判斷該NANDFLASH芯片RB腳狀態(tài)的操作永遠(yuǎn)都返回 READY狀態(tài),讓讀取此NANDFLASH芯片I/O腳的操作也都返回成功狀態(tài)。
      全文摘要
      本發(fā)明提供一種在單任務(wù)中實現(xiàn)同時燒寫多片NANDFLASH的方法,先從外部存儲器讀取數(shù)據(jù)然后把數(shù)據(jù)燒寫到母片中,當(dāng)進(jìn)行實際燒片的時候,從母片中獲取數(shù)據(jù),并在單任務(wù)中把數(shù)據(jù)同時并發(fā)的寫入所有燒寫座上的NANDFLASH芯片。本發(fā)明采用在單任務(wù)中對多片NANDFLASH芯片同時進(jìn)行并發(fā)燒寫的方法來代替?zhèn)鹘y(tǒng)的串行化的逐片燒寫的方法和每片一個燒寫任務(wù)的多任務(wù)方法,使得燒寫與生產(chǎn)效率大幅度提高。
      文檔編號G11C16/06GK102034543SQ201010567329
      公開日2011年4月27日 申請日期2010年12月1日 優(yōu)先權(quán)日2010年12月1日
      發(fā)明者趙進(jìn)云 申請人:福建鑫諾通訊技術(shù)有限公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1