999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于ARM的大容量NAND FLASH應(yīng)用

2016-04-12 00:00:00高楊管雪元
現(xiàn)代電子技術(shù) 2016年2期

摘 要: 針對(duì)基于ARM的大容量NAND FLASH應(yīng)用中的問題進(jìn)行研究,發(fā)現(xiàn)ARM的可變靜態(tài)存儲(chǔ)控制器模塊只有2個(gè)NAND FLASH片選引腳,無法直接提供大容量NAND FLASH所需的4個(gè)片選信號(hào);NAND FLASH存儲(chǔ)以頁為單位,對(duì)于不足1頁的數(shù)據(jù)無法進(jìn)行存儲(chǔ)。通過對(duì)ARM的引腳復(fù)用功能和NAND FLASH的工作特點(diǎn)進(jìn)行研究,提出了自定義NAND FLASH片選信號(hào)解決片選不足,通過對(duì)數(shù)據(jù)進(jìn)行填充解決不足1頁的數(shù)據(jù)無法存儲(chǔ)的問題。最終通過實(shí)驗(yàn)進(jìn)行驗(yàn)證,保證了基于ARM的大容量NAND FLASH可以充分有效的應(yīng)用。

關(guān)鍵詞: ARM處理器; 片選; 大容量存儲(chǔ); NAND閃存

中圖分類號(hào): TN710?34; TP333 文獻(xiàn)標(biāo)識(shí)碼: A 文章編號(hào): 1004?373X(2016)02?0065?04

Application on large capacity NAND FLASH based on ARM

GAO Yang, GUAN Xueyuan

(National Key Lab on Transient Physics, Nanjing University of Science and Technology, Nanjing 210094, China)

Abstract: The questions existing in application of the large capacity NANDFLASH based on ARM are researched, because flexible static memory controller (FSMC) module of ARM only has two pins for chip selection but can not provide four chip selection signals required by large capacity NAND FLASH, and the storage of FLASH NAND is based on the unit of page, which can not store the data of the insufficient page. By research on the multiplexing functions of ARM pin and working characteristics of NAND FLASH, the self?definition of NAND FLASH chip selection signal is proposed to solve the problem of pin insufficiency and the filling in data is adopted to settle the problem that the data insufficient as one page can not be stored. The method verified in experiments. It ensured the application of large capacity NAND FLASH based on ARM effectively.

Keywords: ARM; chip selection; large capacity memory; NAND flash

作為主流的存儲(chǔ)器之一,NAND FLASH以其存儲(chǔ)速度快、可靠性高、體積小、質(zhì)量輕、功耗低、適應(yīng)各種工作環(huán)境等特點(diǎn),廣泛應(yīng)用于各類存儲(chǔ)設(shè)備[1]。在處理器中,ARM具有高性能、低功耗、低價(jià)格等特點(diǎn),占有很大的市場(chǎng)份額。隨著信息行業(yè)的發(fā)展,各類信息的數(shù)據(jù)量越來越大,為了滿足信息應(yīng)用和處理的更高需求,增大相關(guān)設(shè)備的存儲(chǔ)容量也就尤為重要。因此,本文主要針對(duì)基于ARM的大容量NAND FLASH在應(yīng)用方面的主要問題進(jìn)行分析。

1 大容量NAND FLASH應(yīng)用中的問題

目前市面上的NAND FLASH型號(hào)眾多,相應(yīng)的容量、結(jié)構(gòu)特點(diǎn)和操作方式上也各有差異,但每個(gè)廠商的不同型號(hào)除了容量上的差異,其余基本相同。本文以容量較大的K9MDG08U5M為例,這款NAND FLASH是三星公司的8位存儲(chǔ)芯片,容量高達(dá)16 GB。K9MDG08U5M內(nèi)部包含4片,每片有8 192塊,每塊有128頁[2]。

1.1 NAND FLASH片選問題

在存儲(chǔ)系統(tǒng)中,通過NAND FLASH完成存儲(chǔ)功能,但其內(nèi)部沒有獨(dú)立的控制結(jié)構(gòu),所以要實(shí)現(xiàn)整個(gè)存儲(chǔ)系統(tǒng),就必須依賴其他控制芯片。類似于K9MDG08U5M這種大容量NAND FLASH,片選信號(hào)有4個(gè),也是目前片選信號(hào)最多的。對(duì)于不同型號(hào)的ARM或者是包含ARM內(nèi)核的SoC來說,其涉及NAND FLASH的FSMC(可變靜態(tài)存儲(chǔ)控制器)模塊只有2個(gè)片選引腳,因此無法直接提供大容量NAND FLASH所需的4個(gè)片選信號(hào)。

