日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁 > 嵌入式 > 嵌入式教程
[導(dǎo)讀]嵌入式系統(tǒng)中Nand-Flash的原理及應(yīng)用

當(dāng)前各類嵌入式系統(tǒng)開發(fā)設(shè)計(jì)中,存儲(chǔ)模塊是不可或缺的重要方面。NOR和NAND是目前市場(chǎng)上兩種主要的非易失閃存技術(shù)。Nor-flash存儲(chǔ)器的容量較小、寫入速度較慢,但因其隨機(jī)讀取速度快,因此在嵌入式系統(tǒng)中,常應(yīng)用在程序代碼的存儲(chǔ)中。Nor-flash存儲(chǔ)器的內(nèi)部結(jié)構(gòu)決定它不適合朝大容量發(fā)展;而Nand-flash存儲(chǔ)器結(jié)構(gòu)則能提供極高的單元密度,可以達(dá)到很大的存儲(chǔ)容量,并且寫入和擦除的速度也很快。
    Nand-flash存儲(chǔ)器是flash存儲(chǔ)器的-種,其內(nèi)部采用非線性宏單元模式,為固態(tài)大容量存儲(chǔ)器的實(shí)現(xiàn)提供了廉價(jià)有效的解決方案。Nand-flash存儲(chǔ)器具有容量較大,改寫速度快,適用于大量資料的存儲(chǔ),因而在業(yè)界得到了越來越廣泛的應(yīng)用,如嵌入式產(chǎn)品中包括數(shù)碼相機(jī)、MP3隨身聽記憶卡、體積小巧的U盤等。
    本文以三星公司的K9F1208UOB芯片為例,介紹Nand-flash存儲(chǔ)器芯片的讀寫流程和時(shí)序。

1 Nand-Flash存儲(chǔ)器的工作原理
1.1 Nand-Flash存儲(chǔ)器的組成結(jié)構(gòu)及指令集
    K9F1208UOB的容量為64Mb,存儲(chǔ)空間按128K個(gè)頁(行)、每頁中528個(gè)字節(jié)(列)的組成方式構(gòu)成。備用的16列,位于列地址的512-527。K9F1208UOB還將存儲(chǔ)空間分為塊(block),每1塊由32個(gè)頁構(gòu)成。因此K9F1208UOB中一共有4096個(gè)塊。這種“塊-頁”結(jié)構(gòu),恰好能滿足文件系統(tǒng)中劃分簇和扇區(qū)的結(jié)構(gòu)要求。K9F1208UOB的內(nèi)部結(jié)構(gòu)如圖1所示。
 
圖1 K9F1208UOB的內(nèi)部結(jié)構(gòu)
    K9F1208UOB的讀和寫都以頁為單位,擦除則以塊為單位進(jìn)行操作。
    K9F1208UOB的地址通過8位端口傳送,有效地節(jié)省了引腳的數(shù)量,并能夠保持不同密度器件引腳的一致性,系統(tǒng)可以在電路不作改動(dòng)的情況下升級(jí)為高容量存儲(chǔ)器件。
    K9F1208UOB通過CLE和ALE信號(hào)線實(shí)現(xiàn)I/O口上指令和地址的復(fù)用。指令、地址和數(shù)據(jù)都通過拉低WE和CE從I/O口寫入器件中。有一些指令只需要一個(gè)總線周期完成,例如,復(fù)位指令、讀指令和狀態(tài)讀指令等;另外一些指令,例如頁寫入和塊擦除,則需要2個(gè)周期,其中一個(gè)周期用來啟動(dòng),而另一個(gè)周期用來執(zhí)行。

