欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種flash的控制方法和控制器的制造方法

文檔序號:9616074閱讀:341來源:國知局
一種flash的控制方法和控制器的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及嵌入式存儲技術(shù)領(lǐng)域,尤其涉及一種FLASH(閃存)的控制方法和控制器。
【背景技術(shù)】
[0002]目前,大多數(shù)嵌入式設(shè)備,如手機和機頂盒等,都需要外部存儲芯片來存儲程序數(shù)據(jù)和用戶數(shù)據(jù),常見的外部存儲芯片類型有安全數(shù)碼卡(SD, Secure Digital MemoryCard)、嵌入式多媒體卡(EMMC,Embedded Multi Media Card)、編碼型閃存 NOR FLASH 和儲存型閃存(NAND FLASH)。其中,SD卡是可熱插拔的,通常用于存儲用戶數(shù)據(jù);EMMC具有容量大、可實現(xiàn)芯片內(nèi)部錯誤檢查和糾正(ECC, Error Checking and Correcting)以及壞塊管理功能等優(yōu)點,但其成本較高,適用于數(shù)據(jù)量需求較大的嵌入式設(shè)備;N0R FLASH讀寫速度快,但容量小、成本高;NAND FLASH可以做到容量高、成本低,但由于工藝問題,在出廠時或使用過程中容易產(chǎn)生壞塊,但綜合其容量和成本,NAND FLASH通常用于對存儲容量要求不高的低成本嵌入式設(shè)備。
[0003]對于NAND FLASH設(shè)備,由于物理特性限制,其在讀寫時是以頁為基本單位,在擦除時是以塊為基本單位,每塊由若干頁組成;在每次寫的過程中,需要先將當前塊擦除后,才能按頁寫入數(shù)據(jù),這些通常是由驅(qū)動開發(fā)者通過軟件開發(fā)實現(xiàn)的,需要軟件干預。對于N0RFLASH設(shè)備,其在寫之前也需要先擦除當前塊,之后才能寫入數(shù)據(jù),數(shù)據(jù)讀寫的速度慢。
[0004]現(xiàn)有的NAND FLASH和NOR FLASH都存在各自的優(yōu)缺點,而如何進一步優(yōu)化FLASH的讀寫流程,提升讀寫速度和準確度,以適應更高的應用需求,是目前亟待解決的技術(shù)問題。

【發(fā)明內(nèi)容】