1.2 NAND FLASH編程操作問題

NAND FLASH的操作主要包含擦除、編程和讀取,最為關(guān)鍵的是編程操作,保證數(shù)據(jù)的可靠性和完整性是實(shí)現(xiàn)存儲(chǔ)功能的最基本要求。由于內(nèi)部物理結(jié)構(gòu)的特點(diǎn),NAND FLASH的讀/寫以頁為單位,而擦除則以塊為單位[3]。編程操作時(shí),一般在控制器中開辟1頁大小的緩存,待緩存中的數(shù)據(jù)收集滿后再傳輸給NAND FLASH進(jìn)行存儲(chǔ)。在實(shí)際應(yīng)用中,所采集的數(shù)據(jù)很難準(zhǔn)確預(yù)測(cè),更難以保證數(shù)據(jù)量正好等于頁容量的整數(shù)倍,這樣就不可避免地造成最后不夠1頁的數(shù)據(jù)無法存入NAND FLASH中,這種數(shù)據(jù)丟失對(duì)于存儲(chǔ)系統(tǒng)來說是不允許出現(xiàn)的。

2 應(yīng)用中問題解決方法

前面敘述了大容量NAND FLASH在實(shí)際應(yīng)用中的兩個(gè)典型問題:一是大容量帶來的多片選,造成ARM處理器片選不足的問題;二是容量越大,最后數(shù)據(jù)不滿1頁的可能性越高,造成數(shù)據(jù)丟失的問題也越嚴(yán)重。為了使這種大容量NAND FLASH能有更廣泛的應(yīng)用,就必須解決這兩個(gè)問題。

2.1 解決片選

本文ARM以意法半導(dǎo)體的STM32F407為例,這款微處理器具有NAND FLASH所需的FSMC。FSMC能夠連接同步、異步存儲(chǔ)器和 16 位 PC 存儲(chǔ)卡,數(shù)據(jù)總線位寬可根據(jù)需要配置成8位或16位,具有兩個(gè)支持 ECC 硬件的 NAND FLASH存儲(chǔ)區(qū)域,可檢查多達(dá) 8 KB 的數(shù)據(jù)[4]。FSMC定義了兩個(gè)NAND FLASH片選[5]FSMC_NCE[3:2],從FSMC的角度,外部存儲(chǔ)器被劃分為4個(gè)固定大小的存儲(chǔ)區(qū)域,其中存儲(chǔ)區(qū)域2和存儲(chǔ)區(qū)域3用于連接NAND FLASH,每個(gè)存儲(chǔ)區(qū)域只能連接一個(gè)器件。默認(rèn)的情況下,F(xiàn)SMC可連接2個(gè)單片選NAND FLASH。4片選的K9MDG08U5M就需要另外定義其余片選。ARM的大多數(shù)引腳都具有復(fù)用功能,可以按照定義配置成不同的功能,但是一個(gè)引腳在同一時(shí)間只能配置成一種功能。每一個(gè)片選[CE]有效時(shí),該片都有一個(gè)R/[B]狀態(tài)輸出,用于判斷當(dāng)前NAND FLASH的狀態(tài)[6]。所以R/[B]信號(hào)與[CE]信號(hào)個(gè)數(shù)上是對(duì)應(yīng)的,需要自己定義的也就是這兩組引腳。既然重新定義,那就意味著引腳的復(fù)用功能無法使用,在硬件設(shè)計(jì)時(shí)應(yīng)該將[CE][4:1]和R/[B][4:1]連接至ARM的空閑引腳(該引腳的復(fù)用功能不使用),其余引腳對(duì)應(yīng)復(fù)用功能正常連接。硬件連接框圖如圖1所示。