1.2 Nand-Flash操作
1.2.1 頁讀操作
    在初始上電時(shí),器件進(jìn)入缺省的“讀方式1模式”。在這一模式下,頁讀操作通過將00h指令寫入指令寄存器,接著寫入3個(gè)地址(1個(gè)列地址,2個(gè)行地址)來啟動(dòng)。一旦頁讀指令被器件鎖存,下面的頁讀操作就不需要再重復(fù)寫入指令了。
    寫入指令和地址后,處理器可以通過對(duì)信號(hào)線R/B的分析來判斷該操作是否完成。如果信號(hào)為低電平,表示器件正“忙”;為高電平,說明器件內(nèi)部操作完成,要讀取的數(shù)據(jù)被送入了數(shù)據(jù)寄存器。外部控制器可以在以50ns為周期的連續(xù)RE脈沖信號(hào)的控制下,從I/O口依次讀出數(shù)據(jù)。連續(xù)頁讀操作中,輸出的數(shù)據(jù)是從指定的列地址開始,直到該頁的最后-個(gè)列地址的數(shù)據(jù)為止。

1.2.2 頁寫操作
    K9F1208UOB的寫入操作也以頁為單位。寫入必須在擦除之后,否則寫入將出錯(cuò)。
    頁寫入周期總共包括3個(gè)步驟:寫入串行數(shù)據(jù)輸入指令(80h),然后寫入3個(gè)字節(jié)的地址信息,最后串行寫入數(shù)據(jù)。串行寫入的數(shù)據(jù)最多為528字節(jié),它們首先被寫入器件內(nèi)的頁寄存器,接著器件進(jìn)入一個(gè)內(nèi)部寫入過程,將數(shù)據(jù)從頁寄存器寫入存儲(chǔ)宏單元。[!--empirenews.page--]
    串行數(shù)據(jù)寫入完成后,需要寫入“頁寫入確認(rèn)”指令10h,這條指令將初始化器件的內(nèi)部寫入操作。如果單獨(dú)寫入10h而沒有前面的步驟,則10h不起作用。10h寫入之后,K9F1208UOB的內(nèi)部寫控制器將自動(dòng)執(zhí)行內(nèi)部寫入和校驗(yàn)中必要的算法和時(shí)序,這時(shí)系統(tǒng)控制器就可以去做別的事了。
    內(nèi)部寫入操作開始后,器件自動(dòng)進(jìn)入“讀狀態(tài)寄存器”模式。在這一模式下,當(dāng)RE和CE為低電平時(shí),系統(tǒng)可以讀取狀態(tài)寄存器??梢酝ㄟ^檢測(cè)R/B的輸出,或讀狀態(tài)寄存器的狀態(tài)位(I/O 6)來判斷內(nèi)部寫入是否結(jié)束。在器件進(jìn)行內(nèi)部寫入操作時(shí),只有讀狀態(tài)寄存器指令和復(fù)位指令會(huì)被響應(yīng)。當(dāng)頁寫入操作完成,應(yīng)該檢測(cè)寫狀態(tài)位(I/O 0)的電平。
    內(nèi)部寫校驗(yàn)只對(duì)沒有成功地寫為0的情況進(jìn)行檢測(cè)。指令寄存器始終保持著讀狀態(tài)寄存器模式,直到其他有效的指令寫入指令寄存器為止。

1.2.3 塊擦除
    擦除操作是以塊為單位進(jìn)行的。擦除的啟動(dòng)指令為60h,塊地址的輸入通過兩個(gè)時(shí)鐘周期完成。這時(shí)只有地址位A14到A24是有效的,A9到A13則被忽略。塊地址載入之后執(zhí)行擦除確認(rèn)指令D0h,它用來初始化內(nèi)部擦除操作。擦除確認(rèn)命令還用來防止外部干擾產(chǎn)生擦除操作的意外情況。器件檢測(cè)到擦除確認(rèn)命令輸入后,在WE的上升沿啟動(dòng)內(nèi)部寫控制器開始執(zhí)行擦除和擦除校驗(yàn)。內(nèi)部擦除操作完成后,檢測(cè)寫狀態(tài)位(I/O 0),從而了解擦除操作是否有錯(cuò)誤發(fā)生。

