




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、湖北大學(xué)本科畢業(yè)論文(設(shè)計(jì))湖湖 北北 大大 學(xué)學(xué)本本 科科 畢畢 業(yè)業(yè) 論論 文文 (設(shè)(設(shè) 計(jì))計(jì))題題 目目 稅控機(jī)軟件測試稅控機(jī)軟件測試 基于基于 44b044b0 的的 nandflashnandflash 底層驅(qū)動(dòng)程序設(shè)計(jì)底層驅(qū)動(dòng)程序設(shè)計(jì) 姓姓 名名 解添津解添津 學(xué)學(xué) 號(hào)號(hào) 20062211052200172006221105220017 專業(yè)年級(jí)專業(yè)年級(jí) 0606 級(jí)電子科學(xué)與技術(shù)級(jí)電子科學(xué)與技術(shù) 指導(dǎo)教師指導(dǎo)教師 陳陳 勇勇 職職 稱稱 講講 師師 20102010 年年 0505 月月 0808 日日湖北大學(xué)本科畢業(yè)論文(設(shè)計(jì))i目錄1 1 緒論緒論 .- - 1 1 -
2、-1.1 課題研究的背景和國內(nèi)外現(xiàn)狀 .- 1 -1.2 課題研究的意義 .- 2 -1.3 課題研究的內(nèi)容 .- 2 -2 2 nandflashnandflash 操作論證操作論證 .- - 2 2 - -2.1 nandflash的結(jié)構(gòu)及器件特性分析.- 2 -2.2 nand flash的尋址.- 3 -2.3 nandflash引腳功能及指令集.- 4 -3 3 nandflashnandflash 底層程序的設(shè)計(jì)及實(shí)現(xiàn)底層程序的設(shè)計(jì)及實(shí)現(xiàn) .- - 5 5 - -3.1 k9f5608u0d 與 s3c44b0x 的接口設(shè)計(jì) .- 5 -3.2 nandflash底層程序的實(shí)現(xiàn)與設(shè)
3、計(jì).- 7 -3.3 nandflash底層程序設(shè)計(jì).- 17 -4 4 試驗(yàn)驗(yàn)證與開發(fā)板的使用試驗(yàn)驗(yàn)證與開發(fā)板的使用 .- - 2020 - -4.1 通過 j-tag 下載 u-boot .- 20 -4.2 超級(jí)終端的設(shè)置.- 21 -4.3 使用 u-boot 運(yùn)行 nandflash底層驅(qū)動(dòng) .- 24 -4.4 nandflash操作論證.- 26 -5 5 結(jié)論和展望結(jié)論和展望 .- - 2929 - -5.1 結(jié)論 .- 29 -5.2 展望 .- 30 -參考文獻(xiàn)參考文獻(xiàn) .- - 3131 - -湖北大學(xué)本科畢業(yè)論文(設(shè)計(jì))ii稅控機(jī)軟件測試稅控機(jī)軟件測試基于基于 44b0
4、 的的 nandflash 底層驅(qū)動(dòng)程序設(shè)計(jì)底層驅(qū)動(dòng)程序設(shè)計(jì)摘要摘要三星公司推出的 16/32 位 risc 處理器 s3c44b0x 為手持設(shè)備和一般類型應(yīng)用提供了高性價(jià)比和高性能的微控制解決方案。為了降低成本,s3c44b0x 提供了豐富的內(nèi)置部件。但是唯一的不足,就是沒有 nandflash 的專用控制器。而 nandflash 由于其低成本以及大容量,已經(jīng)廣泛的應(yīng)用到 u 盤,sd 卡,固態(tài)硬盤中去。而在 s3c44box 的設(shè)計(jì)中,一味的使用 nor flash,對(duì)于大數(shù)據(jù)的存儲(chǔ)是相當(dāng)不利的。文章通過對(duì) nandflash 的時(shí)序模擬,通過 norflash 中的底層程序引導(dǎo) nan
5、dflash 的操作,使 s3c44b0x 也能與 nandflash 連接,從而可以實(shí)現(xiàn)存儲(chǔ),讀取內(nèi)部的數(shù)據(jù)??梢酝ㄟ^開發(fā)板上實(shí)現(xiàn)讀取 nandflash 的 id 數(shù)據(jù)、讀取 nandflash 中數(shù)據(jù)內(nèi)容、擦除塊中的數(shù)據(jù)、在空的空間寫入指定的數(shù)據(jù),通過串口在windows 中的超級(jí)終端顯示讀出的數(shù)據(jù),以及寫后再讀出操作的數(shù)據(jù),以證實(shí)確認(rèn)對(duì)nandflash 進(jìn)行了讀、寫、擦除等操作的執(zhí)行。文章最后對(duì)所做的工作和取得的結(jié)論進(jìn)行了總結(jié)?!娟P(guān)鍵詞】nandflash arm7 s3c44b0x 塊 頁 字節(jié)湖北大學(xué)本科畢業(yè)論文(設(shè)計(jì))iiisoftware testing of fiscal
6、cash registerdrive program design according to the nandflash first floor with of 44b0abstractthree star companies release of 16/32 risc processor s3c44b0x for held equipments and general type application to provide gao xing4 jia4 ratio and high performance of tiny control solution.for decline low co
7、st, the s3c44b0xs provided abundantly inside place a parts, such as:8 kb cache, internal sram, lcd controller.but the only shortage be the appropriation controller which has no nandflash.but nandflash because it low cost and big capacity, have already extensively applied to u dish, sd card, go to in
8、 the solid hard drive.but persistently use nor flash in the s3c44boxs design, for big data of saving is very disadvantageous.the article passes to imitate the nandflash cycle time, pass the operation of the leading nandflash of the first floor procedure in the norflash and make the s3c44b0xs can als
9、o link with nandflash, keep both keep and read internal data.combine in developping plank realization, and pass a string of data that reads in the super terminal manifestation in the windows, and write after read again the data for operate really carried on to read to the nandflash by confirm, write
10、 and wipe etc. operation of performance.article end to the work do with obtain of the conclusion carried on summary.【key words】 nandflash arm7 s3c44b0x block page byte湖北大學(xué)本科畢業(yè)論文(設(shè)計(jì))- 1 -1 緒論1.1 課題研究的背景和國內(nèi)外現(xiàn)狀1.11 arm 簡介arm 即advanced risc machines的縮寫,既可以認(rèn)為是一個(gè)公司的名字,也可以認(rèn)為是對(duì)一類微處理器的通稱,還可以認(rèn)為是一種技術(shù)的名字。1991 年
11、 arm 公司成立于英國劍橋,主要出售芯片設(shè)計(jì)技術(shù)的授權(quán)。目前,采用 arm技術(shù)知識(shí)產(chǎn)權(quán)( ip )核的微處理器,即我們通常所說的 arm 微處理器,已遍及工業(yè)控制、消費(fèi)類電子產(chǎn)品、通信系統(tǒng)、網(wǎng)絡(luò)系統(tǒng)、無線系統(tǒng)等各類產(chǎn)品市場,基于 arm 技術(shù)的微處理器應(yīng)用約占據(jù)了 32 位 risc 微處理器 75 以上的市場份額, arm 技術(shù)正在逐步滲入到我們生活的各個(gè)方面。arm 公司是專門從事基于 risc 技術(shù)芯片設(shè)計(jì)開發(fā)的公司,作為知識(shí)產(chǎn)權(quán)供應(yīng)商,本身不直接從事芯片生產(chǎn),靠轉(zhuǎn)讓設(shè)計(jì)許可由合作公司生產(chǎn)各具特色的芯片,世界各大半導(dǎo)體生產(chǎn)商從arm公司購買其設(shè)計(jì)的 arm 微處理器核,根據(jù)各自不同的應(yīng)
12、用領(lǐng)域,加入適當(dāng)?shù)耐鈬娐罚瑥亩纬勺约旱?arm 微處理器芯片進(jìn)入市場。目前,全世界有幾十家大的半導(dǎo)體公司都使用 arm 公司的授權(quán),因此既使得 arm 技術(shù)獲得更多的第三方工具、制造、軟件的支持,又使整個(gè)系統(tǒng)成本降低,使產(chǎn)品更容易進(jìn)入市場被消費(fèi)者所接受,更具有競爭力。 arm處理器的三大特點(diǎn)是:耗電少功能強(qiáng)、16位/32位雙指令集和眾多合作伙伴。當(dāng)前有5個(gè)產(chǎn)品系列arm7、arm9、arm9e、arm10和securcore。而民用中最常用的就是arm7和arm9。其中,arm7系列,優(yōu)化用于對(duì)價(jià)位和功耗敏感的消費(fèi)應(yīng)用的低功耗32位核,有: 嵌入式ice-rt邏輯; 非常低的功耗; 三段流
13、水線和馮諾依曼結(jié)構(gòu),提供0.9mips/mhz。1.12 三星公司s3c44b0x簡介s3c44b0x采用了arm7tdmi內(nèi)核,0.25um工藝的cmos標(biāo)準(zhǔn)宏單元和存儲(chǔ)編譯器。它的低功耗精簡和出色的全靜態(tài)設(shè)計(jì)特別適用于對(duì)成本和功耗敏感的應(yīng)用。同樣s3c44b0x還采用了一種新的總結(jié)結(jié)構(gòu),即sambaii(三星arm cpu嵌入式微處理器總線結(jié)構(gòu))。 s3c44b0x的杰出特性是它的cpu核,是由arm公司設(shè)計(jì)的16/32位arm7tdmi risc處理器(66mhz)。arm7tdmi體系結(jié)構(gòu)的特點(diǎn)是它集成了thumb代碼壓縮器,片上的ice斷點(diǎn)高度支持,和一個(gè)32位的硬件乘法器。10s3
14、c44b0x通過提供全面的、通用的片上外設(shè),大大減少了系統(tǒng)電路中除處理器以外的元器件配置,從而最小化系統(tǒng)的成本。 1.131.13 nandflashnandflash簡介簡介nor 和nand 是現(xiàn)在市場上兩種主要的非易失閃存技術(shù)。intel 于1988 年首先開發(fā)出nor flash 技術(shù),徹底改變了原先由eprom 和eeprom 一統(tǒng)天下的局面。緊接著,1989 年,東芝公司發(fā)表了nand flash 結(jié)構(gòu),強(qiáng)調(diào)降低每比特的成本,更高的性能,并且象磁盤一樣可以通過接口輕松升級(jí)。相“flash 存儲(chǔ)器”經(jīng)??梢耘c相“nor 存儲(chǔ)器”互換使用。但是經(jīng)過了十多年之后,仍然有相當(dāng)多的硬件工程師
15、也搞不清楚nand 閃存技術(shù)相對(duì)于nor 技術(shù)的優(yōu)越之處,因?yàn)榇蠖鄶?shù)情況下閃存只是用來存儲(chǔ)少量的代碼,這時(shí)nor 閃存更適合一些。而nand 則是高數(shù)據(jù)存儲(chǔ)密度的理想解決方案。nandflah是一種快閃記憶體,以儲(chǔ)存數(shù)據(jù)為主,又稱為data flash,晶片容量大,目前主流容量已達(dá)2gb。現(xiàn)在市面上的常見的優(yōu)盤、mp3和mp4等數(shù)碼設(shè)備的存儲(chǔ)系統(tǒng)都是采用nandflash存儲(chǔ)芯片來實(shí)現(xiàn)的。nandflash價(jià)格便宜量又足,性價(jià)比很高,并且十分輕便,抗震性也很不錯(cuò),很適合用來做數(shù)碼產(chǎn)品。生產(chǎn)nandflash芯片的廠商主要有samsung、hynix、micron、stmicroelectron
16、ics 、toshiba等?,F(xiàn)在單片的nandflash芯片的湖北大學(xué)本科畢業(yè)論文(設(shè)計(jì))- 2 -存儲(chǔ)容量已經(jīng)可以做到4gb。很難想像,在一個(gè)大小只有12*20*1.2mm的芯片里可以做到如此的容量。想想以后如果現(xiàn)在計(jì)算機(jī)的主要存儲(chǔ)設(shè)備硬盤被nandflash芯片代替,那計(jì)算機(jī)將是另一番景象,更輕便,更穩(wěn)定。很多廠商都在打這方面的主意,包括intel、samsung。nor 的特點(diǎn)是芯片內(nèi)執(zhí)行(xip, execute in place),這樣應(yīng)用程序可以直接在flash 閃存內(nèi)運(yùn)行,不必再把代碼讀到系統(tǒng)ram 中。nor 的傳輸效率很高,在14mb 的小容量時(shí)具有很高的成本效益,但是很低的
17、寫入和擦除速度大大影響了它的性能。nand 結(jié)構(gòu)能提供極高的單元密度,可以達(dá)到高存儲(chǔ)密度,并且寫入和擦除的速度也很快。應(yīng)用nand的困難在于flash 的管理和需要特殊的系統(tǒng)接口。1.2 課題研究的意義由于nandflash的困難在于flash 的管理和需要特殊的系統(tǒng)接口。而s3c44b0x采用的是arm7tdmi的內(nèi)核,并沒有像arm9一樣提供了專用的nandflash的硬件接口,nandflash并不能像nor flash、sdram與專用接口相連后直接使用。如果有像arm9一樣專用接口,就可以通過硬件的方式來控制nandflash的時(shí)序,而采用arm7的s3c44b0x中只使用nor f
18、lash就不能滿足對(duì)大數(shù)據(jù)量的存儲(chǔ)要求,想要實(shí)現(xiàn)nandflash在44b0上的存儲(chǔ)功能,只能通過軟件控制i/o口的方式,解決nandflash的時(shí)序問題。所以在44b0上想要完成對(duì)nandflash的操作,必須通過通用i/o口,用底層驅(qū)動(dòng)的方法,對(duì)其進(jìn)行時(shí)序的操作,以實(shí)現(xiàn)nandflash在arm7上的功能實(shí)現(xiàn),包括功能有:讀取,擦除,寫入,壞塊的判斷和處理以及數(shù)據(jù)的校驗(yàn)。由于單從nandflash中讀出的數(shù)據(jù),是無任何意義的,而這些數(shù)據(jù)只有在上層軟件的組織下,才能獲取相應(yīng)的信息,如word程序可以將nandflash上的word數(shù)據(jù)連接起來后,可以在電腦中顯示出來。而這些都是上層軟件中的復(fù)
19、雜操作,本文不做介紹,而本文將通過從硬件上的連接,到軟件上的支持,一步步來實(shí)現(xiàn)nandflash的操作,并通過串口與windows中的超級(jí)終端通信,驗(yàn)證底層驅(qū)動(dòng)對(duì)nandflash的操作的存在性,以及正確性。1.3 課題研究的內(nèi)容三星公司推出的 16/32 位 risc 處理器 s3c44b0x 為手持設(shè)備和一般類型應(yīng)用提供了高性價(jià)比和高性能的微控制解決方案。為了降低成本,s3c44b0x 提供了豐富的內(nèi)置部件。但是唯一的不足,就是沒有 nandflash 的專用控制器。而 nandflash 由于其低成本以及大容量,已經(jīng)廣泛的應(yīng)用到 u 盤,sd 卡,固態(tài)硬盤中去。而在 s3c44box 的
20、設(shè)計(jì)中,一味的使用 nor flash,對(duì)于大數(shù)據(jù)的存儲(chǔ)是相當(dāng)不利的。文章通過對(duì) nandflash 的時(shí)序模擬,通過 norflash 中的底層程序引導(dǎo) nandflash 的操作,使 s3c44b0x 也能與 nandflash 連接,從而可以實(shí)現(xiàn)存儲(chǔ),讀取內(nèi)部的數(shù)據(jù)??梢酝ㄟ^開發(fā)板上實(shí)現(xiàn)讀取 nandflash 的 id 數(shù)據(jù)、讀取 nandflash 中數(shù)據(jù)內(nèi)容、擦除塊中的數(shù)據(jù)、在空的空間寫入指定的數(shù)據(jù),通過串口在windows 中的超級(jí)終端顯示讀出的數(shù)據(jù),以及寫后再讀出操作的數(shù)據(jù),以證實(shí)確認(rèn)對(duì)nandflash 進(jìn)行了讀、寫、擦除等操作的執(zhí)行。文章最后對(duì)所做的工作和取得的結(jié)論進(jìn)行了總
21、結(jié)。2 nandflash 操作論證在正原電氣股份有限公司的產(chǎn)品稅控機(jī)上,使用的nandflash為三星公司的k9f5608u0d,所以為了取材的方便,我在畢業(yè)設(shè)計(jì)中使用的就是32m的nandflash:k9f5608u0d。2.1 nandflash 的結(jié)構(gòu)及器件特性分析正如硬盤的盤片被分為磁道,每個(gè)磁道又分為若干扇區(qū),一塊nandflash也分為若干塊(block),每個(gè)塊分為若干頁(page)。一般而言,塊、頁之間的關(guān)系隨著芯片的不同而不同,而k9f5608u0d的分配則如圖2-1:湖北大學(xué)本科畢業(yè)論文(設(shè)計(jì))- 3 -圖2-1 k9f5608u0d結(jié)構(gòu)圖我們討論的k9f1208u0b總
22、共有2048 個(gè)blocks,故我們可以知道這塊flash的容量為2048 *(32 *528)= 34603008 bytes = 33 mb。但事實(shí)上每個(gè)page上的最后16bytes是用于存貯檢驗(yàn)碼和其他信息用的,并不能存放實(shí)際的數(shù)據(jù),所以實(shí)際上我們可以操作的芯片容量為2048 *(32 *512) = 33554432 bytes = 32 mb由 上圖所示,1個(gè)page總共由528 bytes組成,這528個(gè)字節(jié)按順序由上而下以列為單位進(jìn)行排列(1列代表一個(gè)byte。第0行為第0 byte ,第1行為第1 byte,以此類推,每個(gè)行又由8個(gè)位組成,每個(gè)位表示1個(gè)byte里面的1bit
23、)。這528bytes按功能分為兩大部分,分別是數(shù)據(jù)存儲(chǔ)區(qū)域(data field)和擴(kuò)展存儲(chǔ)區(qū)域(spare field),其中spare field占528bytes里的16bytes,這16bytes在讀寫操作的時(shí)候存放校驗(yàn)碼用的,一般不用做普通數(shù)據(jù)的存儲(chǔ)區(qū),除去這 16bytes,剩下的512bytes便是我們用于存放數(shù)據(jù)用的data field,所以一個(gè)page上雖然有528個(gè)bytes,但我們只按512bytes進(jìn)行容量的計(jì)算。2.2 nand flash 的尋址由于 nand flash 的巧妙設(shè)計(jì),把數(shù)據(jù)線和地址線復(fù)用,而數(shù)據(jù)線只有 8 位,所以地址寄存器把一個(gè)完整的 nand
24、flash 地址分解成 column address 與 page address.進(jìn)行尋址。并且對(duì) nandflash 尋址進(jìn)行 3 個(gè)周期的輸入后,巧妙的解決了 8 位數(shù)據(jù)線尋址地址短的特點(diǎn)。這樣的設(shè)計(jì),也成了 nandflash 的一個(gè)優(yōu)勢所以,因?yàn)椴煌笮〉牡?sdram,norflash 在連接時(shí),由于容量的不同,造成了地址線位數(shù)的不同,所以在連接時(shí),要按具體情況連接。而 nandflash 由于數(shù)據(jù)線和地址線復(fù)用,解決了硬件上的連接問題,只要在操作程序上做相應(yīng)的修改就行了。 column address: 列地址。column address 其實(shí)就是指定 page 上的某個(gè) by
25、te,指定這個(gè) byte 其實(shí)也就是指定此頁的讀寫起始地址。page address:頁地址。由于頁地址總是以 512bytes 對(duì)齊的,所以它的低 9 位總是 0。確定讀寫操作是在flash 上的哪個(gè)頁進(jìn)行的。列地址和頁地址的尋址方法,具體如下表 2-1:表 2-1 nandflash 尋址周期表i/o 0i/o 1i/o 2i/o 3i/o 4i/o 5i/o 6i/o 71 周期a0a1a2a3a4a5a6a72 周期a9a10a11a12a13a14a15a163 周期a17a18a19a20a21a22a23a24上表中,第 1 周期為列地址,第 2,3 周期為頁地址??赡芗?xì)心的發(fā)現(xiàn)
26、 3 個(gè)周期每周期 8 位,應(yīng)該是 24 位,可是從 a0a24,應(yīng)該有 25 位,a8 去哪里了?在前面我們討論的nandflash 的結(jié)構(gòu)中,每一頁有數(shù)據(jù)存儲(chǔ)區(qū)和擴(kuò)展存儲(chǔ)區(qū)組成,而這兩個(gè)部分512byte+16byte 應(yīng)該是 528byte 的存儲(chǔ)空間,而對(duì)于 528 字節(jié)的存儲(chǔ)空間,至少應(yīng)該要 10湖北大學(xué)本科畢業(yè)論文(設(shè)計(jì))- 4 -位的地址線,才能尋址。但是從上表來說,我們只有第 1 周期的 8 位地址線,如果才能完成 10 位地址線的工作呢?其實(shí) a8 位的作用在這里體現(xiàn)了。我們先不考慮擴(kuò)展區(qū)的 16byte 的存儲(chǔ)空間,單考慮數(shù)據(jù)存儲(chǔ)區(qū)的 512byte 的空間,512byte
27、 只需要 9 位的地址線就能完成對(duì)它的尋址。其實(shí)這第 9 位就是 a8 位。nandflash 在設(shè)計(jì)中,已經(jīng)將一頁中的數(shù)據(jù)存儲(chǔ)區(qū)分成了前半頁區(qū)和后半頁區(qū)(前半頁區(qū)和后半頁區(qū)并沒有明確的定義,這里我先這樣定義)。在后面的 nanflash 指令中,當(dāng)read 命令為 00h 時(shí),其實(shí)已經(jīng)將操作首地址定義到了半頁區(qū)的首個(gè)地址,這時(shí) a8 就為0。而當(dāng) read 命令為 01h 時(shí),操作首地址已經(jīng)定義到了后半頁的首個(gè)地址,這時(shí) a8 就為1。只是 a8 不能通過 i/o 口直接改變值,而會(huì)間接的隨命令改變。而當(dāng) read 命令為 50h時(shí),則將操作首地址定義到了擴(kuò)展存儲(chǔ)區(qū)的首地址。2.3 nand
28、flash 引腳功能及指令集2.3.1 nandflash 引腳功能nandflash 由于其良好的設(shè)計(jì),雖然引腳數(shù)有 48 個(gè),但實(shí)際有用引腳數(shù)只有 19 個(gè),而其它的未使用的引腳,在日后的 nandflash 升級(jí)中,可能會(huì)定義上新的功能。k9f5608u0d 的引腳分布如圖 2-2 所示:圖 2-2 k9f5608u0d 引腳分布圖i/o0i/o7:data inputs/outputs。數(shù)據(jù)輸入/輸出口,i/o 口是用來輸入指令、地址和數(shù)據(jù)、并在讀周期時(shí)輸出數(shù)據(jù)的。當(dāng)芯片未被選中或輸出禁能時(shí),i/o 口呈高阻態(tài)。cle:command latch enable。命令鎖存使能,cle 腳
29、上的輸入電平用來控制打開/關(guān)閉指令送入指令寄存器的通路。當(dāng) cle 為高時(shí),i/o 口在 we 信號(hào)的上升沿將指令鎖入指令寄存器。 ale:address latch enable。地址鎖存使能,ale 腳上的輸入電平用來控制打開/關(guān)閉地址送入地址寄存器的通路。當(dāng) ale 為高時(shí),i/o 口在 we 信號(hào)的上升沿將地址鎖入地址寄存器。ce:chip enable。芯片使能,低電平使能的片選控制線。當(dāng)芯片處于忙狀態(tài)時(shí),ce 信號(hào)即使變高,也將被忽略。re:read enable。讀使能,re 為串行數(shù)據(jù)輸出控制線。當(dāng)它為低電平時(shí),內(nèi)部數(shù)據(jù)將輸出到 i/o 端口,輸出數(shù)據(jù)在 re 的下降沿后一定時(shí)
30、間內(nèi)有效,同時(shí),內(nèi)部列地址計(jì)數(shù)器將加 1。we:write enable。寫使能,we 對(duì) i/o 端口的寫入進(jìn)行控制。指令、地址和數(shù)湖北大學(xué)本科畢業(yè)論文(設(shè)計(jì))- 5 -據(jù)都會(huì)在 we 的上升沿被鎖存。r/b:ready/busy output。讀/忙輸出,r/b 引腳的輸出說明了器件目前的操作狀態(tài),當(dāng)它為低電平時(shí),表明某個(gè)寫入、探險(xiǎn)或任意讀操作正在進(jìn)行,當(dāng)這個(gè)操作完成,r/b 才會(huì)重新回到高電平狀態(tài)。它是一個(gè)開漏輸出,而且在芯片未選中或輸出未全能時(shí),不會(huì)進(jìn)入高阻態(tài)。wp:write protect。寫保護(hù),wp 引腳提供在電源波動(dòng)情況下,對(duì)器件不可預(yù)料地寫入或探險(xiǎn)的保護(hù)。當(dāng) wp 腳為低電
31、平時(shí),內(nèi)部高電壓發(fā)生器被復(fù)位。vcc:output buffer power。緩沖器輸出電源,vcc 是器件的供電電源。vss:ground。地。nc:no connection??漳_。dnu:do not use。未使用。2.3.2 nandflash 指令集由 k9f5608u0d 的 cle 和 ale 信號(hào)線實(shí)現(xiàn) i/o 口上指令和地址的利用。指令、地址和數(shù)據(jù)都通過拉低 we 和 ce 從 i/o 口寫入器件中。有一些指令只需要一個(gè)總線周期完成。例如,復(fù)位指令,和狀態(tài)讀指令等;另外一些指令,例如頁寫入和塊擦除,則需要 2 個(gè)周期,其中一個(gè)周期用來啟動(dòng),而另一個(gè)周期用來執(zhí)行。表 2-2
32、顯示了 nandflash k9fk5608u0d 具備的指令。表 2-2 k9f5608u0d 具備的指令和功能功能第一周期第二周期器件忙時(shí)可接受的命令(用“0”表示)讀方式 100h/01h-讀方式 250h-讀 id 號(hào)90h-復(fù)位ffh-0頁寫入80h10h回拷貝00h8ah塊擦除60hd0h讀當(dāng)前狀態(tài)70h-0在 nandflash 中,讀和寫操作都是以頁為單位進(jìn)行的操作,擦除是基于塊進(jìn)行的操作的。對(duì)以上 nandflash 的各引腳定義功能,以及 nandflash 具備的指令,就可以在s3c44b0x 上實(shí)現(xiàn)對(duì) nandflash 對(duì)各種操作功能。3 nandflash 底層程序
33、的設(shè)計(jì)及實(shí)現(xiàn)3.1 k9f5608u0d 與 s3c44b0x 的接口設(shè)計(jì)3.1.1 s3c44b0x 中的 bank 映射s3c44b0x 可以對(duì) 8 個(gè) bank 進(jìn)行尋址,每個(gè) bank 的空間為 32mb。由于整個(gè)目標(biāo)平臺(tái)都是以處理器為核心的,為了使處理器對(duì)各個(gè)設(shè)備的訪問互不干擾,就將不同類型的設(shè)備映射到不同的 bank 內(nèi)。s3c44b0x 的 bank 空間分配如圖 3-1 所示。bank 7未用未用bank 68mb/16mb sdrambank 5未用bank 4ethernetbank 3usb湖北大學(xué)本科畢業(yè)論文(設(shè)計(jì))- 6 -bank 2idebank 1nandfla
34、shcpu 寄存器未用bank 0flash rom圖 3-1 s3c44b0 對(duì)尋址空間的安排圖 3-1 是 s3c44b0x 對(duì)程序空間和數(shù)據(jù)空間的分配。在程序空間 flash rom 內(nèi)(即nor flash),已經(jīng)固體了一段啟動(dòng)系統(tǒng)及系統(tǒng)進(jìn)行初始化的程序 bios(即 bootloader:u-boot)。在圖中可以看到,flash rom 映射在了系統(tǒng)的 bank0 上,也就是說,系統(tǒng)在上電時(shí)處理器即從 flash rom 的 0 x00000000 地址處取得指令開始運(yùn)行。bios 程序完成了設(shè)置初始化、中斷矢量初始化、存儲(chǔ)器的參數(shù)設(shè)置、堆棧地址定義等工作,這些設(shè)置對(duì)于系統(tǒng)的正常啟
35、動(dòng)具有重要意義。3.1.2 nandflash 與 44b0 的連接方法k9f5608u0d 映射到 bank1 區(qū)域內(nèi),與 s3c44b0x 的接口電路如圖 3-2 所示:圖 3-2 k9f5608u0d 與 s3c44b0x 的接口電路其中,nandwe 和 nandre 信號(hào)通過圖 3-3 的電路產(chǎn)生。 湖北大學(xué)本科畢業(yè)論文(設(shè)計(jì))- 7 -圖 3-3 控制信號(hào)產(chǎn)生電路這種方法,是一塊 nandflash 與系統(tǒng)相連接的標(biāo)準(zhǔn)接法,而要實(shí)現(xiàn)兩塊 nandflash 的相互拷貝,則會(huì)出現(xiàn)錯(cuò)誤,而并不能用這種連接方法。另外,在控制信號(hào)產(chǎn)生電路中,noe與 s3c44b0x 的 oe 相連接,n
36、we 與 we 連接。而 ngcs1 的連接,則表明 nandflash 的數(shù)據(jù)是映射到了 44b0 的 bank1 中,即以后對(duì) bank1 操作,則對(duì) nandflash 的 8 位數(shù)據(jù)線操作了。由于采用了 gpg0gpg3 作為 k9f5608u0d 的信號(hào)控制線,因此必須在 i/o 口初始化中將這些口設(shè)定為輸入或輸出口線。其中 gpg0 為輸入,gpg1gpg3 為輸出,關(guān)于 i/o口應(yīng)用的相關(guān)內(nèi)容,如s3c44b0x datasheet中的 i/o 設(shè)置表,如表 3-1 所示:表 3-1 端口 g 功能表將上述引腳與開發(fā)板的擴(kuò)展口連接后,用萬用表連接相鄰兩腳,看是否出現(xiàn)短路的情況,這
37、種情況應(yīng)該馬上排除,還有一點(diǎn)要注意的是,nandflash8 位數(shù)據(jù)線與 44b0 的低 8位數(shù)據(jù)線之間的 8 根連接線,要盡可能的做到長短相等,這樣可以減少在高速讀寫過程中,可能造成 8 根數(shù)據(jù)線之間延時(shí)的機(jī)率,使 nandflash 工作的更加穩(wěn)定,保證數(shù)據(jù)傳輸?shù)目煽啃?。根?jù)圖 3-2 和圖 3-3,連接好以后,就可以進(jìn)入編程調(diào)試環(huán)節(jié)了。3.2 nandflash 底層程序的實(shí)現(xiàn)與設(shè)計(jì)3.2.1 頁讀操作的設(shè)計(jì)在初始上電時(shí),器件進(jìn)入缺少的“讀方式 1 模式”。在這一模式下,頁讀操作通過將00h 指令定稿指令寄存器,接著寫入 3 個(gè)周期的地址(1 個(gè)列地址,2 個(gè)頁地址)來啟動(dòng)。一旦頁讀指令
38、被器件鎖存,下面的頁讀操作就不需要再重復(fù)寫入指令了。如圖 3-4 所示: 圖 3-4 讀前半頁命令缺省圖同樣的,對(duì)于后半頁的操作,只要將指令改為 01h,而對(duì)擴(kuò)展區(qū)只要將指令改為 50h,而在連續(xù)的讀取中,并不用反復(fù)的輸入上述的指令。如圖 3-5,3-6 所示:湖北大學(xué)本科畢業(yè)論文(設(shè)計(jì))- 8 -圖 3-5 讀后半頁命令缺省圖圖 3-6 讀擴(kuò)展區(qū)命令缺省圖寫入指令和地址后,處理器可以通過對(duì)信號(hào)線 r/b 的分析來判斷該操作是否完成。如果信號(hào)為低電平,表示 nandflash 正“忙”;為高電平,說明器件內(nèi)部操作完成,要讀取的數(shù)據(jù)被卷入了數(shù)據(jù)寄存器。外部控制器可以在以 50ns 為周期的連續(xù)
39、re 脈沖信號(hào)的控制下,從 i/o 口依次讀出數(shù)據(jù)。連續(xù)頁讀操作中,輸出的數(shù)據(jù)是從指定的列地址開始,直到該頁的最后一個(gè)列地址的數(shù)據(jù)為止。nandflash 讀操作(讀 1page)如圖 3-7 所示圖 3-7 讀操作時(shí)序圖讀操作流程如圖 3-8 所示:湖北大學(xué)本科畢業(yè)論文(設(shè)計(jì))- 9 -圖 3-8 讀操作流程圖讀操作一開始向 nandflash 命令寄存器寫入 00h,然后向地址寄存器寫入讀取的地址,即將數(shù)據(jù)指針指向所要讀了的內(nèi)容地址。正如硬盤的盤片被分為磁道,每個(gè)磁道又被分為若干扇區(qū),一塊 nand flash 被分為若干 block,每個(gè) block 又被分為若干 page。我們的 k9
40、f5608u0d 是 32m 的,所以有 2048 的block。這里有一點(diǎn)要說明的是當(dāng)讀取時(shí),輸入的命令為 00h 時(shí),那在連續(xù)讀取的接下來的 n個(gè)字節(jié),是從前半頁存儲(chǔ)區(qū)的首地址(即整頁的 0 地址)一直讀到第 527 個(gè)字節(jié)處,即讀完包括數(shù)據(jù)存儲(chǔ)區(qū)和擴(kuò)展存儲(chǔ)區(qū)內(nèi)的完全內(nèi)容,而當(dāng)超過一頁的地址后,它將再一次指向下一頁的前半頁存儲(chǔ)區(qū)的首地址,而這個(gè)讀過程可以無限的進(jìn)行下去,只到你停止讀取數(shù)據(jù)或者到達(dá)了 nandflash 最后的一頁擴(kuò)展區(qū)的最后一個(gè)字節(jié)為止。具體如圖 3-9 所示:圖 3-9 命令 00h 的讀取內(nèi)部循環(huán)當(dāng)輸入 01h 讀取命令時(shí),那在連續(xù)讀取的接下來的 n 個(gè)字節(jié),是從后半頁
41、存儲(chǔ)區(qū)的首地址(即整頁的 256 位地址)開始一直讀到第 527 個(gè)字節(jié)處,即讀完包括數(shù)據(jù)存儲(chǔ)區(qū)和擴(kuò)展存儲(chǔ)區(qū)內(nèi)的完全內(nèi)容,而當(dāng)超過一頁的地址后,它將再一次指向下一頁的后半頁存儲(chǔ)區(qū)的首地址,而這個(gè)讀過程可以無限的進(jìn)行下去,只到你停止讀取數(shù)據(jù)或者到達(dá)了 nandflashstartwrite 00hwrite addressread datapage read completed湖北大學(xué)本科畢業(yè)論文(設(shè)計(jì))- 10 -最后的一頁擴(kuò)展區(qū)的最后一個(gè)字節(jié)為止。具體如圖 3-10 所示:圖 3-10 命令 01h 的讀取內(nèi)部循環(huán)當(dāng)輸入 50h 讀取命令時(shí),在連續(xù)讀取的接下來的 n 個(gè)字節(jié),是從擴(kuò)展存儲(chǔ)區(qū)的
42、首地址(即整頁的 512 位地址)開始一直讀到第 527 個(gè)字節(jié)處,即讀完包括數(shù)據(jù)存儲(chǔ)區(qū)和擴(kuò)展存儲(chǔ)區(qū)內(nèi)的完全內(nèi)容,而當(dāng)超過一頁的地址后,它將再一次指向下一頁的后半頁存儲(chǔ)區(qū)的首地址,而這個(gè)讀過程可以無限的進(jìn)行下去,只到你停止讀取數(shù)據(jù)或者到達(dá)了 nandflash 最后的一頁擴(kuò)展區(qū)的最后一個(gè)字節(jié)為止。具體如圖 3-11 所示: 圖 3-11 命令 50h 的讀取內(nèi)部循環(huán)3.2.2 頁寫入操作的設(shè)計(jì)k9f5608u0d 的寫入操作也以頁為單位。寫入必須在擦除之后,否則寫入將出錯(cuò)。頁寫入的周期總共包括 3 個(gè)步驟:寫入中行數(shù)據(jù)輸入指令(80h) ,然后寫入 3 個(gè)字節(jié)的地址信息,最后串行寫入數(shù)據(jù)。串行
43、寫入的數(shù)據(jù)最多為 528 個(gè)字節(jié),它們首先被寫入 nandflash 內(nèi)的頁寄存器,接著器件進(jìn)入一個(gè)內(nèi)部寫入過程,將數(shù)據(jù)從頁寄存器寫入存儲(chǔ)宏單位。串行數(shù)據(jù)寫入完成后,需要寫入“頁寫入確認(rèn)”指令 10h,這條指令將初始化器件的內(nèi)部寫入操作。如果單獨(dú)寫入 10h 而沒有前面的步驟,則 10h 不會(huì)起作用。10h 寫入后,湖北大學(xué)本科畢業(yè)論文(設(shè)計(jì))- 11 -k9f5608u0d 的內(nèi)部寫控制器將自動(dòng)執(zhí)行內(nèi)部寫入和校驗(yàn)中必要的算法和時(shí)序,這時(shí)系統(tǒng)控制器就可以去完成其他任務(wù)。內(nèi)部寫入操作開始后,nandflash 自動(dòng)進(jìn)入“讀狀態(tài)寄存器”模式。在這一模式下,當(dāng) re和 ce 為 低電平時(shí),系統(tǒng)就可以
44、讀取狀態(tài)寄存器。系統(tǒng)可以通過檢測 r/b 的輸出,或讀狀態(tài)寄存器狀態(tài)位(i/o6)來判斷內(nèi)部定稿是否結(jié)束。在器件進(jìn)行內(nèi)部寫操作時(shí),只有讀狀態(tài)寄存器指令和復(fù)位指令會(huì)被響應(yīng)。當(dāng)頁寫入操作完成,應(yīng)該檢測寫狀態(tài)位(i/o0)的電平。內(nèi)部寫校驗(yàn)只對(duì) 1 沒有成功地寫為 0 的情況進(jìn)行檢測。指令寄存器始終保持著讀狀態(tài)寄存器模式,直到其他有效的指令寫入指令寄存器為止。nandflash 寫操作(寫 1page)如圖 3-12 所示: 圖 3-12 寫操作時(shí)序圖寫操作流程如圖 3-13 所示: startwrite 80hwrite addresswrite datawrite 10hread status
45、registerr/b = 1 ?noi/o 0 = 0 ?yesprogram errorprogram completedyesno湖北大學(xué)本科畢業(yè)論文(設(shè)計(jì))- 12 -圖 3-13 寫操作流程圖寫操作時(shí),首先向命令寄存器輸入 80h 寫指令,然后向地址寄存器輸入 3 周期的地址,寫入指定的數(shù)據(jù)后,再向命令寄存器輸入 10h 以表示確認(rèn)寫操作。根據(jù) r/b 口反饋給44b0 的信號(hào),可以判斷寫操作是否執(zhí)行完畢,通過讀狀態(tài)寄存器可以判斷寫入操作是否成功。這里有一點(diǎn)要補(bǔ)充的是,寫操作只能在一頁中進(jìn)行,即可以開始在一頁的內(nèi)的任意一個(gè)位置,但是結(jié)束的時(shí)候,一定要在這頁地址 527 字節(jié)前的任意一
46、位,不可以寫循環(huán)后,輸入確認(rèn)指令 10h 時(shí),現(xiàn)在的數(shù)據(jù)已經(jīng)進(jìn)入到下一頁中去。另外,寫操作也可以通過00h,01h,50h 加到寫操作開始指令 80h 前,以快速的確定寫入的地址,這樣大大增加了nandflash 使用的靈活性。即 00h 時(shí),從前半頁存儲(chǔ)區(qū)地址開始寫,01h 時(shí),從后半頁存儲(chǔ)區(qū)地址開始寫,50h 從擴(kuò)展頁存儲(chǔ)區(qū)地址開始寫,而具體從各區(qū)域的哪個(gè)地址寫,又需要在不輸入地址 3 周期中的第一周期(即列地址)中設(shè)置,但是不無論從哪個(gè)地址開始寫,都必須在超過這頁的最后一位前輸入確定寫操作地址,即整頁的 527 字節(jié)地址。3.2.3 塊擦除操作的設(shè)計(jì)擦除操作是以塊為單位進(jìn)行的。擦除的啟動(dòng)
47、指令為 60h,塊地址的輸入通過兩個(gè)時(shí)鐘周期完成。這時(shí)只有地址位 a14 到 a24 是有效的,a9 到 a13 則被忽略。因?yàn)槊恳粔K是有32 頁組成的,而 a9 到 a13 正好是 5 位,也就是一個(gè)塊中,頁的地址,而擦除是對(duì)塊操作,所以 a9 到 a13 則被忽略,即 a9 到 a16 的值為 11111000b 到 11111111b,對(duì)于塊操作時(shí),都是一樣的。塊地址載入之后是擦除確認(rèn)指令 d0h,它用來初始化內(nèi)部探險(xiǎn)操作。擦除確認(rèn)命令用來防止外部干擾產(chǎn)生擦除操作的意外情況。nandflash 檢測到擦除確認(rèn)命令輸入后,在 we 的上升沿啟動(dòng)內(nèi)部寫控制器開始執(zhí)行擦除和擦除校驗(yàn)。內(nèi)部擦除操
48、作完成后,應(yīng)該檢測一下寫狀態(tài)位(i/o0) ,從而了解擦除操作是否有錯(cuò)誤發(fā)生。nandflash 塊擦除操作(擦除 1block)如圖 3-14 所示:圖 3-14 塊擦除時(shí)序圖湖北大學(xué)本科畢業(yè)論文(設(shè)計(jì))- 13 -塊擦除流程如圖 3-15 所示:圖 3-15 塊擦除流程圖塊擦除時(shí),首先對(duì)命令寄存器寫入擦除命令 60h,然后向地址寄存器寫入 2 個(gè)周期的塊地址,最后對(duì)命令寄存器寫入擦除確認(rèn)命令 d0h,判斷 r/b 高低電平,以確定下一塊擦除的操作進(jìn)行。對(duì)于擦除命令,一定要注意對(duì)忙信號(hào)的判斷,如果沒有正確的判斷,會(huì)使擦除只擦除一部分,而沒有擦除的部分,在寫入數(shù)據(jù)的時(shí)候,由于 byte 位沒有
49、拉高,而使寫入的數(shù)據(jù)發(fā)生錯(cuò)誤。3.2.4 讀狀態(tài)寄存器的設(shè)計(jì)k9f5608u0d 包含一個(gè)狀態(tài)寄存器,該寄存器反應(yīng)了寫入或擦除操作是否完成,或?qū)懭牒筒脸僮魇欠駸o錯(cuò)。寫入 70h 指令,啟動(dòng)讀狀態(tài)寄存器周期。狀態(tài)寄存器的內(nèi)容將在ce 或 re 的下降沿處送出到 i/o 端口,表 3-2 顯示了狀態(tài)寄存器中每位的定義:表 3-2 狀態(tài)寄存器的位定義i/o n狀 態(tài)定 義“0”:成功寫入/擦除i/o 0寫入/擦除“1”:在寫入/擦除中出錯(cuò)startwrite 60hwrite block addresswrite d0hread status registeri/o 6 = 1 ?nor/b =
50、0 ?yeserase completedyeserase errorno湖北大學(xué)本科畢業(yè)論文(設(shè)計(jì))- 14 -i/o 1“0”i/o 2“0”i/o 3“0”i/o 4“0”i/o 5保留“0”i/o 6器件操作“0”:忙 “1”:準(zhǔn)備好i/o 7寫保護(hù)“0”:保護(hù) “1”:未保護(hù)nandflash 讀狀態(tài)寄存器操作如圖 3-16 所示:圖 3-16:讀狀態(tài)寄存器時(shí)序圖器件一旦接收到狀態(tài)寄存器的指令,它就將保持在狀態(tài)寄存器讀狀態(tài),直到有其它的指令輸入。因此,如果在任意讀操作中采用了狀態(tài)寄存器讀操作,則在連續(xù)頁讀的過程中,必須重發(fā) 00h 或 50h 指令。3.2.5 讀器件 id 的設(shè)計(jì)k
51、9f5608u0d 器件具有一個(gè)產(chǎn)品鑒定識(shí)別碼(id) ,系統(tǒng)控制器可以讀出這個(gè) id,從而起到識(shí)別器件的作用。讀 id 的步驟是:寫入 90h 指令,然后寫入一個(gè)地址 00h。在兩個(gè)讀周期下,廠商代碼和器件代碼將被連續(xù)輸出到 i/o 口。同樣,一旦進(jìn)入這種命令模式后,器件將保持這種命令狀態(tài),趕到接收到其他的指令為止。nandflash 讀取器件識(shí)別碼 id 操作如圖 3-17 所示:湖北大學(xué)本科畢業(yè)論文(設(shè)計(jì))- 15 -圖 3-17:讀識(shí)別碼時(shí)序圖其中制造商代碼為 0 xec 即三星公司的代碼,器件代碼為 0 x75,因此,k9f5608u0d的 id 為 0 xec75。如果在其它容量的
52、三星 nandflash,如容量為 16mb 的 k9f52808r0d 的id 則為 0 xec35。不同型號(hào)的代碼見表 3-3 所示:表 3-3 器件代碼表在實(shí)際的操作中,可以用此代碼在未對(duì) nandflash 中存儲(chǔ)數(shù)據(jù)區(qū)操作的前題下,初步判斷 nandflash 的好壞,或者是否存在焊接上的錯(cuò)誤(如斷路,短路的情況判斷) 。3.2.6 軟件復(fù)位功能設(shè)計(jì)器件提供一個(gè)復(fù)位(reset)指令,通過向指令寄存器寫入 ffh 來完成對(duì)器件的復(fù)位。當(dāng)器件處于任意讀模式、寫入或者擦除模式的忙狀態(tài)時(shí),發(fā)送復(fù)位指令可以使器件中止當(dāng)前的各種操作,正在被修改的存儲(chǔ)器宏單元的內(nèi)容不再有效,指令寄存器被清零并等
53、待下一條指令的到來。當(dāng) wp 為高時(shí),狀態(tài)寄存器被清為 c0h。3.2.7 一些通用的時(shí)序的設(shè)計(jì)由于 nandflash 中,對(duì)每一個(gè)操作,都要先進(jìn)行命令,再進(jìn)行地址輸入,所以我們可以輸入命令和輸入地址寫成相應(yīng)該的子程序,以方便程序的調(diào)用。指令鎖存操作如圖 3-18 所示:湖北大學(xué)本科畢業(yè)論文(設(shè)計(jì))- 16 -圖 3-18 指令鎖存時(shí)序圖地址鎖存操作如圖 3-19 所示:圖 3-19 地址鎖存時(shí)序圖數(shù)據(jù)寫入操作如圖 3-20 所示:圖 3-20 數(shù)據(jù)寫入時(shí)序圖湖北大學(xué)本科畢業(yè)論文(設(shè)計(jì))- 17 -數(shù)據(jù)讀出操作如圖 3-21 所示:圖 3-21 數(shù)據(jù)讀出時(shí)序圖由于操作 k9f5608u0d
54、的時(shí)序需要通過程序來模擬,因此就需要清楚地了解一些信號(hào)之間的時(shí)序關(guān)系,編程時(shí)可以參考上面的時(shí)序圖。3.3 nandflash 底層程序設(shè)計(jì)3.3.1 相關(guān)的操作程序設(shè)計(jì)nandflash 存儲(chǔ)器進(jìn)行何種操作基本上是由 ce,cle,ale,re,we 5 條信號(hào)線的邏輯電平?jīng)Q定的,而由于 re、we 已經(jīng)與 44b0 的 oe、we 相連接,所以在進(jìn)行操作時(shí),44b0 會(huì)自己去對(duì) re、we 操作,即讀一個(gè) byte 時(shí),44b0 的 oe 會(huì)自動(dòng)對(duì) nandflash 的re 完成一次從高電平向低電平的轉(zhuǎn)變的過程。而同樣的,而寫一個(gè) byte 的時(shí)候,44b0的 we 會(huì)自動(dòng)的對(duì) nandf
55、lash 的 we 完成一次從低電平向高電平轉(zhuǎn)變的過程。所以在寫程序的時(shí)候,不必對(duì) we、re 的電平變換,通過軟件的方法模擬。而下面幾個(gè)函數(shù)模擬了根據(jù)寫入指令、地址和讀寫數(shù)據(jù)時(shí)它們的時(shí)序條件,只需要對(duì) ce,cle,ale 這三條信號(hào)線所對(duì)應(yīng)的 gpg1gpg3 進(jìn)行控制即可。接口宏定義:#define nf_ce_h() rpdatg |= mask_bit(1)/定義 ce 高電平#define nf_ce_l() rpdatg &= mask_bit(1)/ 定義 ce 低電平 #define nf_cle_h() rpdatg |= mask_bit(2)#define nf_cle
56、_l() rpdatg &= mask_bit(2) #define nf_ale_h_o() rpdatg |= mask_bit(3)#define nf_ale_l_o() rpdatg &= mask_bit(3)#define nanddata (*(volatile unsigned char *)0 x02000000)0 x02000000 即為 bank1 的首地址,因?yàn)槲覍?nandflash 映射到了 bank1 中,所以以后只要對(duì) nanddata 操作后,即對(duì) nandflash 的 8 位數(shù)據(jù) i/o 口操作了。湖北大學(xué)本科畢業(yè)論文(設(shè)計(jì))- 18 -參考指令鎖存周
57、期時(shí)序圖,當(dāng) ce 和 ale 為低、cle 為高時(shí),將指令從數(shù)據(jù)口寫入k9f5608u0d 的函數(shù)如下:void nf_cmd(u8 cmd)int i; nf_ce_l();/ce 為低 nf_cle_h();/cle 為高 nf_ale_l();/ale 為低 nanddata=cmd;參考地址鎖存周期時(shí)序圖,當(dāng) ale 為高、cle 和 ce 為低時(shí),將地址從數(shù)據(jù)口寫入k9f5608u0d 的函數(shù)如下。void nf_addr ( ) nf_ale_h();/ale 為高電平 nf_cle_l();/cle 為低電平 根據(jù)每次的時(shí)序圖,應(yīng)該在一次開始前,給 nandflash 一個(gè)初始
58、化動(dòng)作,由每操作開始時(shí)序圖可以得到:nf_init(void)nf_ce_h();/ce 為高電平失效nf_cle_l();/cle 為低電平nf_ale_l();/ale 為低電平3.3.2 讀器件 id 碼子程序根據(jù)讀器件 id 碼的時(shí)序圖,可以得到如下代碼:u32 nf_checkid_o(void)u32 id;nf_init();nf_ce_l_o();nf_cmd(0 x90);/read idnf_addr ( );nanddata=0 x0;nf_ale_l();id=nanddata8;nf_cmd(0 xd0); dodatareg=readstatus()&0 x40;w
59、hile(datareg=0);3.3.4 頁寫入子程序:參考頁寫入時(shí)序圖,寫入代碼如下:void wirtepage (u32 rowadd)nf_ init();nf_cmd(0 x80); nf_addr ( );nanddata=0;nanddata=rowadd&0 xff;nanddata=(rowadd&0 xff00)8;nf_ale_l(); /送開始字節(jié)i=0;do nanddata=data i&0 xff; i+; while(i8;wait_rb;for(i=0;i528;i+)dataarrayi=nanddata&0 xff;將各功能程序,組織后,在 main 中
60、應(yīng)用,在超級(jí)終端中,可以進(jìn)有內(nèi)容的 nandflash進(jìn)行操作,先對(duì) nandflash 進(jìn)行讀 id 操作。然后先讀出一個(gè)地址的內(nèi)容,通過超級(jí)終端顯示一頁的內(nèi)容。再將這一頁所在的塊擦除,再將其讀出,看是否已經(jīng)清除了。然后再對(duì)擦除后的 nandflash 再寫入指定的數(shù)據(jù),再將其讀出,看是否和寫入的數(shù)據(jù)是相同的4 試驗(yàn)驗(yàn)證與開發(fā)板的使用4.1 通過 j-tag 下載 u-boot首先將 j-tag 小板上面的短路冒拔插到 wiggler 插針上(板子上面有絲印標(biāo)識(shí)) ,用并口延長線連接 j-tag 小板到開發(fā)板 j-tag 接口電腦并口:安裝好 flashpgm 軟件后,時(shí)行如圖 4-1 配置
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 農(nóng)村住房保障合同范本
- 高職體育教學(xué)中素質(zhì)拓展訓(xùn)練的應(yīng)用
- 北京汽車抵押合同范本
- 2025年江蘇省安全員C證(專職安全員)考試題庫
- 南風(fēng)股合同范本
- 勞動(dòng)合同范本 英語
- 別墅項(xiàng)目出售合同范本
- 共享單車股轉(zhuǎn)讓合同范本
- 個(gè)人車輛拆解合同范本
- 2025山西省建筑安全員知識(shí)題庫附答案
- 植物組織培養(yǎng)(園林植物教研組)-說課稿
- 高三二輪專題復(fù)習(xí)化學(xué)課件-分布系數(shù)(分?jǐn)?shù))圖像
- 支委委員辭去職務(wù)申請書
- 變更更正戶口項(xiàng)目申請表
- 【橋梁工程的發(fā)展趨勢與思考5300字】
- 云南省蒙自市長橋海水庫擴(kuò)建工程環(huán)評(píng)報(bào)告
- 質(zhì)量手冊(依據(jù)ISO9001:2023年標(biāo)準(zhǔn))
- 算24點(diǎn)教學(xué)講解課件
- 提高住院患者痰培養(yǎng)標(biāo)本留取的合格率品管圈ppt匯報(bào)書
- GB/T 35274-2023信息安全技術(shù)大數(shù)據(jù)服務(wù)安全能力要求
- 醫(yī)院關(guān)于成立安全管理委員會(huì)的通知匯編五篇
評(píng)論
0/150
提交評(píng)論