<var id="fnfpo"><source id="fnfpo"></source></var>
<rp id="fnfpo"></rp>

<em id="fnfpo"><object id="fnfpo"><input id="fnfpo"></input></object></em>
<em id="fnfpo"><acronym id="fnfpo"></acronym></em>
  • <th id="fnfpo"><track id="fnfpo"></track></th>
  • <progress id="fnfpo"><track id="fnfpo"></track></progress>
  • <tbody id="fnfpo"><pre id="fnfpo"></pre></tbody>

  • x
    x

    大容量NAND FLASH在ARM嵌入式系統中的設計與實現

    發布時間:2010-9-20 12:42    發布者:eetech
    關鍵詞: arm , Flash , NAND , 嵌入式系統
    1 引 言

    隨著嵌人式系統在數碼相機、數字攝像機、移動電話、mp3音樂播放器等移動設備中越來越廣泛的應用,FLASH存儲器已經逐步取代其他半導體存儲元件,成為嵌入式系統中主要數據和程序載體。FLASH存儲器又稱閃存,是一種可在線多次擦除的非易失性存儲器,即掉電后數據不會丟失。FLASH存儲器還具有體積小、功耗低、抗振性強等優點,是嵌入式系統的首選存儲設備。

    NAND和NOR FLASH是現在市場上兩種主要的非易失閃存芯片,這兩種類型的FLASH區別在于:

    NOR類型FLASH可以按照字節訪問,所以存放在FLASH里的程序可以直接執行,而NAND類型FLASH是串行訪問的,需要先把程序讀取到內存然后再從內存中運行。與NOR型相比,NAND型閃存的優點是容量大,但是NAND型的速度比較慢,因為他的I/O 端口只有8(或16)個,要完成地址和數據的傳輸就必需讓這些信號輪流傳送。NAND型FLASH具有極高的單元密度,容量可以比較大,價格相對便宜。本文采用Samsung公司的NAND型FLASH存儲設備K9F2808U0C。

    2 系統硬件結構及接口電路

    2.1 ARM芯片介紹

    ARM公司自1990年正式成立以來,在32位RISC(Reduced Instruction Set Computer)CPU開發領域不斷取得突破,目前已經占有75%以上的32位RISC嵌入式產品市場。在低功耗、低成本的嵌人式應用領域確立了市場領導地位。

    PHILIPS公司的LPC2210是基于一個支持實時仿真和跟蹤的32位ARM7TDMI-STMCPU的微控制器,片內128位寬度的存儲器接口和獨特的加速結構使32位代碼能夠在最大時鐘頻率下運行。LPC2210極低的功耗、多個32位定時器、8路10位ADC以及9個外部中斷使其特別適用于工業控制、醫療系統、訪問控制和POS機。由于內置了寬范圍的串行通信接口,他們也非常適合于通信網關、協議轉換器、嵌入式軟MODEM以及其他各種類型的應用。

    2.2 K9F2808U0C芯片的結構和特點

    K9F2808U0C是Samsung公司生產的NAND型FLASH存儲器,其功能框圖如圖1所示。



    K9F2808U0C存儲容量為132 Mb,其中主數據區為128 Mb,輔助數據區為4 Mb,工作電壓為2.7~3.6 V,I/O端口寬度為8 b。片內寫控制自動實現編程和擦除所有功能,包括內部校驗、脈沖的周期和數據冗余。

    芯片的存儲空間是按照塊和頁的概念來組織的,一個芯片分為1 024個塊,每個塊有32頁,每一頁有528 B。528 B中分為512 B的數據區和16個字節的空閑區,空閑區用于存放ECC代碼、壞塊信息和文件系統相關代碼。一個528 B的數據寄存器作為數據緩沖單元,用來實現I/0緩沖和存儲器之間的數據傳輸。芯片的存儲陣列組織如圖2所示。



    使用NAND型FLASH的關鍵技術之一是存儲空間的管理。Samsung公司的NAND FLASH存儲器有一些初始無效塊(包含一個或多個壞位的存儲塊),制造商不保證這些塊的可靠性。NAND FLASH容許成品中有壞塊存在,這是采用NAND技術所特有的現象。壞塊的存在并不影響有效塊的性能。但是,系統級的設計必須能夠用地址映射把這些壞塊屏蔽掉。芯片在出廠時,除保存壞塊信息的區域外,其他部分一律被擦除(值為0xFF),對壞塊的讀操作是允許的,但不推薦進行寫和擦除操作,以免由于結構方面的原因使鄰近的塊也失效。系統設計時必須根據初始的壞塊信息識別出壞塊,并建立壞塊列表。進行寫或擦除操作時將欲操作塊的地址與壞塊地址表的地址相比較,若是壞塊則應跳過。為了提高存儲空間的效率,單個位數據錯誤引起的讀寫失敗都可以用ECC(校錯和糾錯)方法處理。

    芯片在使用過程中,可能有新壞塊的產生,為了系統的可靠性,必須對此情況加以考慮。在數據寫入或塊擦除操作后,如果讀狀態寄存器出現錯誤,則表示塊內有壞頁存在,也即表明此塊已壞,因為塊內壞頁的存在并不影響其他頁的讀寫,這時可采用塊替換操作來把頁內有用數據轉移到其他空閑塊內,并把壞塊信息存入壞塊表中。

    2.3 K9F2808U0C與LPC2210的連接

    K9F2808U0C與LPC2210的連接如圖3所示,使用8位數據總線D0~D7與K9F2808U0C的I/O0~I/O7引腳相連,使用數據總線來發送地址、數據和命令。K9F2808U0C的片選信號由CS3控制,即使用LPC2210的外部存儲器接口的Bank3地址空間,而CLE,ALE信號分別由A0,A1控制,所以K9F2808U0C的操作地址如下:



    3 讀寫操作流程

    K9F2808U0C的頁編程操作流程圖如圖4所示。



    首先向I/O寫人編程指令80H,然后使用3個時鐘周期寫入目的地址(A0~A23),接著向I/O寫入數據。數據發送完成后,寫入指令10H啟動頁編程,此時芯片內部的邏輯電路將進行頁擦除和數據編程操作。微控制器可以讀狀態指令70H來讀取狀態寄存器的值,若D6位為1,則表明寫操作完成。

    寫操作完成后,通過讀取狀態寄存器的D0位判斷編程是否成功,若D0位為0,則表示編程成功;否則表示編程失敗。

    K9F2808U0C的塊擦除和讀數據操作如圖5所示:對于K9F2808U0C的擦除是以塊為單位,擦除時首先寫入塊擦除命令60H,然后輸入要擦除塊的地址,再寫入指令DoH啟動塊擦除。微控制器可以讀取狀態指令70H來讀取狀態寄存器的值,若D6位為1,則表明擦除完成。寫操作完成后,通過讀取狀態寄存器的D0位來判斷擦除是否成功。




    對于K9F2808U0C的讀數據操作是以頁為單位,讀數據時首先寫入讀數據命令00H,然后輸入要讀取頁的地址,接著從數據寄存器中讀取數據,最后進行ECC校驗。

    4 在μC/OS實時操作系統下的實現和性能驗證

    μC/OS是一個多任務的實時操作系統,專為嵌入式應用而設計,可用于各類8位、16位和32位單片機DSP,已有10余年應用史,其安全性和實時性得到了廣泛的認同,在嵌入式領域發揮著重要作用。該操作系統公開了他的實時性內核源碼,同時提供了較多的應用接口函數。通過在其實時內核的基礎上做少量的修改,便可將對NAND FLASH的操作移植到μC/OS中,利用OSTa-skCreateExt()函數創建任務并檢查堆?臻g,利用PC-ElapsedInit()初始化時間測量功能。共建立5個任務,分別為空閑任務、統計任務、頁編程任務、塊擦除任務和讀數據任務,程序代碼示意如下:






    5 結 語

    以Samsung NAND FLASH器件K9F2808U0C為例,通過PHILIPS LPC2210實現對存儲器的器件操作,以μC/OS實時操作系統為平臺完成測試實驗,將得到的實驗結果與Satnsung公司的K9F2808UOC FLASH Memory手冊進行對比,表明該設計滿足設計要求,達到預期目標。
    本文地址:http://www.portaltwn.com/thread-28277-1-1.html     【打印本頁】

    本站部分文章為轉載或網友發布,目的在于傳遞和分享信息,并不代表本網贊同其觀點和對其真實性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問題,我們將根據著作權人的要求,第一時間更正或刪除。
    您需要登錄后才可以發表評論 登錄 | 立即注冊

    廠商推薦

    • Microchip視頻專區
    • EtherCAT®和Microchip LAN925x從站控制器介紹培訓教程
    • MPLAB®模擬設計器——在線電源解決方案,加速設計
    • 讓您的模擬設計靈感,化為觸手可及的現實
    • 深度體驗Microchip自動輔助駕駛應用方案——2025巡展開啟報名!
    • 貿澤電子(Mouser)專區

    相關視頻

    關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
    電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
    快速回復 返回頂部 返回列表
    精品一区二区三区自拍图片区_国产成人亚洲精品_亚洲Va欧美va国产综合888_久久亚洲国产精品五月天婷