1.2.4 讀狀態(tài)寄存器
    K9F1208UOB包含一個(gè)狀態(tài)寄存器,該寄存器反應(yīng)了寫入或擦除操作是否完成,或?qū)懭牒筒脸僮魇欠駸o錯(cuò)。寫入70h指令,啟動(dòng)讀狀態(tài)寄存器周期。狀態(tài)寄存器的內(nèi)容將在CE或RE的下降沿處送出至I/O端口。
    器件一旦接收到讀狀態(tài)寄存器的指令,它就將保持狀態(tài)寄存器在讀狀態(tài),直到有其他的指令輸入。因此,如果在任意讀操作中采用了狀態(tài)寄存器瀆操作,則在連續(xù)頁讀的過程中,必須重發(fā)00h或50h指令。

1.2.5 讀器件ID
    K9F1208UOB器件具有一個(gè)產(chǎn)品鑒定識(shí)別碼(ID),系統(tǒng)控制器可以讀出這個(gè)ID,從而起到識(shí)別器件的作用。讀ID的步驟是:寫入90h指令,然后寫入一個(gè)地址00h。在兩個(gè)讀周期下,廠商代碼和器件代碼將被連續(xù)輸出至I/O口。
    同樣,一旦進(jìn)入這種命令模式,器件將保持這種命令狀態(tài),直到接收到其他的指令為止。

1.2.6 復(fù)位
    器件提供一個(gè)復(fù)位(RESET)指令,通過向指令寄存器寫入FFh來完成對(duì)器件的復(fù)位。當(dāng)器件處于任意讀模式、寫入或擦除模式的忙狀態(tài)時(shí),發(fā)送復(fù)位指令可以使器件中止當(dāng)前的操作,正在被修改的存儲(chǔ)器宏單元的內(nèi)容不再有效,指令寄存器被清零并等待下一條指令的到來。當(dāng)WP為高時(shí),狀態(tài)寄存器被清為C0h。

2 系統(tǒng)硬件連線及軟件設(shè)計(jì)
2.1硬件連線
    K9F1208UOB和S3C2440A的接口電路如圖2所示。
 
圖2 K9F1208UOB與S3C2440A硬件電路
2.2 軟件設(shè)計(jì)
步驟1:Nand-Flash初始化
    利用ADS1.2等工具建立工程文件nandflash_test.mcp,在Nand.c文件中Test_K9S1208子函數(shù)實(shí)現(xiàn)了主要測(cè)試功能。
gpacon = rGPACON;
rGPACON=(rGPACON &~(0x3f<<17))|(0x3f<<17);
首先備份rGPACON的內(nèi)容,再設(shè)置GPA17-22的工作方式。然后調(diào)用Nand-Flash初始化函數(shù)。
NF8_Init0;//初始化函數(shù)
初始化函數(shù)的實(shí)現(xiàn)源碼如下:
rNFCONF=(TACLS<<12)|(TWRPH0<<8)I(TWRPH1<<4)|(0<<0):
rNFCONT=(0<<13)|(0<<12)|(0<<10)|(0<<9)|(0<<8)|(1<<6)|(1<<5)|(1<<4)|(1<<1)|(1<<0):

步驟2:讀器件ID碼
    由于S3C2440A中沒有像支持SDRAM 一樣提供直接與Nand-flash存儲(chǔ)器的接口,讀寫的過程要靠軟件編程來完成。初始化Nand-Flash后,就可以對(duì)Nand-Flash進(jìn)行操作了。
程序調(diào)用NF8_Print_Id()子函數(shù)讀出器件ID碼。
id=NF8_CheckId(); //繼續(xù)調(diào)用子函數(shù)
device=(U8)id;
maker=(U8)(id>>8):
Uart_Printf("Maker:%x,Device:%x ",maker,device);
NF8_Print_Id()源碼如下:
NF_CMD(0x90);//寫入90h指令
NF_ADDR(0x0);//寫入地址00h
for(i=0;i<10;i++);
Uart_Printf("NFSTAT:0x%x ",rNFSTAT);
id=NF_RDDATA8()<<8;//Maker code 0xec讀出ID值
id |=NF_RDDATA8();
//Devide code(K9S1208V:0x76),(K9K2G16U0M:0xca)

