已閱讀5頁(yè),還剩37頁(yè)未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
湖北大學(xué)本科畢業(yè)論文(設(shè)計(jì)) 湖湖 北北 大大 學(xué)學(xué) 本本 科科 畢畢 業(yè)業(yè) 論論 文文 (設(shè)(設(shè) 計(jì))計(jì)) 題題 目目 稅控機(jī)軟件測(cè)試稅控機(jī)軟件測(cè)試 基于基于 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 - - 1.1 課題研究的背景和國(guó)內(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è)計(jì)- 7 - 3.3 nandflash底層程序設(shè)計(jì).- 17 - 4 4 試驗(yàn)驗(yàn)證與開(kāi)發(fā)板的使用試驗(yàn)驗(yàn)證與開(kāi)發(fā)板的使用 - - 2020 - - 4.1 通過(guò) 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ī)軟件測(cè)試稅控機(jī)軟件測(cè)試 基于基于 44b0 的的 nandflash 底層驅(qū)動(dòng)程序設(shè)計(jì)底層驅(qū)動(dòng)程序設(shè)計(jì) 摘要摘要 三星公司推出的 16/32 位 risc 處理器 s3c44b0x 為手持設(shè)備和一般類型應(yīng)用提供了高 性價(jià)比和高性能的微控制解決方案。為了降低成本,s3c44b0x 提供了豐富的內(nèi)置部件。但 是唯一的不足,就是沒(méi)有 nandflash 的專用控制器。而 nandflash 由于其低成本以及大容 量,已經(jīng)廣泛的應(yīng)用到 u 盤,sd 卡,固態(tài)硬盤中去。而在 s3c44box 的設(shè)計(jì)中,一味的使 用 nor flash,對(duì)于大數(shù)據(jù)的存儲(chǔ)是相當(dāng)不利的。文章通過(guò)對(duì) nandflash 的時(shí)序模擬,通 過(guò) norflash 中的底層程序引導(dǎo) nandflash 的操作,使 s3c44b0x 也能與 nandflash 連接, 從而可以實(shí)現(xiàn)存儲(chǔ),讀取內(nèi)部的數(shù)據(jù)??梢酝ㄟ^(guò)開(kāi)發(fā)板上實(shí)現(xiàn)讀取 nandflash 的 id 數(shù)據(jù)、 讀取 nandflash 中數(shù)據(jù)內(nèi)容、擦除塊中的數(shù)據(jù)、在空的空間寫入指定的數(shù)據(jù),通過(guò)串口在 windows 中的超級(jí)終端顯示讀出的數(shù)據(jù),以及寫后再讀出操作的數(shù)據(jù),以證實(shí)確認(rèn)對(duì) nandflash 進(jìn)行了讀、寫、擦除等操作的執(zhí)行。文章最后對(duì)所做的工作和取得的結(jié)論進(jìn)行 了總結(jié)。 【關(guān)鍵詞】nandflash arm7 s3c44b0x 塊 頁(yè) 字節(jié) 湖北大學(xué)本科畢業(yè)論文(設(shè)計(jì)) iii software testing of fiscal cash register drive program design according to the nandflash first floor with of 44b0 abstract three 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 cost, 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 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 also 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 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 課題研究的背景和國(guó)內(nèi)外現(xiàn)狀 1.11 arm 簡(jiǎn)介 arm 即advanced risc machines的縮寫,既可以認(rèn)為是一個(gè)公司的名字,也可以認(rèn)為 是對(duì)一類微處理器的通稱,還可以認(rèn)為是一種技術(shù)的名字。1991 年 arm 公司成立于英 國(guó)劍橋,主要出售芯片設(shè)計(jì)技術(shù)的授權(quán)。目前,采用 arm技術(shù)知識(shí)產(chǎn)權(quán)( ip )核的微 處理器,即我們通常所說(shuō)的 arm 微處理器,已遍及工業(yè)控制、消費(fèi)類電子產(chǎn)品、通信系 統(tǒng)、網(wǎng)絡(luò)系統(tǒng)、無(wú)線系統(tǒng)等各類產(chǎn)品市場(chǎng),基于 arm 技術(shù)的微處理器應(yīng)用約占據(jù)了 32 位 risc 微處理器 75 以上的市場(chǎng)份額, arm 技術(shù)正在逐步滲入到我們生活的各個(gè) 方面。 arm 公司是專門從事基于 risc 技術(shù)芯片設(shè)計(jì)開(kāi)發(fā)的公司,作為知識(shí)產(chǎn)權(quán)供應(yīng)商, 本身不直接從事芯片生產(chǎn),靠轉(zhuǎn)讓設(shè)計(jì)許可由合作公司生產(chǎn)各具特色的芯片,世界各大半 導(dǎo)體生產(chǎn)商從arm公司購(gòu)買其設(shè)計(jì)的 arm 微處理器核,根據(jù)各自不同的應(yīng)用領(lǐng)域,加 入適當(dāng)?shù)耐鈬娐罚瑥亩纬勺约旱?arm 微處理器芯片進(jìn)入市場(chǎng)。目前,全世界有幾十 家大的半導(dǎo)體公司都使用 arm 公司的授權(quán),因此既使得 arm 技術(shù)獲得更多的第三方 工具、制造、軟件的支持,又使整個(gè)系統(tǒng)成本降低,使產(chǎn)品更容易進(jìn)入市場(chǎng)被消費(fèi)者所接 受,更具有競(jìng)爭(zhēng)力。 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邏輯; 非常低的功耗; 三段流水線和馮諾依曼結(jié)構(gòu),提供 0.9mips/mhz。 1.12 三星公司s3c44b0x簡(jiǎn)介 s3c44b0x采用了arm7tdmi內(nèi)核,0.25um工藝的cmos標(biāo)準(zhǔn)宏單元和存儲(chǔ)編譯器。 它的低功耗精簡(jiǎn)和出色的全靜態(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位的硬件乘法器。10 s3c44b0x通過(guò)提供全面的、通用的片上外設(shè),大大減少了系統(tǒng)電路中除處理器以外 的元器件配置,從而最小化系統(tǒng)的成本。 1.131.13 nandflashnandflash簡(jiǎn)介簡(jiǎn)介 nor 和nand 是現(xiàn)在市場(chǎng)上兩種主要的非易失閃存技術(shù)。intel 于1988 年首先開(kāi)發(fā) 出nor flash 技術(shù),徹底改變了原先由eprom 和eeprom 一統(tǒng)天下的局面。緊接著, 1989 年,東芝公司發(fā)表了nand flash 結(jié)構(gòu),強(qiáng)調(diào)降低每比特的成本,更高的性能,并且 象磁盤一樣可以通過(guò)接口輕松升級(jí)。相“flash 存儲(chǔ)器”經(jīng)??梢耘c相“nor 存儲(chǔ)器”互換 使用。但是經(jīng)過(guò)了十多年之后,仍然有相當(dāng)多的硬件工程師也搞不清楚nand 閃存技術(shù)相 對(duì)于nor 技術(shù)的優(yōu)越之處,因?yàn)榇蠖鄶?shù)情況下閃存只是用來(lái)存儲(chǔ)少量的代碼,這時(shí)nor 閃存更適合一些。而nand 則是高數(shù)據(jù)存儲(chǔ)密度的理想解決方案。 nandflah是一種快閃記憶體,以儲(chǔ)存數(shù)據(jù)為主,又稱為data flash,晶片容量大, 目前主流容量已達(dá)2gb?,F(xiàn)在市面上的常見(jiàn)的優(yōu)盤、mp3和mp4等數(shù)碼設(shè)備的存儲(chǔ)系統(tǒng)都 是采用nandflash存儲(chǔ)芯片來(lái)實(shí)現(xiàn)的。nandflash價(jià)格便宜量又足,性價(jià)比很高,并且十分輕 便,抗震性也很不錯(cuò),很適合用來(lái)做數(shù)碼產(chǎn)品。生產(chǎn)nandflash芯片的廠商主要有 samsung、hynix、micron、stmicroelectronics 、toshiba等。現(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í)具有很高的成本效益,但是很低的寫入和擦除速度大大影響了它的性能。nand 結(jié)構(gòu) 能提供極高的單元密度,可以達(dá)到高存儲(chǔ)密度,并且寫入和擦除的速度也很快。應(yīng)用 nand的困難在于flash 的管理和需要特殊的系統(tǒng)接口。 1.2 課題研究的意義 由于nandflash的困難在于flash 的管理和需要特殊的系統(tǒng)接口。而s3c44b0x采用 的是arm7tdmi的內(nèi)核,并沒(méi)有像arm9一樣提供了專用的nandflash的硬件接口, nandflash并不能像nor flash、sdram與專用接口相連后直接使用。如果有像arm9一樣專 用接口,就可以通過(guò)硬件的方式來(lái)控制nandflash的時(shí)序,而采用arm7的s3c44b0x中只 使用nor flash就不能滿足對(duì)大數(shù)據(jù)量的存儲(chǔ)要求,想要實(shí)現(xiàn)nandflash在44b0上的存儲(chǔ)功能, 只能通過(guò)軟件控制i/o口的方式,解決nandflash的時(shí)序問(wèn)題。所以在44b0上想要完成對(duì) nandflash的操作,必須通過(guò)通用i/o口,用底層驅(qū)動(dòng)的方法,對(duì)其進(jìn)行時(shí)序的操作,以實(shí) 現(xiàn)nandflash在arm7上的功能實(shí)現(xiàn),包括功能有:讀取,擦除,寫入,壞塊的判斷和處理 以及數(shù)據(jù)的校驗(yàn)。 由于單從nandflash中讀出的數(shù)據(jù),是無(wú)任何意義的,而這些數(shù)據(jù)只有在上層軟件的組 織下,才能獲取相應(yīng)的信息,如word程序可以將nandflash上的word數(shù)據(jù)連接起來(lái)后,可 以在電腦中顯示出來(lái)。而這些都是上層軟件中的復(fù)雜操作,本文不做介紹,而本文將通過(guò) 從硬件上的連接,到軟件上的支持,一步步來(lái)實(shí)現(xiàn)nandflash的操作,并通過(guò)串口與 windows中的超級(jí)終端通信,驗(yàn)證底層驅(qū)動(dòng)對(duì)nandflash的操作的存在性,以及正確性。 1.3 課題研究的內(nèi)容 三星公司推出的 16/32 位 risc 處理器 s3c44b0x 為手持設(shè)備和一般類型應(yīng)用提供了高 性價(jià)比和高性能的微控制解決方案。為了降低成本,s3c44b0x 提供了豐富的內(nèi)置部件。但 是唯一的不足,就是沒(méi)有 nandflash 的專用控制器。而 nandflash 由于其低成本以及大容 量,已經(jīng)廣泛的應(yīng)用到 u 盤,sd 卡,固態(tài)硬盤中去。而在 s3c44box 的設(shè)計(jì)中,一味的使 用 nor flash,對(duì)于大數(shù)據(jù)的存儲(chǔ)是相當(dāng)不利的。文章通過(guò)對(duì) nandflash 的時(shí)序模擬,通 過(guò) norflash 中的底層程序引導(dǎo) nandflash 的操作,使 s3c44b0x 也能與 nandflash 連接, 從而可以實(shí)現(xiàn)存儲(chǔ),讀取內(nèi)部的數(shù)據(jù)??梢酝ㄟ^(guò)開(kāi)發(fā)板上實(shí)現(xiàn)讀取 nandflash 的 id 數(shù)據(jù)、 讀取 nandflash 中數(shù)據(jù)內(nèi)容、擦除塊中的數(shù)據(jù)、在空的空間寫入指定的數(shù)據(jù),通過(guò)串口在 windows 中的超級(jí)終端顯示讀出的數(shù)據(jù),以及寫后再讀出操作的數(shù)據(jù),以證實(shí)確認(rèn)對(duì) nandflash 進(jìn)行了讀、寫、擦除等操作的執(zhí)行。文章最后對(duì)所做的工作和取得的結(jié)論進(jìn)行 了總結(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è)塊分為若干頁(yè)(page)。一般而言,塊、頁(yè)之間的關(guān)系隨著芯片的不同而 不同,而k9f5608u0d的分配則如圖2-1: 湖北大學(xué)本科畢業(yè)論文(設(shè)計(jì)) - 3 - 圖2-1 k9f5608u0d結(jié)構(gòu)圖 我們討論的k9f1208u0b總共有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)。 這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è)完整的 nandflash 地址分解成 column address 與 page address.進(jìn)行尋址。并 且對(duì) nandflash 尋址進(jìn)行 3 個(gè)周期的輸入后,巧妙的解決了 8 位數(shù)據(jù)線尋址地址短的特點(diǎn)。 這樣的設(shè)計(jì),也成了 nandflash 的一個(gè)優(yōu)勢(shì)所以,因?yàn)椴煌笮〉牡?sdram,norflash 在 連接時(shí),由于容量的不同,造成了地址線位數(shù)的不同,所以在連接時(shí),要按具體情況連接。 而 nandflash 由于數(shù)據(jù)線和地址線復(fù)用,解決了硬件上的連接問(wèn)題,只要在操作程序上做 相應(yīng)的修改就行了。 column address: 列地址。column address 其實(shí)就是指定 page 上的某個(gè) byte,指定這 個(gè) byte 其實(shí)也就是指定此頁(yè)的讀寫起始地址。 page address:頁(yè)地址。 由于頁(yè)地址總是以 512bytes 對(duì)齊的,所以它的低 9 位總是 0。確定讀寫操作是在 flash 上的哪個(gè)頁(yè)進(jìn)行的。 列地址和頁(yè)地址的尋址方法,具體如下表 2-1: 表 2-1 nandflash 尋址周期表 i/o 0i/o 1i/o 2i/o 3i/o 4i/o 5i/o 6i/o 7 1 周期a0a1a2a3a4a5a6a7 2 周期a9a10a11a12a13a14a15a16 3 周期a17a18a19a20a21a22a23a24 上表中,第 1 周期為列地址,第 2,3 周期為頁(yè)地址??赡芗?xì)心的發(fā)現(xiàn) 3 個(gè)周期每周 期 8 位,應(yīng)該是 24 位,可是從 a0a24,應(yīng)該有 25 位,a8 去哪里了?在前面我們討論的 nandflash 的結(jié)構(gòu)中,每一頁(yè)有數(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 - 位的地址線,才能尋址。但是從上表來(lái)說(shuō),我們只有第 1 周期的 8 位地址線,如果才能完 成 10 位地址線的工作呢? 其實(shí) a8 位的作用在這里體現(xiàn)了。我們先不考慮擴(kuò)展區(qū)的 16byte 的存儲(chǔ)空間,單考慮 數(shù)據(jù)存儲(chǔ)區(qū)的 512byte 的空間,512byte 只需要 9 位的地址線就能完成對(duì)它的尋址。其實(shí)這 第 9 位就是 a8 位。 nandflash 在設(shè)計(jì)中,已經(jīng)將一頁(yè)中的數(shù)據(jù)存儲(chǔ)區(qū)分成了前半頁(yè)區(qū)和后半頁(yè)區(qū)(前半 頁(yè)區(qū)和后半頁(yè)區(qū)并沒(méi)有明確的定義,這里我先這樣定義)。在后面的 nanflash 指令中,當(dāng) read 命令為 00h 時(shí),其實(shí)已經(jīng)將操作首地址定義到了半頁(yè)區(qū)的首個(gè)地址,這時(shí) a8 就為 0。而當(dāng) read 命令為 01h 時(shí),操作首地址已經(jīng)定義到了后半頁(yè)的首個(gè)地址,這時(shí) a8 就為 1。只是 a8 不能通過(guò) i/o 口直接改變值,而會(huì)間接的隨命令改變。而當(dāng) read 命令為 50h 時(shí),則將操作首地址定義到了擴(kuò)展存儲(chǔ)區(qū)的首地址。 2.3 nandflash 引腳功能及指令集 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 口是用來(lái)輸入指令、 地址和數(shù)據(jù)、并在讀周期時(shí)輸出數(shù)據(jù)的。當(dāng)芯片未被選中或輸出禁能時(shí),i/o 口呈高阻態(tài)。 cle:command latch enable。命令鎖存使能,cle 腳上的輸入電平用來(lái)控制 打開(kāi)/關(guān)閉指令送入指令寄存器的通路。當(dāng) cle 為高時(shí),i/o 口在 we 信號(hào)的上升沿將指令 鎖入指令寄存器。 ale:address latch enable。地址鎖存使能,ale 腳上的輸入電平用來(lái)控制 打開(kāi)/關(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í)間內(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 引腳的輸出說(shuō)明了器件目前的操作 狀態(tài),當(dāng)它為低電平時(shí),表明某個(gè)寫入、探險(xiǎn)或任意讀操作正在進(jìn)行,當(dāng)這個(gè)操作完成, r/b 才會(huì)重新回到高電平狀態(tài)。它是一個(gè)開(kāi)漏輸出,而且在芯片未選中或輸出未全能時(shí), 不會(huì)進(jìn)入高阻態(tài)。 wp:write protect。寫保護(hù),wp 引腳提供在電源波動(dòng)情況下,對(duì)器件不可預(yù)料 地寫入或探險(xiǎn)的保護(hù)。當(dāng) wp 腳為低電平時(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ù)都通過(guò)拉低 we 和 ce 從 i/o 口寫入器件中。有一些指令只需要一個(gè)總線周期完成。 例如,復(fù)位指令,和狀態(tài)讀指令等;另外一些指令,例如頁(yè)寫入和塊擦除,則需要 2 個(gè)周 期,其中一個(gè)周期用來(lái)啟動(dòng),而另一個(gè)周期用來(lái)執(zhí)行。表 2-2 顯示了 nandflash k9fk5608u0d 具備的指令。 表 2-2 k9f5608u0d 具備的指令和功能 功能第一周期第二周期器件忙時(shí)可接受的命令(用“0”表示) 讀方式 100h/01h- 讀方式 250h- 讀 id 號(hào)90h- 復(fù)位ffh-0 頁(yè)寫入80h10h 回拷貝00h8ah 塊擦除60hd0h 讀當(dāng)前狀態(tài)70h-0 在 nandflash 中,讀和寫操作都是以頁(yè)為單位進(jìn)行的操作,擦除是基于塊進(jìn)行的操作 的。對(duì)以上 nandflash 的各引腳定義功能,以及 nandflash 具備的指令,就可以在 s3c44b0x 上實(shí)現(xiàn)對(duì) nandflash 對(duì)各種操作功能。 3 nandflash 底層程序的設(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è)備的訪問(wèn)互不干擾,就將不同類型的設(shè) 備映射到不同的 bank 內(nèi)。s3c44b0x 的 bank 空間分配如圖 3-1 所示。 bank 7未用 未用 bank 6 8mb/16mb sdram bank 5未用 bank 4ethernet bank 3usb 湖北大學(xué)本科畢業(yè)論文(設(shè)計(jì)) - 6 - bank 2ide bank 1nandflash cpu 寄存器 未用bank 0 flash 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 上,也就是說(shuō),系統(tǒng)在上電 時(shí)處理器即從 flash rom 的 0x00000000 地址處取得指令開(kāi)始運(yùn)行。bios 程序完成了設(shè)置 初始化、中斷矢量初始化、存儲(chǔ)器的參數(shù)設(shè)置、堆棧地址定義等工作,這些設(shè)置對(duì)于系統(tǒng) 的正常啟動(dòng)具有重要意義。 3.1.2 nandflash 與 44b0 的連接方法 k9f5608u0d 映射到 bank1 區(qū)域內(nèi),與 s3c44b0x 的接口電路如圖 3-2 所示: 圖 3-2 k9f5608u0d 與 s3c44b0x 的接口電路 其中,nandwe 和 nandre 信號(hào)通過(guò)圖 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 相連接,nwe 與 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 功能表 將上述引腳與開(kāi)發(fā)板的擴(kuò)展口連接后,用萬(wàn)用表連接相鄰兩腳,看是否出現(xiàn)短路的情 況,這種情況應(yīng)該馬上排除,還有一點(diǎn)要注意的是,nandflash8 位數(shù)據(jù)線與 44b0 的低 8 位數(shù)據(jù)線之間的 8 根連接線,要盡可能的做到長(zhǎng)短相等,這樣可以減少在高速讀寫過(guò)程中, 可能造成 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 頁(yè)讀操作的設(shè)計(jì) 在初始上電時(shí),器件進(jìn)入缺少的“讀方式 1 模式”。在這一模式下,頁(yè)讀操作通過(guò)將 00h 指令定稿指令寄存器,接著寫入 3 個(gè)周期的地址(1 個(gè)列地址,2 個(gè)頁(yè)地址)來(lái)啟動(dòng)。 一旦頁(yè)讀指令被器件鎖存,下面的頁(yè)讀操作就不需要再重復(fù)寫入指令了。如圖 3-4 所示: 圖 3-4 讀前半頁(yè)命令缺省圖 同樣的,對(duì)于后半頁(yè)的操作,只要將指令改為 01h,而對(duì)擴(kuò)展區(qū)只要將指令改為 50h, 而在連續(xù)的讀取中,并不用反復(fù)的輸入上述的指令。如圖 3-5,3-6 所示: 湖北大學(xué)本科畢業(yè)論文(設(shè)計(jì)) - 8 - 圖 3-5 讀后半頁(yè)命令缺省圖 圖 3-6 讀擴(kuò)展區(qū)命令缺省圖 寫入指令和地址后,處理器可以通過(guò)對(duì)信號(hào)線 r/b 的分析來(lái)判斷該操作是否完成。如 果信號(hào)為低電平,表示 nandflash 正“忙”;為高電平,說(shuō)明器件內(nèi)部操作完成,要讀取的 數(shù)據(jù)被卷入了數(shù)據(jù)寄存器。外部控制器可以在以 50ns 為周期的連續(xù) re 脈沖信號(hào)的控制下, 從 i/o 口依次讀出數(shù)據(jù)。 連續(xù)頁(yè)讀操作中,輸出的數(shù)據(jù)是從指定的列地址開(kāi)始,直到該頁(yè)的最后一個(gè)列地址的 數(shù)據(jù)為止。 nandflash 讀操作(讀 1page)如圖 3-7 所示 圖 3-7 讀操作時(shí)序圖 讀操作流程如圖 3-8 所示: 湖北大學(xué)本科畢業(yè)論文(設(shè)計(jì)) - 9 - 圖 3-8 讀操作流程圖 讀操作一開(kāi)始向 nandflash 命令寄存器寫入 00h,然后向地址寄存器寫入讀取的地址, 即將數(shù)據(jù)指針指向所要讀了的內(nèi)容地址。 正如硬盤的盤片被分為磁道,每個(gè)磁道又被分為若干扇區(qū),一塊 nand flash 被分為若 干 block,每個(gè) block 又被分為若干 page。我們的 k9f5608u0d 是 32m 的,所以有 2048 的 block。 這里有一點(diǎn)要說(shuō)明的是當(dāng)讀取時(shí),輸入的命令為 00h 時(shí),那在連續(xù)讀取的接下來(lái)的 n 個(gè)字節(jié),是從前半頁(yè)存儲(chǔ)區(qū)的首地址(即整頁(yè)的 0 地址)一直讀到第 527 個(gè)字節(jié)處,即讀 完包括數(shù)據(jù)存儲(chǔ)區(qū)和擴(kuò)展存儲(chǔ)區(qū)內(nèi)的完全內(nèi)容,而當(dāng)超過(guò)一頁(yè)的地址后,它將再一次指向 下一頁(yè)的前半頁(yè)存儲(chǔ)區(qū)的首地址,而這個(gè)讀過(guò)程可以無(wú)限的進(jìn)行下去,只到你停止讀取數(shù) 據(jù)或者到達(dá)了 nandflash 最后的一頁(yè)擴(kuò)展區(qū)的最后一個(gè)字節(jié)為止。具體如圖 3-9 所示: 圖 3-9 命令 00h 的讀取內(nèi)部循環(huán) 當(dāng)輸入 01h 讀取命令時(shí),那在連續(xù)讀取的接下來(lái)的 n 個(gè)字節(jié),是從后半頁(yè)存儲(chǔ)區(qū)的首 地址(即整頁(yè)的 256 位地址)開(kāi)始一直讀到第 527 個(gè)字節(jié)處,即讀完包括數(shù)據(jù)存儲(chǔ)區(qū)和擴(kuò) 展存儲(chǔ)區(qū)內(nèi)的完全內(nèi)容,而當(dāng)超過(guò)一頁(yè)的地址后,它將再一次指向下一頁(yè)的后半頁(yè)存儲(chǔ)區(qū) 的首地址,而這個(gè)讀過(guò)程可以無(wú)限的進(jìn)行下去,只到你停止讀取數(shù)據(jù)或者到達(dá)了 nandflash start write 00h write address read data page read completed 湖北大學(xué)本科畢業(yè)論文(設(shè)計(jì)) - 10 - 最后的一頁(yè)擴(kuò)展區(qū)的最后一個(gè)字節(jié)為止。具體如圖 3-10 所示: 圖 3-10 命令 01h 的讀取內(nèi)部循環(huán) 當(dāng)輸入 50h 讀取命令時(shí),在連續(xù)讀取的接下來(lái)的 n 個(gè)字節(jié),是從擴(kuò)展存儲(chǔ)區(qū)的首地址 (即整頁(yè)的 512 位地址)開(kāi)始一直讀到第 527 個(gè)字節(jié)處,即讀完包括數(shù)據(jù)存儲(chǔ)區(qū)和擴(kuò)展存 儲(chǔ)區(qū)內(nèi)的完全內(nèi)容,而當(dāng)超過(guò)一頁(yè)的地址后,它將再一次指向下一頁(yè)的后半頁(yè)存儲(chǔ)區(qū)的首 地址,而這個(gè)讀過(guò)程可以無(wú)限的進(jìn)行下去,只到你停止讀取數(shù)據(jù)或者到達(dá)了 nandflash 最 后的一頁(yè)擴(kuò)展區(qū)的最后一個(gè)字節(jié)為止。具體如圖 3-11 所示: 圖 3-11 命令 50h 的讀取內(nèi)部循環(huán) 3.2.2 頁(yè)寫入操作的設(shè)計(jì) k9f5608u0d 的寫入操作也以頁(yè)為單位。寫入必須在擦除之后,否則寫入將出錯(cuò)。 頁(yè)寫入的周期總共包括 3 個(gè)步驟:寫入中行數(shù)據(jù)輸入指令(80h) ,然后寫入 3 個(gè)字節(jié) 的地址信息,最后串行寫入數(shù)據(jù)。 串行寫入的數(shù)據(jù)最多為 528 個(gè)字節(jié),它們首先被寫入 nandflash 內(nèi)的頁(yè)寄存器,接著器 件進(jìn)入一個(gè)內(nèi)部寫入過(guò)程,將數(shù)據(jù)從頁(yè)寄存器寫入存儲(chǔ)宏單位。 串行數(shù)據(jù)寫入完成后,需要寫入“頁(yè)寫入確認(rèn)”指令 10h,這條指令將初始化器件的內(nèi)部 寫入操作。如果單獨(dú)寫入 10h 而沒(méi)有前面的步驟,則 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)部寫入操作開(kāi)始后,nandflash 自動(dòng)進(jìn)入“讀狀態(tài)寄存器”模式。在這一模式下,當(dāng) re 和 ce 為 低電平時(shí),系統(tǒng)就可以讀取狀態(tài)寄存器。系統(tǒng)可以通過(guò)檢測(cè) r/b 的輸出,或讀狀 態(tài)寄存器狀態(tài)位(i/o6)來(lái)判斷內(nèi)部定稿是否結(jié)束。在器件進(jìn)行內(nèi)部寫操作時(shí),只有讀狀態(tài) 寄存器指令和復(fù)位指令會(huì)被響應(yīng)。當(dāng)頁(yè)寫入操作完成,應(yīng)該檢測(cè)寫狀態(tài)位(i/o0)的電平。 內(nèi)部寫校驗(yàn)只對(duì) 1 沒(méi)有成功地寫為 0 的情況進(jìn)行檢測(cè)。指令寄存器始終保持著讀狀態(tài) 寄存器模式,直到其他有效的指令寫入指令寄存器為止。 nandflash 寫操作(寫 1page)如圖 3-12 所示: 圖 3-12 寫操作時(shí)序圖 寫操作流程如圖 3-13 所示: start write 80h write address write data write 10h read status register r/b = 1 ? no i/o 0 = 0 ? yes program error program completed yes no 湖北大學(xué)本科畢業(yè)論文(設(shè)計(jì)) - 12 - 圖 3-13 寫操作流程圖 寫操作時(shí),首先向命令寄存器輸入 80h 寫指令,然后向地址寄存器輸入 3 周期的地址, 寫入指定的數(shù)據(jù)后,再向命令寄存器輸入 10h 以表示確認(rèn)寫操作。根據(jù) r/b 口反饋給 44b0 的信號(hào),可以判斷寫操作是否執(zhí)行完畢,通過(guò)讀狀態(tài)寄存器可以判斷寫入操作是否成 功。 這里有一點(diǎn)要補(bǔ)充的是,寫操作只能在一頁(yè)中進(jìn)行,即可以開(kāi)始在一頁(yè)的內(nèi)的任意一 個(gè)位置,但是結(jié)束的時(shí)候,一定要在這頁(yè)地址 527 字節(jié)前的任意一位,不可以寫循環(huán)后, 輸入確認(rèn)指令 10h 時(shí),現(xiàn)在的數(shù)據(jù)已經(jīng)進(jìn)入到下一頁(yè)中去。另外,寫操作也可以通過(guò) 00h,01h,50h 加到寫操作開(kāi)始指令 80h 前,以快速的確定寫入的地址,這樣大大增加了 nandflash 使用的靈活性。即 00h 時(shí),從前半頁(yè)存儲(chǔ)區(qū)地址開(kāi)始寫,01h 時(shí),從后半頁(yè)存儲(chǔ) 區(qū)地址開(kāi)始寫,50h 從擴(kuò)展頁(yè)存儲(chǔ)區(qū)地址開(kāi)始寫,而具體從各區(qū)域的哪個(gè)地址寫,又需要 在不輸入地址 3 周期中的第一周期(即列地址)中設(shè)置,但是不無(wú)論從哪個(gè)地址開(kāi)始寫, 都必須在超過(guò)這頁(yè)的最后一位前輸入確定寫操作地址,即整頁(yè)的 527 字節(jié)地址。 3.2.3 塊擦除操作的設(shè)計(jì) 擦除操作是以塊為單位進(jìn)行的。擦除的啟動(dòng)指令為 60h,塊地址的輸入通過(guò)兩個(gè)時(shí)鐘 周期完成。這時(shí)只有地址位 a14 到 a24 是有效的,a9 到 a13 則被忽略。因?yàn)槊恳粔K是有 32 頁(yè)組成的,而 a9 到 a13 正好是 5 位,也就是一個(gè)塊中,頁(yè)的地址,而擦除是對(duì)塊操作, 所以 a9 到 a13 則被忽略,即 a9 到 a16 的值為 11111000b 到 11111111b,對(duì)于塊操作時(shí), 都是一樣的。塊地址載入之后是擦除確認(rèn)指令 d0h,它用來(lái)初始化內(nèi)部探險(xiǎn)操作。擦除確 認(rèn)命令用來(lái)防止外部干擾產(chǎn)生擦除操作的意外情況。nandflash 檢測(cè)到擦除確認(rèn)命令輸入后, 在 we 的上升沿啟動(dòng)內(nèi)部寫控制器開(kāi)始執(zhí)行擦除和擦除校驗(yàn)。內(nèi)部擦除操作完成后,應(yīng)該 檢測(cè)一下寫狀態(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)的判斷,如果沒(méi)有正確的判斷,會(huì)使擦除只擦除 一部分,而沒(méi)有擦除的部分,在寫入數(shù)據(jù)的時(shí)候,由于 byte 位沒(méi)有拉高,而使寫入的數(shù)據(jù) 發(fā)生錯(cuò)誤。 3.2.4 讀狀態(tài)寄存器的設(shè)計(jì) k9f5608u0d 包含一個(gè)狀態(tài)寄存器,該寄存器反應(yīng)了寫入或擦除操作是否完成,或?qū)?入和擦除操作是否無(wú)錯(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ò) start write 60h write block address write d0h read status register i/o 6 = 1 ? n o r/b = 0 ? yes erase completed y es erase error n o 湖北大學(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ù)頁(yè)讀的過(guò)程中, 必須重發(fā) 00h 或 50h 指令。 3.2.5 讀器件 id 的設(shè)計(jì) k9f5608u0d 器件具有一個(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í)序圖 其中制造商代碼為 0xec 即三星公司的代碼,器件代碼為 0x75,因此,k9f5608u0d 的 id 為 0xec75。如果在其它容量的三星 nandflash,如容量為 16mb 的 k9f52808r0d 的 id 則為 0xec35。 不同型號(hào)的代碼見(jiàn)表 3-3 所示: 表 3-3 器件代碼表 在實(shí)際的操作中,可以用此代碼在未對(duì) nandflash 中存儲(chǔ)數(shù)據(jù)區(qū)操作的前題下,初步判 斷 nandflash 的好壞,或者是否存在焊接上的錯(cuò)誤(如斷路,短路的情況判斷) 。 3.2.6 軟件復(fù)位功能設(shè)計(jì) 器件提供一個(gè)復(fù)位(reset)指令,通過(guò)向指令寄存器寫入 ffh 來(lái)完成對(duì)器件的復(fù)位。 當(dāng)器件處于任意讀模式、寫入或者擦除模式的忙狀態(tài)時(shí),發(fā)送復(fù)位指令可以使器件中止當(dāng) 前的各種操作,正在被修改的存儲(chǔ)器宏單元的內(nèi)容不再有效,指令寄存器被清零并等待下 一條指令的到來(lái)。當(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 的時(shí)序需要通過(guò)程序來(lái)模擬,因此就需要清楚地了解一些信號(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)變的過(guò)程。而同樣的,而寫一個(gè) byte 的時(shí)候,44b0 的 we 會(huì)自動(dòng)的對(duì) nandflash 的 we 完成一次從低電平向高電平轉(zhuǎn)變的過(guò)程。所以在寫程 序的時(shí)候,不必對(duì) we、re 的電平變換,通過(guò)軟件的方法模擬。而下面幾個(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 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)該在一次開(kāi)始前,給 nandflash 一個(gè)初始化動(dòng)作,由每操作開(kāi)始 時(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(0x90);/read id nf_addr ( ); nanddata=0x0; nf_ale_l(); id=nanddata8; wait_rb; for(i=0;i528;i+) dataarrayi=nanddata 將各功能程序,組織后,在 main 中應(yīng)用,在超級(jí)終端中,可以進(jìn)有內(nèi)容的 nandflash 進(jìn)行操作,先對(duì) nandflash 進(jìn)行讀 id 操作。然后先讀出一個(gè)地址的內(nèi)容,通過(guò)超級(jí)終端顯 示一頁(yè)的內(nèi)容。再將這一頁(yè)所在的塊擦除,再將其讀出,看是否已經(jīng)清除了。然后再對(duì)擦 除后的 nandflash 再寫入指定的數(shù)據(jù),再將其讀出,看是否和寫入的數(shù)據(jù)是相同的 4 試驗(yàn)驗(yàn)證與開(kāi)發(fā)板的使用 4.1 通過(guò) j-tag 下載 u-boot 首先將 j-tag 小板上面的短路冒拔插到 wiggler 插針上(板子上面有絲印標(biāo)識(shí)) ,用 并口延長(zhǎng)線連接 j-tag 小板到開(kāi)發(fā)板 j-tag 接口電腦并口: 安裝好 flashpgm 軟件后,時(shí)行如圖 4-1 配置: 圖 4-1 j-tag 配置設(shè)置 點(diǎn)擊菜單 file_open 選擇,.ocd 文件。ocd 文件是一個(gè)硬件系統(tǒng)配置文件,設(shè)置了 cpu,flash 類型,flash 接口的位
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025裝修咨詢?cè)O(shè)計(jì)合同范本
- 2025賓館特色主題酒店股權(quán)投資與轉(zhuǎn)讓合同3篇
- 2024美發(fā)店與消防部門安全檢查合同
- 2025年度校園食堂廚師勞務(wù)派遣合同4篇
- 2025年度圖書代售及推廣服務(wù)合同4篇
- 2024碎石原料交易市場(chǎng)建設(shè)合同
- 2024裝修工程額外項(xiàng)目合同書一
- 2025年度智慧城市建設(shè)綜合解決方案承包合作協(xié)議4篇
- 2025年度SEO風(fēng)險(xiǎn)管理與合規(guī)性審核合同3篇
- 2025年度山林土地流轉(zhuǎn)與綜合開(kāi)發(fā)承包合同4篇
- GB/T 9755-2001合成樹(shù)脂乳液外墻涂料
- GB/T 10609.3-1989技術(shù)制圖復(fù)制圖的折疊方法
- GB 4053.2-2009固定式鋼梯及平臺(tái)安全要求第2部分:鋼斜梯
- 通力電梯培訓(xùn)教材:《LCE控制系統(tǒng)課程》
- 佛山市內(nèi)戶口遷移申請(qǐng)表
- 品管圈PDCA持續(xù)質(zhì)量改進(jìn)提高靜脈血栓栓塞癥規(guī)范預(yù)防率
- 一次函數(shù)單元測(cè)試卷(含答案)
- 陜西省榆林市各縣區(qū)鄉(xiāng)鎮(zhèn)行政村村莊村名居民村民委員會(huì)明細(xì)
- 天車設(shè)備維護(hù)檢修標(biāo)準(zhǔn)設(shè)備維護(hù)檢修規(guī)程
- 中國(guó)智能物聯(lián)網(wǎng)(AIoT)研究報(bào)告
- 江蘇新海石化有限公司廢氣治理項(xiàng)目環(huán)境影響報(bào)告書
評(píng)論
0/150
提交評(píng)論