[0005]為解決現(xiàn)有存在的技術(shù)問題,本發(fā)明提供一種FLASH的控制方法和控制器。
[0006]本發(fā)明提供了一種閃存FLASH的控制器,包括:地址控制單元、高速緩存、擦除單元和FLASH命令執(zhí)行單元,
[0007]所述地址控制單元,用于接收中央處理器CPU輸入的FLASH讀或?qū)懨睢LASH的讀或?qū)懙刂泛烷L度、以及芯片內(nèi)部緩存buffer的地址,向所述FLASH命令執(zhí)行單元發(fā)送讀或?qū)懨畈⒔邮账鯢LASH命令執(zhí)行單元返回的命令執(zhí)行狀態(tài)、或向所述擦除單元發(fā)送擦除命令;
[0008]所述高速緩存,用于緩存來自所述內(nèi)部buffer的預寫入FLASH的數(shù)據(jù)、或從所述FLASH命令執(zhí)行單元讀出的數(shù)據(jù),將從所述FLASH命令執(zhí)行單元讀出的數(shù)據(jù)發(fā)送到所述內(nèi)部buffer、或?qū)⑺鰞?nèi)部buffer中預寫入FLASH的數(shù)據(jù)發(fā)送至所述FLASH命令執(zhí)行單元;
[0009]所述FLASH命令執(zhí)行單元,用于執(zhí)行所述地址控制單元發(fā)送的讀或?qū)懨?、或?zhí)行所述擦除單元發(fā)送的擦除命令,并向所述地址控制單元返回命令執(zhí)行狀態(tài),所述FLASH命令執(zhí)行單元在執(zhí)行讀命令時將讀出的數(shù)據(jù)發(fā)送至所述高速緩存,在執(zhí)行寫命令時對所述高速緩存發(fā)送的數(shù)據(jù)執(zhí)行FLASH寫入;
[0010]所述擦除單元,用于執(zhí)行所述地址控制單元發(fā)送的擦除命令,并在擦除完成后通知所述地址控制單元向所述FLASH命令執(zhí)行單元發(fā)送寫命令。
[0011]上述方案中,所述地址控制單元進一步用于,將收到的所述讀或?qū)懨顚懭朊罴拇嫫?,將收到的所述FLASH的讀或?qū)懙刂穼懭隖LASH地址寄存器,將收到的所述FLASH的讀或?qū)戦L度寫入長度寄存器,將收到的所述內(nèi)部buffer的地址寫入FLASH的buffer地址寄存器。
[0012]上述方案中,所述地址控制單元進一步用于,在收到所述CPU輸入的FLASH讀命令、FLASH的讀地址和長度、以及內(nèi)部buffer的地址時,判斷所述FLASH的讀地址和長度是否頁對齊;在收到所述CPU輸入的FLASH寫命令、FLASH的寫地址和長度、以及內(nèi)部buffer的地址時,判斷所述FLASH的寫地址和長度是否塊對齊;
[0013]根據(jù)所述判斷結(jié)果,所述地址控制單元向所述FLASH命令執(zhí)行單元發(fā)送相應命令,所述FLASH命令執(zhí)行單元執(zhí)行相應處理。
[0014]上述方案中,
[0015]所述地址控制單元在判斷所述FLASH的讀地址和長度頁對齊時,按頁依次發(fā)送讀命令和頁地址給所述FLASH命令執(zhí)行單元;
[0016]所述FLASH命令執(zhí)行依據(jù)所述讀命令和頁地址按頁讀取數(shù)據(jù)并送入所述高速緩存,在完成每頁數(shù)據(jù)讀取時將執(zhí)行狀態(tài)發(fā)送給所述地址控制單元,并在達到所述FLASH的讀長度或所述高速緩存滿時,通知所述CPU通知所述地址控制單元將所述高速緩存中的數(shù)據(jù)發(fā)送到所述內(nèi)部buffer ;
[0017]所述地址控制單元在判斷所述FLASH的讀地址和長度頁不對齊時,按頁依次發(fā)送讀命令、頁地址和頁內(nèi)偏移地址給所述FLASH命令執(zhí)行單元;
[0018]所述FLASH命令執(zhí)行單元依據(jù)所述讀命令、頁地址和頁內(nèi)偏移地址按頁讀取數(shù)據(jù)并送入所述高速緩存,在完成每頁數(shù)據(jù)讀取時將執(zhí)行狀態(tài)發(fā)送給所述地址控制單元,并在達到所述FLASH的讀長度或所述高速緩存滿時,通知所述CPU通知所述地址控制單元將所述高速緩存中的數(shù)據(jù)發(fā)送到所述內(nèi)部buffer ;所述地址控制單元還用于,依據(jù)所述頁地址和頁內(nèi)偏移地址對所述高速緩存中的數(shù)據(jù)進行整理。
[0019]上述方案中,
[0020]所述地址控制單元進在判斷所述FLASH的寫地址和長度塊對齊時,發(fā)送擦除一塊或多塊命令給所述擦除單元;
[0021]所述擦除單元在執(zhí)行相應塊的擦除命令后,通知所述地址控制單元向所述FLASH命令執(zhí)行單元執(zhí)行相應已擦除塊的寫命令;
[0022]所述地址控制單元按頁依次發(fā)送寫命令、頁地址給所述FLASH命令執(zhí)行單元;所述FLASH命令執(zhí)行單元從所述高速緩存中讀取預寫入FLASH的數(shù)據(jù),并依據(jù)所述寫命令、頁地址按頁向所述已擦除塊中寫入數(shù)據(jù),在完成每頁數(shù)據(jù)寫入時將執(zhí)行狀態(tài)發(fā)送給所述地址控制單元,并在達到所述FLASH的寫長度時,向所述CPU返回寫入狀態(tài);
[0023]所述地址控制單元在判斷所述FLASH的寫地址和長度塊不對齊時,向所述FLASH命令執(zhí)行單元發(fā)送讀取當前塊的命令;所述FLASH命令執(zhí)行單元將所述當前塊的數(shù)據(jù)讀入到所述高速緩存;所述高速緩存根據(jù)所塊內(nèi)偏移地址,在所述高速緩存中合并當前塊讀入數(shù)據(jù)和待寫入數(shù)據(jù);所述地址控制單元發(fā)送擦除當前塊的命令給所述擦除單元;所述擦除單元在執(zhí)行相應塊的擦除命令后,通知所述地址控制單元向所述FLASH命令執(zhí)行單元執(zhí)行相應已擦除塊的寫命令;所述FLASH命令執(zhí)行單元將所述高速緩存中合并后的數(shù)據(jù)按頁寫入所述已擦除塊中,在完成每頁數(shù)據(jù)寫入時將執(zhí)行狀態(tài)發(fā)送給所述地址控制單元,并在達到所述FLASH的寫長度時,向所述CPU返回寫入狀態(tài)。
[0024]本發(fā)明還提供了一種閃存FLASH的控制方法,所述方法包括:
[0025]獲得中央處理器CPU輸入的FLASH讀或?qū)懨?、FLASH的讀或?qū)懙刂泛烷L度、以及內(nèi)部緩存buffer的地址;
[0026]將所述FLASH的讀或?qū)懙刂泛烷L度圓整到頁邊界,讀取所述內(nèi)部buffer中預寫入FLASH的數(shù)據(jù)并按頁寫入FLASH、或按頁讀取所述FLASH中數(shù)據(jù)并發(fā)送到所述內(nèi)部buffer。
[0027]上述方案中,所述方法進一步包括:
[0028]在獲得CPU輸入的FLASH讀命令、FLASH的讀地址和長度、以及內(nèi)部buffer的地址時,判斷所述FLASH的讀地址和長度是否頁對齊;
[0029]如果頁對齊,則依據(jù)所述FLASH的讀地址和長度,從所述FLASH中按頁讀取數(shù)據(jù)并發(fā)送到高速緩存,待達到所述FLASH的讀長度或所述高速緩存滿時,將所述高速緩存中的數(shù)據(jù)發(fā)送到所述內(nèi)部buffer ;
[0030]如果頁不對齊,則依據(jù)所述FLASH的讀地址和長度,從所述FLASH中按頁讀取數(shù)據(jù)并發(fā)送到高速緩存,并根據(jù)偏移地址對所述高速緩存中的數(shù)據(jù)進行整理,待達到所述FLASH的讀長度或所述高速緩
當前第1頁1 2 3 4 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
双柏县| 库伦旗| 合江县| 始兴县| 富宁县| 台东县| 开江县| 阜城县| 东乡| 静安区| 六枝特区| 正蓝旗| 丹阳市| 灵石县| 上杭县| 九寨沟县| 乌兰县| 登封市| 昭苏县| 崇阳县| 磐安县| 祥云县| 师宗县| 弋阳县| 恩平市| 济阳县| 邢台市| 尖扎县| 玉林市| 全州县| 兴安盟| 寻乌县| 延庆县| 武冈市| 射阳县| 新巴尔虎左旗| 昌吉市| 米脂县| 潮安县| 东兴市| 林西县|