步驟3:頁讀寫程序
    本實(shí)驗(yàn)實(shí)現(xiàn)了某頁的寫及讀出驗(yàn)證功能。Test_NFS_Rw子函數(shù)實(shí)現(xiàn)這一功能。[!--empirenews.page--]
    程序首先初始化要寫入的數(shù)據(jù),*dstPt是要讀出驗(yàn)證的數(shù)據(jù),先填0;*srcPt是要寫入的數(shù)據(jù),先用隨機(jī)數(shù)填滿。
for(i=0;i<512;i++) *dstPt++=0x0;//填0
for(i=0;i<512;i++){
#if ADS10==TRUE
if(offset==-1) *srcPt++=rand()%0xff;//隨機(jī)數(shù)填滿
#else
if(offset==-1) srcPt++ =i%0xf;
#endif
else *srcPt++=i+offset;
}
寫之前先進(jìn)行擦除工作:
if(NF8_EraseBIock(block)==FAIL) return;
然后進(jìn)行頁寫入操作:
if(NF8_WritePage(block,page,srcPt)==FAIL) return;
將用隨機(jī)數(shù)填滿的srcPt指向的數(shù)據(jù)寫入到指定的頁中。寫入之后再讀出驗(yàn)證:
if(NF8_ReadPage(block,page,dstPt)==FAIL) return;
Uart_Printf("Checking data. ");
for(error=0,i=0;i<512;i++){
if(*srcPt++!=*dstPt++){//比較操作
Uart_Printf("Error:%d[W:%x,R:%x] ",i,*srcPt,*dstPt);
error++;
}
}
if(error!=0)
{Uart_Printf("Fail to R/W test(%d). ",error);
return(2);
}
else
{Uart_Printf("R/W test OK. ");
return(1);
}
    其中NF8_ReadPage(block,page,dstPt)將讀出的數(shù)據(jù)放入dstPt指向的地址空間里。最后將寫入的數(shù)據(jù)和讀出的數(shù)據(jù)比較,打印驗(yàn)證信息。

步驟4:編譯工程
    所有的函數(shù)都實(shí)現(xiàn)以后,通過ADS1.2進(jìn)行編澤,生成可執(zhí)行文件。在工程文件夾" andflash_testaandflash_test_DatakDebugRel"下,可以看到nandflash_test.bin可執(zhí)行文件。

步驟5:下載程序運(yùn)行
    將串口線與硬件開發(fā)系統(tǒng)板串口和開發(fā)PC機(jī)的COM1連接好(主要用于回顯),用USB線和開發(fā)PC 機(jī)的USB口相連后(主要用于數(shù)據(jù)的下載),打開DNW 軟件,將串口設(shè)置為COM1,比特率設(shè)置為115200,USB下載地址設(shè)為0x30000000。
    使用DNW 將前面生成的可執(zhí)行文件下載到內(nèi)存中去運(yùn)行。

3 結(jié)束語
    本文主要討論了Nand-flash存儲(chǔ)器芯片的工作原理以及以三星公司基于ARM公司的ARM920T處理器核S3C2440A為平臺(tái)舉了一個(gè)測(cè)試實(shí)例,讓讀者對(duì)整個(gè)存儲(chǔ)系統(tǒng)的軟硬件設(shè)計(jì)過程有了一個(gè)較為全面的了解,便于在其它嵌入式系統(tǒng)設(shè)計(jì)中運(yùn)用。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

美國(guó)紐約州阿蒙克2022年10月20日 /美通社/ -- IBM(NYSE: IBM)發(fā)布 2022 年第三季度業(yè)績(jī)報(bào)告。 IBM 董事長(zhǎng)兼首席執(zhí)行官 Arvind Kri...

關(guān)鍵字: IBM 軟件 BSP 云平臺(tái)

成都2022年10月19日 /美通社/ -- 近期,平安養(yǎng)老險(xiǎn)積極籌備個(gè)人養(yǎng)老金的產(chǎn)品設(shè)計(jì)和系統(tǒng)開發(fā)工作,發(fā)展多樣化的養(yǎng)老金融產(chǎn)品,推動(dòng)商業(yè)養(yǎng)老保險(xiǎn)、個(gè)人養(yǎng)老金、專屬商業(yè)養(yǎng)老保險(xiǎn)等產(chǎn)品供給。 搭養(yǎng)老政策東風(fēng) ...