在軟件設(shè)計(jì)時(shí),把[CE][4:1]和R/[B][4:1]相連的引腳分別配置成GPIO的輸出功能和輸入功能。由于片選低電平有效,初始化時(shí)將[CE][4:1]置高。在使用時(shí),ARM輸出低電平至需要操作的片選,使能該片NAND FLASH后,再判斷R/[B]反饋的狀態(tài)信號(hào),如果高電平表示NAND FLASH處于空閑狀態(tài)可以進(jìn)行接下來的操作,低電平則表示NAND FLASH處于忙碌狀態(tài),ARM等待至信號(hào)變高[7]。

圖1 連接框圖

當(dāng)一個(gè)片選的容量存滿之后,需要自動(dòng)切換到下一個(gè)片選,進(jìn)而可以繼續(xù)工作。對(duì)NAND FLASH的每次操作都涉及到對(duì)應(yīng)的操作地址,即頁地址、塊地址和片選號(hào)(從頁首開始操作,頁內(nèi)地址為0)。一次操作完成后,應(yīng)該更新操作地址并進(jìn)行相應(yīng)的判斷。前面介紹過K9MDG08U5M內(nèi)部包含4片,每片包含8 192塊,每塊由128頁構(gòu)成,因此最大頁地址為128,最大塊地址為8192,最大片選號(hào)為4,初始地址都是從0開始。地址更新流程圖如圖2所示。

圖2 地址更新流程圖

2.2 解決數(shù)據(jù)不夠1頁

編程操作以頁為單位,這是所有NAND FLASH共同的操作特點(diǎn)。由于內(nèi)部物理結(jié)構(gòu),K9MDG08U5M寫入數(shù)據(jù)過程分為兩步:第一步,接收到第一周期編程命令(80H),將收集好的數(shù)據(jù)傳輸至NAND FLASH內(nèi)部的緩存區(qū),其大小與頁的大小相等;第二步,接收到第二周期編程命令(10H),該命令確認(rèn)寫入,數(shù)據(jù)由緩存區(qū)真正存入至存儲(chǔ)區(qū)一頁中[8]。通過對(duì)數(shù)據(jù)寫入過程的分析,可以看出每一次編程操作都是針對(duì)1頁大小的數(shù)據(jù)進(jìn)行的。這種操作方式可以提高寫入的速度,因?yàn)槊看螌懭霐?shù)據(jù)都需要向NAND FLASH發(fā)送命令和操作地址,與單字節(jié)操作相比,減少了程序多次執(zhí)行發(fā)送命令和地址的時(shí)間[9]。但當(dāng)數(shù)據(jù)不夠1頁時(shí),按頁操作就成為一種束縛。這是所有NAND FLASH都會(huì)存在的問題,對(duì)于大容量NAND FLASH,頁的大小也相應(yīng)增加,這種問題所造成的影響就變得更加明顯。

對(duì)于這個(gè)問題,首先想到的方法就是對(duì)數(shù)據(jù)進(jìn)行填充,將不足1頁的數(shù)據(jù)填充滿1頁,再完成接下來的存儲(chǔ)操作。本文用到的也就是這種方法,填充數(shù)據(jù)需要考慮兩個(gè)問題:一是什么時(shí)候填充;二是填充什么數(shù)據(jù)。

什么時(shí)候填充主要根據(jù)外圍設(shè)備的數(shù)據(jù)傳輸間隔來判斷,可以定義一個(gè)最大容忍時(shí)間。最大容忍時(shí)間可以根據(jù)實(shí)際情況適當(dāng)?shù)拇笮驗(yàn)檫^小會(huì)造成沒有必要的填充,從而浪費(fèi)存儲(chǔ)資源,而容忍時(shí)間適當(dāng)大些不會(huì)帶來任何負(fù)面影響,定義的標(biāo)準(zhǔn)就是大于外圍設(shè)備的最大傳輸間隔。

關(guān)于填充什么數(shù)據(jù)并沒有特殊的限制,只需要不會(huì)對(duì)有效數(shù)據(jù)產(chǎn)生干擾即可。本文主要根據(jù)NAND FLASH內(nèi)部特點(diǎn)來選擇填充數(shù)據(jù)。由于NAND FLASH存儲(chǔ)單元的物理特性,編程操作時(shí)存儲(chǔ)單元的數(shù)據(jù)只能從1變成0,無法從0變成1,擦除的目的就是將所有存儲(chǔ)位變?yōu)?。因此存儲(chǔ)數(shù)據(jù)時(shí),沒有存入有效數(shù)據(jù)的空間內(nèi)數(shù)據(jù)[10]應(yīng)該都是0xFF。根據(jù)這一點(diǎn),本文選擇的填充數(shù)據(jù)就是0xFF,同時(shí)也滿足不會(huì)對(duì)有效數(shù)據(jù)產(chǎn)生干擾的要求。

在實(shí)際設(shè)計(jì)中,可以使用計(jì)時(shí)器進(jìn)行判斷,當(dāng)時(shí)間達(dá)到了最大容忍時(shí)間,即認(rèn)為不再有數(shù)據(jù)進(jìn)入,將緩存填充0xFF至1頁。計(jì)時(shí)器的初值并不等于零,而是定義為大于最大容忍時(shí)間的值。因?yàn)榭紤]到程序啟動(dòng)之后外圍設(shè)備不一定立刻就產(chǎn)生數(shù)據(jù),為了避免剛開始沒有數(shù)據(jù)進(jìn)入時(shí)也進(jìn)行填充,所以計(jì)時(shí)器選擇從較大的值開始計(jì)時(shí)。串口采用中斷方式接收數(shù)據(jù),當(dāng)有數(shù)據(jù)進(jìn)入時(shí),串口產(chǎn)生中斷,程序執(zhí)行中斷服務(wù)函數(shù),同時(shí)計(jì)時(shí)器歸零。當(dāng)下一幀數(shù)據(jù)進(jìn)入,串口再次產(chǎn)生中斷,計(jì)時(shí)器再次歸零。如果一定時(shí)間內(nèi)沒有數(shù)據(jù)進(jìn)入,計(jì)時(shí)器的值達(dá)到最大容忍時(shí)間,即認(rèn)為數(shù)據(jù)接受完畢,若緩存不夠1頁大小則填充數(shù)據(jù)至1頁。具體流程圖如圖3所示。

圖3 填充流程圖

3 實(shí)驗(yàn)驗(yàn)證

通過串口調(diào)試助手循環(huán)發(fā)送abcdefg至下位機(jī),隨機(jī)發(fā)送若干個(gè)字節(jié)后停止發(fā)送,將接收到的數(shù)據(jù)存入NAND FLASH第3片第2塊第1頁,最終再讀出并通過串口助手顯示。由圖4和圖5可知,循環(huán)發(fā)送出273 B,接收緩存最小編號(hào)為0,停止發(fā)送后,緩存中數(shù)據(jù)從第274個(gè)字節(jié)處開始填充為0xFF,顯示出的4 096 B(1頁大小)中,abcdefg后全為0xFF。實(shí)驗(yàn)結(jié)果達(dá)到預(yù)期效果,上述解決方法具有可行性。

圖4 串口助手收發(fā)界面

4 結(jié) 語

本文主要分析解決了大容量NAND FLASH應(yīng)用于ARM的兩個(gè)主要問題。首先對(duì)于片選不足的問題,可以通過ARM自身引腳的復(fù)用功能進(jìn)行解決,只需對(duì)片選及相應(yīng)的狀態(tài)信號(hào)重新定義,并注意操作地址的更新以保證NAND FLASH可以連續(xù)正常工作。其次解決了數(shù)據(jù)不夠1頁無法滿足按頁存儲(chǔ)的問題,通過定義最大容忍時(shí)間來判斷是否還有數(shù)據(jù)進(jìn)入,當(dāng)達(dá)到最大容忍時(shí)間即認(rèn)為數(shù)據(jù)采集完成,如果數(shù)據(jù)不足1頁則進(jìn)行填充,從而保證有效數(shù)據(jù)完全存入NAND FLASH。這兩個(gè)問題的解決,保證了基于ARM的大容量NAND FLASH可以充分有效的應(yīng)用。尤其對(duì)于第二個(gè)問題,解決方法適用于所有由NAND FLASH構(gòu)成的存儲(chǔ)系統(tǒng)。

圖5 Keil調(diào)試界面

參考文獻(xiàn)

[1] 陳國(guó),高楊.NAND FLASH在大容量存儲(chǔ)技術(shù)中的應(yīng)用[J].航空計(jì)算技術(shù),2009,39(2):113?116.

[2] Samsung Corp. K9MDG08U5M?PCB0M datasheet [EB/OL]. [2011?02?28]. http://www.samsung.com.