關(guān)鍵字: 溫度 BSP 東風(fēng) 大眾

廣東佛山2022年10月19日 /美通社/ -- 空間是人居生活的基礎(chǔ)單元,承載著生存與活動(dòng)的最基本功能。而對(duì)于理想空間的解構(gòu)意義卻在物理性容器之外,體現(xiàn)出人們對(duì)于空間和生活深層關(guān)系的思考,同時(shí)也塑造著人與空間的新型連接...

關(guān)鍵字: 溫度 BSP 智能化 進(jìn)程

上海2022年10月19日 /美通社/ -- 10月17日晚間,安集科技披露業(yè)績(jī)預(yù)告。今年前三季度,公司預(yù)計(jì)實(shí)現(xiàn)營(yíng)業(yè)收入7.54億元至8.33億元,同比增長(zhǎng)60.24%至77.03%;歸母凈利潤(rùn)預(yù)計(jì)為1.73億...

關(guān)鍵字: 電子 安集科技 BSP EPS

北京2022年10月19日 /美通社/ -- 10月18日,北京市經(jīng)濟(jì)和信息化局發(fā)布2022年度第一批北京市市級(jí)企業(yè)技術(shù)中心創(chuàng)建名單的通知,諾誠(chéng)健華正式獲得"北京市企業(yè)技術(shù)中心"認(rèn)定。 北京市企業(yè)技...

關(guān)鍵字: BSP ARMA COM 代碼

北京2022年10月18日 /美通社/ -- 10月14日,國(guó)際數(shù)據(jù)公司(IDC)發(fā)布《2022Q2中國(guó)軟件定義存儲(chǔ)及超融合市場(chǎng)研究報(bào)告》,報(bào)告顯示:2022年上半年浪潮超融合銷售額同比增長(zhǎng)59.4%,近5倍于...

關(guān)鍵字: IDC BSP 數(shù)字化 數(shù)據(jù)中心

上海2022年10月18日 /美通社/ -- 2022年9月5日,是首都銀行集團(tuán)成立60周年的紀(jì)念日。趁著首都銀行集團(tuán)成立60周年與首都銀行(中國(guó))在華深耕經(jīng)營(yíng)12年的“大日子”,圍繞作為外資金融機(jī)構(gòu)對(duì)在華戰(zhàn)略的構(gòu)想和業(yè)...

關(guān)鍵字: 數(shù)字化 BSP 供應(yīng)鏈 控制

東京2022年10月18日  /美通社/ -- NIPPON EXPRESS HOLDINGS株式會(huì)社(NIPPON EXPRESS HOLDINGS, INC.)旗下集團(tuán)公司上海通運(yùn)國(guó)際物流有限公司(Nipp...

關(guān)鍵字: 溫控 精密儀器 半導(dǎo)體制造 BSP

廣州2022年10月18日 /美通社/ -- 10月15日,第 132 屆中國(guó)進(jìn)出口商品交易會(huì)("廣交會(huì)")于"云端"開幕。本屆廣交會(huì)上高新技術(shù)企業(yè)云集,展出的智能產(chǎn)品超過140,...

關(guān)鍵字: 中國(guó)智造 BSP 手機(jī) CAN

Lua RTOS 是一個(gè)實(shí)時(shí)操作系統(tǒng),設(shè)計(jì)在嵌入式系統(tǒng)上運(yùn)行,對(duì) FLASH 和 RAM 內(nèi)存的要求最低。目前 Lua RTOS 可用于 ESP32, ESP8266 和 PIC32MZ 平臺(tái),并可以輕松移植到其他32位...

關(guān)鍵字: Lua RTOS 操作系統(tǒng) 嵌入式系統(tǒng)

嵌入式教程

6897 篇文章

關(guān)注

發(fā)布文章

編輯精選

技術(shù)子站

關(guān)閉