[3] 邢亮,黃暉,田丹.機(jī)載系統(tǒng)NAND FLASH存儲(chǔ)技術(shù)[J].航空計(jì)算技術(shù),2014,44(1):123?125.

[4] 廖義奎.ARM Cortex?M4嵌入式實(shí)戰(zhàn)開發(fā)精解:基于STM32F4[M].北京:北京航空航天大學(xué)出版社,2013.

[5] ST Corp. STM32F407xx datasheet[ EB/OL]. [2013?10?22].http://www.st.com.

[6] 舒文麗,吳云峰,孫長(zhǎng)勝,等.基于NAND FLASH的海量存儲(chǔ)器的設(shè)計(jì)[J].電子器件,2012,35(1):107?110.

[7] 朱知博.基于NAND FLASH的高速大容量存儲(chǔ)系統(tǒng)設(shè)計(jì)[J].現(xiàn)代電子技術(shù),2011,34(8):170?173.

[8] 雷磊,謝民,李先楚.基于NAND 型FLASH的海量存儲(chǔ)板的設(shè)計(jì)與實(shí)現(xiàn)[J].測(cè)控技術(shù),2007(z1):196?202.

[9] 鄭文靜,李明強(qiáng),舒繼武.FLASH存儲(chǔ)技術(shù)[J].計(jì)算機(jī)研究與發(fā)展,2010,47(4):716?726.

[10] 晏敏,龍小奇,章兢,等.開放式大容量NAND FLASH數(shù)據(jù)存儲(chǔ)系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].微電子學(xué)與計(jì)算機(jī),2009,26(11):13?16.

主站蜘蛛池模板: 国产成人精品第一区二区| 欧美日韩另类在线| 青草视频久久| 91午夜福利在线观看| 91国内外精品自在线播放| 亚洲成人精品在线| 国产一区二区丝袜高跟鞋| 亚洲有无码中文网| 在线视频亚洲色图| 亚洲高清中文字幕在线看不卡| 精品欧美一区二区三区久久久| av午夜福利一片免费看| 激情六月丁香婷婷| 欧美人人干| 国产成人成人一区二区| 亚洲天堂精品视频| 激情亚洲天堂| 色135综合网| 亚洲人成成无码网WWW| 亚洲精品日产精品乱码不卡| 天堂av综合网| 91亚洲精品第一| 四虎精品黑人视频| 香蕉视频在线观看www| 老司机久久99久久精品播放| 亚洲中文字幕23页在线| 亚洲男女在线| 色香蕉影院| 免费无码AV片在线观看国产| 免费又爽又刺激高潮网址 | 国产激情影院| 看国产毛片| 久久精品国产精品一区二区| 午夜啪啪网| 色综合久久久久8天国| 四虎亚洲国产成人久久精品| 久久99久久无码毛片一区二区| 九九九久久国产精品| 美女无遮挡免费视频网站| 国产精品久久久久婷婷五月| 在线播放精品一区二区啪视频| 欧洲熟妇精品视频| 国产成人成人一区二区| 日韩欧美中文字幕在线精品| 国产迷奸在线看| 国产成人精品免费av| 色婷婷视频在线| 爽爽影院十八禁在线观看| 蜜臀av性久久久久蜜臀aⅴ麻豆| 久久国产精品电影| 91丝袜乱伦| 国产不卡一级毛片视频| 色天天综合| 91系列在线观看| 片在线无码观看| 国产自在自线午夜精品视频| 黄色不卡视频| 亚洲一区二区成人| 国产日韩丝袜一二三区| 国产小视频在线高清播放| 波多野结衣视频一区二区| 97久久超碰极品视觉盛宴| 欧美亚洲中文精品三区| 99精品视频在线观看免费播放| 久热中文字幕在线| 欧美一级在线看| 欧美中文字幕在线播放| 国产91av在线| 色香蕉网站| 精品三级网站| 98超碰在线观看| 2021无码专区人妻系列日韩| 久久6免费视频| 成AV人片一区二区三区久久| 亚洲综合色吧| 国产女人喷水视频| 欧美成人精品高清在线下载| 亚洲精品福利网站| 久久鸭综合久久国产| 中文字幕乱妇无码AV在线| 亚洲人成亚洲精品| 她的性爱视频|