NORFLASHNANDFLASH畢業(yè)論文.doc_第1頁
NORFLASHNANDFLASH畢業(yè)論文.doc_第2頁
NORFLASHNANDFLASH畢業(yè)論文.doc_第3頁
NORFLASHNANDFLASH畢業(yè)論文.doc_第4頁
NORFLASHNANDFLASH畢業(yè)論文.doc_第5頁
已閱讀5頁,還剩37頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

湖北大學本科畢業(yè)論文(設計) 湖湖 北北 大大 學學 本本 科科 畢畢 業(yè)業(yè) 論論 文文 (設(設 計)計) 題題 目目 稅控機軟件測試稅控機軟件測試 基于基于 44b044b0 的的 nandflashnandflash 底層驅(qū)動程序設計底層驅(qū)動程序設計 姓姓 名名 解添津解添津 學學 號號 20062211052200172006221105220017 專業(yè)年級專業(yè)年級 0606 級電子科學與技術級電子科學與技術 指導教師指導教師 陳陳 勇勇 職職 稱稱 講講 師師 20102010 年年 0505 月月 0808 日日 湖北大學本科畢業(yè)論文(設計) i 目錄 1 1 緒論緒論 - - 1 1 - - 1.1 課題研究的背景和國內(nèi)外現(xiàn)狀 - 1 - 1.2 課題研究的意義 - 2 - 1.3 課題研究的內(nèi)容 - 2 - 2 2 nandflashnandflash 操作論證操作論證 - - 2 2 - - 2.1 nandflash的結構及器件特性分析- 2 - 2.2 nand flash的尋址.- 3 - 2.3 nandflash引腳功能及指令集- 4 - 3 3 nandflashnandflash 底層程序的設計及實現(xiàn)底層程序的設計及實現(xiàn) - - 5 5 - - 3.1 k9f5608u0d 與 s3c44b0x 的接口設計 - 5 - 3.2 nandflash底層程序的實現(xiàn)與設計- 7 - 3.3 nandflash底層程序設計.- 17 - 4 4 試驗驗證與開發(fā)板的使用試驗驗證與開發(fā)板的使用 - - 2020 - - 4.1 通過 j-tag 下載 u-boot - 20 - 4.2 超級終端的設置.- 21 - 4.3 使用 u-boot 運行 nandflash底層驅(qū)動 .- 24 - 4.4 nandflash操作論證.- 26 - 5 5 結論和展望結論和展望 - - 2929 - - 5.1 結論 .- 29 - 5.2 展望 .- 30 - 參考文獻參考文獻 - - 3131 - - 湖北大學本科畢業(yè)論文(設計) ii 稅控機軟件測試稅控機軟件測試 基于基于 44b0 的的 nandflash 底層驅(qū)動程序設計底層驅(qū)動程序設計 摘要摘要 三星公司推出的 16/32 位 risc 處理器 s3c44b0x 為手持設備和一般類型應用提供了高 性價比和高性能的微控制解決方案。為了降低成本,s3c44b0x 提供了豐富的內(nèi)置部件。但 是唯一的不足,就是沒有 nandflash 的專用控制器。而 nandflash 由于其低成本以及大容 量,已經(jīng)廣泛的應用到 u 盤,sd 卡,固態(tài)硬盤中去。而在 s3c44box 的設計中,一味的使 用 nor flash,對于大數(shù)據(jù)的存儲是相當不利的。文章通過對 nandflash 的時序模擬,通 過 norflash 中的底層程序引導 nandflash 的操作,使 s3c44b0x 也能與 nandflash 連接, 從而可以實現(xiàn)存儲,讀取內(nèi)部的數(shù)據(jù)??梢酝ㄟ^開發(fā)板上實現(xiàn)讀取 nandflash 的 id 數(shù)據(jù)、 讀取 nandflash 中數(shù)據(jù)內(nèi)容、擦除塊中的數(shù)據(jù)、在空的空間寫入指定的數(shù)據(jù),通過串口在 windows 中的超級終端顯示讀出的數(shù)據(jù),以及寫后再讀出操作的數(shù)據(jù),以證實確認對 nandflash 進行了讀、寫、擦除等操作的執(zhí)行。文章最后對所做的工作和取得的結論進行 了總結。 【關鍵詞】nandflash arm7 s3c44b0x 塊 頁 字節(jié) 湖北大學本科畢業(yè)論文(設計) 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 湖北大學本科畢業(yè)論文(設計) - 1 - 1 緒論 1.1 課題研究的背景和國內(nèi)外現(xiàn)狀 1.11 arm 簡介 arm 即advanced risc machines的縮寫,既可以認為是一個公司的名字,也可以認為 是對一類微處理器的通稱,還可以認為是一種技術的名字。1991 年 arm 公司成立于英 國劍橋,主要出售芯片設計技術的授權。目前,采用 arm技術知識產(chǎn)權( ip )核的微 處理器,即我們通常所說的 arm 微處理器,已遍及工業(yè)控制、消費類電子產(chǎn)品、通信系 統(tǒng)、網(wǎng)絡系統(tǒng)、無線系統(tǒng)等各類產(chǎn)品市場,基于 arm 技術的微處理器應用約占據(jù)了 32 位 risc 微處理器 75 以上的市場份額, arm 技術正在逐步滲入到我們生活的各個 方面。 arm 公司是專門從事基于 risc 技術芯片設計開發(fā)的公司,作為知識產(chǎn)權供應商, 本身不直接從事芯片生產(chǎn),靠轉讓設計許可由合作公司生產(chǎn)各具特色的芯片,世界各大半 導體生產(chǎn)商從arm公司購買其設計的 arm 微處理器核,根據(jù)各自不同的應用領域,加 入適當?shù)耐鈬娐?,從而形成自己?arm 微處理器芯片進入市場。目前,全世界有幾十 家大的半導體公司都使用 arm 公司的授權,因此既使得 arm 技術獲得更多的第三方 工具、制造、軟件的支持,又使整個系統(tǒng)成本降低,使產(chǎn)品更容易進入市場被消費者所接 受,更具有競爭力。 arm處理器的三大特點是:耗電少功能強、16位/32位雙指令集和眾多合作伙伴。當 前有5個產(chǎn)品系列arm7、arm9、arm9e、arm10和securcore。而民用中最常用的 就是arm7和arm9。其中,arm7系列,優(yōu)化用于對價位和功耗敏感的消費應用的低功耗 32位核,有: 嵌入式ice-rt邏輯; 非常低的功耗; 三段流水線和馮諾依曼結構,提供 0.9mips/mhz。 1.12 三星公司s3c44b0x簡介 s3c44b0x采用了arm7tdmi內(nèi)核,0.25um工藝的cmos標準宏單元和存儲編譯器。 它的低功耗精簡和出色的全靜態(tài)設計特別適用于對成本和功耗敏感的應用。同樣 s3c44b0x還采用了一種新的總結結構,即sambaii(三星arm cpu嵌入式微處理器總線 結構)。 s3c44b0x的杰出特性是它的cpu核,是由arm公司設計的16/32位arm7tdmi risc 處理器(66mhz)。arm7tdmi體系結構的特點是它集成了thumb代碼壓縮器,片上的 ice斷點高度支持,和一個32位的硬件乘法器。10 s3c44b0x通過提供全面的、通用的片上外設,大大減少了系統(tǒng)電路中除處理器以外 的元器件配置,從而最小化系統(tǒng)的成本。 1.131.13 nandflashnandflash簡介簡介 nor 和nand 是現(xiàn)在市場上兩種主要的非易失閃存技術。intel 于1988 年首先開發(fā) 出nor flash 技術,徹底改變了原先由eprom 和eeprom 一統(tǒng)天下的局面。緊接著, 1989 年,東芝公司發(fā)表了nand flash 結構,強調(diào)降低每比特的成本,更高的性能,并且 象磁盤一樣可以通過接口輕松升級。相“flash 存儲器”經(jīng)??梢耘c相“nor 存儲器”互換 使用。但是經(jīng)過了十多年之后,仍然有相當多的硬件工程師也搞不清楚nand 閃存技術相 對于nor 技術的優(yōu)越之處,因為大多數(shù)情況下閃存只是用來存儲少量的代碼,這時nor 閃存更適合一些。而nand 則是高數(shù)據(jù)存儲密度的理想解決方案。 nandflah是一種快閃記憶體,以儲存數(shù)據(jù)為主,又稱為data flash,晶片容量大, 目前主流容量已達2gb?,F(xiàn)在市面上的常見的優(yōu)盤、mp3和mp4等數(shù)碼設備的存儲系統(tǒng)都 是采用nandflash存儲芯片來實現(xiàn)的。nandflash價格便宜量又足,性價比很高,并且十分輕 便,抗震性也很不錯,很適合用來做數(shù)碼產(chǎn)品。生產(chǎn)nandflash芯片的廠商主要有 samsung、hynix、micron、stmicroelectronics 、toshiba等?,F(xiàn)在單片的nandflash芯片的 湖北大學本科畢業(yè)論文(設計) - 2 - 存儲容量已經(jīng)可以做到4gb。很難想像,在一個大小只有12*20*1.2mm的芯片里可以做到 如此的容量。想想以后如果現(xiàn)在計算機的主要存儲設備硬盤被nandflash芯片代替,那 計算機將是另一番景象,更輕便,更穩(wěn)定。很多廠商都在打這方面的主意,包括 intel、samsung。 nor 的特點是芯片內(nèi)執(zhí)行(xip, execute in place),這樣應用程序可以直接在flash 閃 存內(nèi)運行,不必再把代碼讀到系統(tǒng)ram 中。nor 的傳輸效率很高,在14mb 的小容 量時具有很高的成本效益,但是很低的寫入和擦除速度大大影響了它的性能。nand 結構 能提供極高的單元密度,可以達到高存儲密度,并且寫入和擦除的速度也很快。應用 nand的困難在于flash 的管理和需要特殊的系統(tǒng)接口。 1.2 課題研究的意義 由于nandflash的困難在于flash 的管理和需要特殊的系統(tǒng)接口。而s3c44b0x采用 的是arm7tdmi的內(nèi)核,并沒有像arm9一樣提供了專用的nandflash的硬件接口, nandflash并不能像nor flash、sdram與專用接口相連后直接使用。如果有像arm9一樣專 用接口,就可以通過硬件的方式來控制nandflash的時序,而采用arm7的s3c44b0x中只 使用nor flash就不能滿足對大數(shù)據(jù)量的存儲要求,想要實現(xiàn)nandflash在44b0上的存儲功能, 只能通過軟件控制i/o口的方式,解決nandflash的時序問題。所以在44b0上想要完成對 nandflash的操作,必須通過通用i/o口,用底層驅(qū)動的方法,對其進行時序的操作,以實 現(xiàn)nandflash在arm7上的功能實現(xiàn),包括功能有:讀取,擦除,寫入,壞塊的判斷和處理 以及數(shù)據(jù)的校驗。 由于單從nandflash中讀出的數(shù)據(jù),是無任何意義的,而這些數(shù)據(jù)只有在上層軟件的組 織下,才能獲取相應的信息,如word程序可以將nandflash上的word數(shù)據(jù)連接起來后,可 以在電腦中顯示出來。而這些都是上層軟件中的復雜操作,本文不做介紹,而本文將通過 從硬件上的連接,到軟件上的支持,一步步來實現(xiàn)nandflash的操作,并通過串口與 windows中的超級終端通信,驗證底層驅(qū)動對nandflash的操作的存在性,以及正確性。 1.3 課題研究的內(nèi)容 三星公司推出的 16/32 位 risc 處理器 s3c44b0x 為手持設備和一般類型應用提供了高 性價比和高性能的微控制解決方案。為了降低成本,s3c44b0x 提供了豐富的內(nèi)置部件。但 是唯一的不足,就是沒有 nandflash 的專用控制器。而 nandflash 由于其低成本以及大容 量,已經(jīng)廣泛的應用到 u 盤,sd 卡,固態(tài)硬盤中去。而在 s3c44box 的設計中,一味的使 用 nor flash,對于大數(shù)據(jù)的存儲是相當不利的。文章通過對 nandflash 的時序模擬,通 過 norflash 中的底層程序引導 nandflash 的操作,使 s3c44b0x 也能與 nandflash 連接, 從而可以實現(xiàn)存儲,讀取內(nèi)部的數(shù)據(jù)。可以通過開發(fā)板上實現(xiàn)讀取 nandflash 的 id 數(shù)據(jù)、 讀取 nandflash 中數(shù)據(jù)內(nèi)容、擦除塊中的數(shù)據(jù)、在空的空間寫入指定的數(shù)據(jù),通過串口在 windows 中的超級終端顯示讀出的數(shù)據(jù),以及寫后再讀出操作的數(shù)據(jù),以證實確認對 nandflash 進行了讀、寫、擦除等操作的執(zhí)行。文章最后對所做的工作和取得的結論進行 了總結。 2 nandflash 操作論證 在正原電氣股份有限公司的產(chǎn)品稅控機上,使用的nandflash為三星公司的 k9f5608u0d,所以為了取材的方便,我在畢業(yè)設計中使用的就是32m的 nandflash:k9f5608u0d。 2.1 nandflash 的結構及器件特性分析 正如硬盤的盤片被分為磁道,每個磁道又分為若干扇區(qū),一塊nandflash也分為若干塊 (block),每個塊分為若干頁(page)。一般而言,塊、頁之間的關系隨著芯片的不同而 不同,而k9f5608u0d的分配則如圖2-1: 湖北大學本科畢業(yè)論文(設計) - 3 - 圖2-1 k9f5608u0d結構圖 我們討論的k9f1208u0b總共有2048 個blocks,故我們可以知道這塊flash的容量為 2048 *(32 *528)= 34603008 bytes = 33 mb。但事實上每個page上的最后16bytes是用于存貯 檢驗碼和其他信息用的,并不能存放實際的數(shù)據(jù),所以實際上我們可以操作的芯片容量為 2048 *(32 *512) = 33554432 bytes = 32 mb由 上圖所示,1個page總共由528 bytes組成,這 528個字節(jié)按順序由上而下以列為單位進行排列(1列代表一個byte。第0行為第0 byte , 第1行為第1 byte,以此類推,每個行又由8個位組成,每個位表示1個byte里面的1bit)。 這528bytes按功能分為兩大部分,分別是數(shù)據(jù)存儲區(qū)域(data field)和擴展存儲區(qū)域 (spare field),其中spare field占528bytes里的16bytes,這16bytes在讀寫操作的時候存放 校驗碼用的,一般不用做普通數(shù)據(jù)的存儲區(qū),除去這 16bytes,剩下的512bytes便是我們用 于存放數(shù)據(jù)用的data field,所以一個page上雖然有528個bytes,但我們只按512bytes進行 容量的計算。 2.2 nand flash 的尋址 由于 nand flash 的巧妙設計,把數(shù)據(jù)線和地址線復用,而數(shù)據(jù)線只有 8 位,所以地址 寄存器把一個完整的 nandflash 地址分解成 column address 與 page address.進行尋址。并 且對 nandflash 尋址進行 3 個周期的輸入后,巧妙的解決了 8 位數(shù)據(jù)線尋址地址短的特點。 這樣的設計,也成了 nandflash 的一個優(yōu)勢所以,因為不同大小的的 sdram,norflash 在 連接時,由于容量的不同,造成了地址線位數(shù)的不同,所以在連接時,要按具體情況連接。 而 nandflash 由于數(shù)據(jù)線和地址線復用,解決了硬件上的連接問題,只要在操作程序上做 相應的修改就行了。 column address: 列地址。column address 其實就是指定 page 上的某個 byte,指定這 個 byte 其實也就是指定此頁的讀寫起始地址。 page address:頁地址。 由于頁地址總是以 512bytes 對齊的,所以它的低 9 位總是 0。確定讀寫操作是在 flash 上的哪個頁進行的。 列地址和頁地址的尋址方法,具體如下表 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 周期為頁地址??赡芗毿牡陌l(fā)現(xiàn) 3 個周期每周 期 8 位,應該是 24 位,可是從 a0a24,應該有 25 位,a8 去哪里了?在前面我們討論的 nandflash 的結構中,每一頁有數(shù)據(jù)存儲區(qū)和擴展存儲區(qū)組成,而這兩個部分 512byte+16byte 應該是 528byte 的存儲空間,而對于 528 字節(jié)的存儲空間,至少應該要 10 湖北大學本科畢業(yè)論文(設計) - 4 - 位的地址線,才能尋址。但是從上表來說,我們只有第 1 周期的 8 位地址線,如果才能完 成 10 位地址線的工作呢? 其實 a8 位的作用在這里體現(xiàn)了。我們先不考慮擴展區(qū)的 16byte 的存儲空間,單考慮 數(shù)據(jù)存儲區(qū)的 512byte 的空間,512byte 只需要 9 位的地址線就能完成對它的尋址。其實這 第 9 位就是 a8 位。 nandflash 在設計中,已經(jīng)將一頁中的數(shù)據(jù)存儲區(qū)分成了前半頁區(qū)和后半頁區(qū)(前半 頁區(qū)和后半頁區(qū)并沒有明確的定義,這里我先這樣定義)。在后面的 nanflash 指令中,當 read 命令為 00h 時,其實已經(jīng)將操作首地址定義到了半頁區(qū)的首個地址,這時 a8 就為 0。而當 read 命令為 01h 時,操作首地址已經(jīng)定義到了后半頁的首個地址,這時 a8 就為 1。只是 a8 不能通過 i/o 口直接改變值,而會間接的隨命令改變。而當 read 命令為 50h 時,則將操作首地址定義到了擴展存儲區(qū)的首地址。 2.3 nandflash 引腳功能及指令集 2.3.1 nandflash 引腳功能 nandflash 由于其良好的設計,雖然引腳數(shù)有 48 個,但實際有用引腳數(shù)只有 19 個, 而其它的未使用的引腳,在日后的 nandflash 升級中,可能會定義上新的功能。 k9f5608u0d 的引腳分布如圖 2-2 所示: 圖 2-2 k9f5608u0d 引腳分布圖 i/o0i/o7:data inputs/outputs。數(shù)據(jù)輸入/輸出口,i/o 口是用來輸入指令、 地址和數(shù)據(jù)、并在讀周期時輸出數(shù)據(jù)的。當芯片未被選中或輸出禁能時,i/o 口呈高阻態(tài)。 cle:command latch enable。命令鎖存使能,cle 腳上的輸入電平用來控制 打開/關閉指令送入指令寄存器的通路。當 cle 為高時,i/o 口在 we 信號的上升沿將指令 鎖入指令寄存器。 ale:address latch enable。地址鎖存使能,ale 腳上的輸入電平用來控制 打開/關閉地址送入地址寄存器的通路。當 ale 為高時,i/o 口在 we 信號的上升沿將地址 鎖入地址寄存器。 ce:chip enable。芯片使能,低電平使能的片選控制線。當芯片處于忙狀態(tài)時, ce 信號即使變高,也將被忽略。 re:read enable。讀使能,re 為串行數(shù)據(jù)輸出控制線。當它為低電平時,內(nèi)部 數(shù)據(jù)將輸出到 i/o 端口,輸出數(shù)據(jù)在 re 的下降沿后一定時間內(nèi)有效,同時,內(nèi)部列地 址計數(shù)器將加 1。 we:write enable。寫使能,we 對 i/o 端口的寫入進行控制。指令、地址和數(shù) 湖北大學本科畢業(yè)論文(設計) - 5 - 據(jù)都會在 we 的上升沿被鎖存。 r/b:ready/busy output。讀/忙輸出,r/b 引腳的輸出說明了器件目前的操作 狀態(tài),當它為低電平時,表明某個寫入、探險或任意讀操作正在進行,當這個操作完成, r/b 才會重新回到高電平狀態(tài)。它是一個開漏輸出,而且在芯片未選中或輸出未全能時, 不會進入高阻態(tài)。 wp:write protect。寫保護,wp 引腳提供在電源波動情況下,對器件不可預料 地寫入或探險的保護。當 wp 腳為低電平時,內(nèi)部高電壓發(fā)生器被復位。 vcc:output buffer power。緩沖器輸出電源,vcc 是器件的供電電源。 vss:ground。地。 nc:no connection??漳_。 dnu:do not use。未使用。 2.3.2 nandflash 指令集 由 k9f5608u0d 的 cle 和 ale 信號線實現(xiàn) i/o 口上指令和地址的利用。指令、地址 和數(shù)據(jù)都通過拉低 we 和 ce 從 i/o 口寫入器件中。有一些指令只需要一個總線周期完成。 例如,復位指令,和狀態(tài)讀指令等;另外一些指令,例如頁寫入和塊擦除,則需要 2 個周 期,其中一個周期用來啟動,而另一個周期用來執(zhí)行。表 2-2 顯示了 nandflash k9fk5608u0d 具備的指令。 表 2-2 k9f5608u0d 具備的指令和功能 功能第一周期第二周期器件忙時可接受的命令(用“0”表示) 讀方式 100h/01h- 讀方式 250h- 讀 id 號90h- 復位ffh-0 頁寫入80h10h 回拷貝00h8ah 塊擦除60hd0h 讀當前狀態(tài)70h-0 在 nandflash 中,讀和寫操作都是以頁為單位進行的操作,擦除是基于塊進行的操作 的。對以上 nandflash 的各引腳定義功能,以及 nandflash 具備的指令,就可以在 s3c44b0x 上實現(xiàn)對 nandflash 對各種操作功能。 3 nandflash 底層程序的設計及實現(xiàn) 3.1 k9f5608u0d 與 s3c44b0x 的接口設計 3.1.1 s3c44b0x 中的 bank 映射 s3c44b0x 可以對 8 個 bank 進行尋址,每個 bank 的空間為 32mb。由于整個目標平 臺都是以處理器為核心的,為了使處理器對各個設備的訪問互不干擾,就將不同類型的設 備映射到不同的 bank 內(nèi)。s3c44b0x 的 bank 空間分配如圖 3-1 所示。 bank 7未用 未用 bank 6 8mb/16mb sdram bank 5未用 bank 4ethernet bank 3usb 湖北大學本科畢業(yè)論文(設計) - 6 - bank 2ide bank 1nandflash cpu 寄存器 未用bank 0 flash rom 圖 3-1 s3c44b0 對尋址空間的安排 圖 3-1 是 s3c44b0x 對程序空間和數(shù)據(jù)空間的分配。在程序空間 flash rom 內(nèi)(即 nor flash),已經(jīng)固體了一段啟動系統(tǒng)及系統(tǒng)進行初始化的程序 bios(即 bootloader:u- boot)。在圖中可以看到,flash rom 映射在了系統(tǒng)的 bank0 上,也就是說,系統(tǒng)在上電 時處理器即從 flash rom 的 0x00000000 地址處取得指令開始運行。bios 程序完成了設置 初始化、中斷矢量初始化、存儲器的參數(shù)設置、堆棧地址定義等工作,這些設置對于系統(tǒng) 的正常啟動具有重要意義。 3.1.2 nandflash 與 44b0 的連接方法 k9f5608u0d 映射到 bank1 區(qū)域內(nèi),與 s3c44b0x 的接口電路如圖 3-2 所示: 圖 3-2 k9f5608u0d 與 s3c44b0x 的接口電路 其中,nandwe 和 nandre 信號通過圖 3-3 的電路產(chǎn)生。 湖北大學本科畢業(yè)論文(設計) - 7 - 圖 3-3 控制信號產(chǎn)生電路 這種方法,是一塊 nandflash 與系統(tǒng)相連接的標準接法,而要實現(xiàn)兩塊 nandflash 的相 互拷貝,則會出現(xiàn)錯誤,而并不能用這種連接方法。另外,在控制信號產(chǎn)生電路中,noe 與 s3c44b0x 的 oe 相連接,nwe 與 we 連接。而 ngcs1 的連接,則表明 nandflash 的數(shù) 據(jù)是映射到了 44b0 的 bank1 中,即以后對 bank1 操作,則對 nandflash 的 8 位數(shù)據(jù)線操 作了。 由于采用了 gpg0gpg3 作為 k9f5608u0d 的信號控制線,因此必須在 i/o 口初始化 中將這些口設定為輸入或輸出口線。其中 gpg0 為輸入,gpg1gpg3 為輸出,關于 i/o 口應用的相關內(nèi)容,如s3c44b0x datasheet中的 i/o 設置表,如表 3-1 所示: 表 3-1 端口 g 功能表 將上述引腳與開發(fā)板的擴展口連接后,用萬用表連接相鄰兩腳,看是否出現(xiàn)短路的情 況,這種情況應該馬上排除,還有一點要注意的是,nandflash8 位數(shù)據(jù)線與 44b0 的低 8 位數(shù)據(jù)線之間的 8 根連接線,要盡可能的做到長短相等,這樣可以減少在高速讀寫過程中, 可能造成 8 根數(shù)據(jù)線之間延時的機率,使 nandflash 工作的更加穩(wěn)定,保證數(shù)據(jù)傳輸?shù)目?靠性。根據(jù)圖 3-2 和圖 3-3,連接好以后,就可以進入編程調(diào)試環(huán)節(jié)了。 3.2 nandflash 底層程序的實現(xiàn)與設計 3.2.1 頁讀操作的設計 在初始上電時,器件進入缺少的“讀方式 1 模式”。在這一模式下,頁讀操作通過將 00h 指令定稿指令寄存器,接著寫入 3 個周期的地址(1 個列地址,2 個頁地址)來啟動。 一旦頁讀指令被器件鎖存,下面的頁讀操作就不需要再重復寫入指令了。如圖 3-4 所示: 圖 3-4 讀前半頁命令缺省圖 同樣的,對于后半頁的操作,只要將指令改為 01h,而對擴展區(qū)只要將指令改為 50h, 而在連續(xù)的讀取中,并不用反復的輸入上述的指令。如圖 3-5,3-6 所示: 湖北大學本科畢業(yè)論文(設計) - 8 - 圖 3-5 讀后半頁命令缺省圖 圖 3-6 讀擴展區(qū)命令缺省圖 寫入指令和地址后,處理器可以通過對信號線 r/b 的分析來判斷該操作是否完成。如 果信號為低電平,表示 nandflash 正“忙”;為高電平,說明器件內(nèi)部操作完成,要讀取的 數(shù)據(jù)被卷入了數(shù)據(jù)寄存器。外部控制器可以在以 50ns 為周期的連續(xù) re 脈沖信號的控制下, 從 i/o 口依次讀出數(shù)據(jù)。 連續(xù)頁讀操作中,輸出的數(shù)據(jù)是從指定的列地址開始,直到該頁的最后一個列地址的 數(shù)據(jù)為止。 nandflash 讀操作(讀 1page)如圖 3-7 所示 圖 3-7 讀操作時序圖 讀操作流程如圖 3-8 所示: 湖北大學本科畢業(yè)論文(設計) - 9 - 圖 3-8 讀操作流程圖 讀操作一開始向 nandflash 命令寄存器寫入 00h,然后向地址寄存器寫入讀取的地址, 即將數(shù)據(jù)指針指向所要讀了的內(nèi)容地址。 正如硬盤的盤片被分為磁道,每個磁道又被分為若干扇區(qū),一塊 nand flash 被分為若 干 block,每個 block 又被分為若干 page。我們的 k9f5608u0d 是 32m 的,所以有 2048 的 block。 這里有一點要說明的是當讀取時,輸入的命令為 00h 時,那在連續(xù)讀取的接下來的 n 個字節(jié),是從前半頁存儲區(qū)的首地址(即整頁的 0 地址)一直讀到第 527 個字節(jié)處,即讀 完包括數(shù)據(jù)存儲區(qū)和擴展存儲區(qū)內(nèi)的完全內(nèi)容,而當超過一頁的地址后,它將再一次指向 下一頁的前半頁存儲區(qū)的首地址,而這個讀過程可以無限的進行下去,只到你停止讀取數(shù) 據(jù)或者到達了 nandflash 最后的一頁擴展區(qū)的最后一個字節(jié)為止。具體如圖 3-9 所示: 圖 3-9 命令 00h 的讀取內(nèi)部循環(huán) 當輸入 01h 讀取命令時,那在連續(xù)讀取的接下來的 n 個字節(jié),是從后半頁存儲區(qū)的首 地址(即整頁的 256 位地址)開始一直讀到第 527 個字節(jié)處,即讀完包括數(shù)據(jù)存儲區(qū)和擴 展存儲區(qū)內(nèi)的完全內(nèi)容,而當超過一頁的地址后,它將再一次指向下一頁的后半頁存儲區(qū) 的首地址,而這個讀過程可以無限的進行下去,只到你停止讀取數(shù)據(jù)或者到達了 nandflash start write 00h write address read data page read completed 湖北大學本科畢業(yè)論文(設計) - 10 - 最后的一頁擴展區(qū)的最后一個字節(jié)為止。具體如圖 3-10 所示: 圖 3-10 命令 01h 的讀取內(nèi)部循環(huán) 當輸入 50h 讀取命令時,在連續(xù)讀取的接下來的 n 個字節(jié),是從擴展存儲區(qū)的首地址 (即整頁的 512 位地址)開始一直讀到第 527 個字節(jié)處,即讀完包括數(shù)據(jù)存儲區(qū)和擴展存 儲區(qū)內(nèi)的完全內(nèi)容,而當超過一頁的地址后,它將再一次指向下一頁的后半頁存儲區(qū)的首 地址,而這個讀過程可以無限的進行下去,只到你停止讀取數(shù)據(jù)或者到達了 nandflash 最 后的一頁擴展區(qū)的最后一個字節(jié)為止。具體如圖 3-11 所示: 圖 3-11 命令 50h 的讀取內(nèi)部循環(huán) 3.2.2 頁寫入操作的設計 k9f5608u0d 的寫入操作也以頁為單位。寫入必須在擦除之后,否則寫入將出錯。 頁寫入的周期總共包括 3 個步驟:寫入中行數(shù)據(jù)輸入指令(80h) ,然后寫入 3 個字節(jié) 的地址信息,最后串行寫入數(shù)據(jù)。 串行寫入的數(shù)據(jù)最多為 528 個字節(jié),它們首先被寫入 nandflash 內(nèi)的頁寄存器,接著器 件進入一個內(nèi)部寫入過程,將數(shù)據(jù)從頁寄存器寫入存儲宏單位。 串行數(shù)據(jù)寫入完成后,需要寫入“頁寫入確認”指令 10h,這條指令將初始化器件的內(nèi)部 寫入操作。如果單獨寫入 10h 而沒有前面的步驟,則 10h 不會起作用。10h 寫入后, 湖北大學本科畢業(yè)論文(設計) - 11 - k9f5608u0d 的內(nèi)部寫控制器將自動執(zhí)行內(nèi)部寫入和校驗中必要的算法和時序,這時系統(tǒng) 控制器就可以去完成其他任務。 內(nèi)部寫入操作開始后,nandflash 自動進入“讀狀態(tài)寄存器”模式。在這一模式下,當 re 和 ce 為 低電平時,系統(tǒng)就可以讀取狀態(tài)寄存器。系統(tǒng)可以通過檢測 r/b 的輸出,或讀狀 態(tài)寄存器狀態(tài)位(i/o6)來判斷內(nèi)部定稿是否結束。在器件進行內(nèi)部寫操作時,只有讀狀態(tài) 寄存器指令和復位指令會被響應。當頁寫入操作完成,應該檢測寫狀態(tài)位(i/o0)的電平。 內(nèi)部寫校驗只對 1 沒有成功地寫為 0 的情況進行檢測。指令寄存器始終保持著讀狀態(tài) 寄存器模式,直到其他有效的指令寫入指令寄存器為止。 nandflash 寫操作(寫 1page)如圖 3-12 所示: 圖 3-12 寫操作時序圖 寫操作流程如圖 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 湖北大學本科畢業(yè)論文(設計) - 12 - 圖 3-13 寫操作流程圖 寫操作時,首先向命令寄存器輸入 80h 寫指令,然后向地址寄存器輸入 3 周期的地址, 寫入指定的數(shù)據(jù)后,再向命令寄存器輸入 10h 以表示確認寫操作。根據(jù) r/b 口反饋給 44b0 的信號,可以判斷寫操作是否執(zhí)行完畢,通過讀狀態(tài)寄存器可以判斷寫入操作是否成 功。 這里有一點要補充的是,寫操作只能在一頁中進行,即可以開始在一頁的內(nèi)的任意一 個位置,但是結束的時候,一定要在這頁地址 527 字節(jié)前的任意一位,不可以寫循環(huán)后, 輸入確認指令 10h 時,現(xiàn)在的數(shù)據(jù)已經(jīng)進入到下一頁中去。另外,寫操作也可以通過 00h,01h,50h 加到寫操作開始指令 80h 前,以快速的確定寫入的地址,這樣大大增加了 nandflash 使用的靈活性。即 00h 時,從前半頁存儲區(qū)地址開始寫,01h 時,從后半頁存儲 區(qū)地址開始寫,50h 從擴展頁存儲區(qū)地址開始寫,而具體從各區(qū)域的哪個地址寫,又需要 在不輸入地址 3 周期中的第一周期(即列地址)中設置,但是不無論從哪個地址開始寫, 都必須在超過這頁的最后一位前輸入確定寫操作地址,即整頁的 527 字節(jié)地址。 3.2.3 塊擦除操作的設計 擦除操作是以塊為單位進行的。擦除的啟動指令為 60h,塊地址的輸入通過兩個時鐘 周期完成。這時只有地址位 a14 到 a24 是有效的,a9 到 a13 則被忽略。因為每一塊是有 32 頁組成的,而 a9 到 a13 正好是 5 位,也就是一個塊中,頁的地址,而擦除是對塊操作, 所以 a9 到 a13 則被忽略,即 a9 到 a16 的值為 11111000b 到 11111111b,對于塊操作時, 都是一樣的。塊地址載入之后是擦除確認指令 d0h,它用來初始化內(nèi)部探險操作。擦除確 認命令用來防止外部干擾產(chǎn)生擦除操作的意外情況。nandflash 檢測到擦除確認命令輸入后, 在 we 的上升沿啟動內(nèi)部寫控制器開始執(zhí)行擦除和擦除校驗。內(nèi)部擦除操作完成后,應該 檢測一下寫狀態(tài)位(i/o0) ,從而了解擦除操作是否有錯誤發(fā)生。 nandflash 塊擦除操作(擦除 1block)如圖 3-14 所示: 圖 3-14 塊擦除時序圖 湖北大學本科畢業(yè)論文(設計) - 13 - 塊擦除流程如圖 3-15 所示: 圖 3-15 塊擦除流程圖 塊擦除時,首先對命令寄存器寫入擦除命令 60h,然后向地址寄存器寫入 2 個周期的 塊地址,最后對命令寄存器寫入擦除確認命令 d0h,判斷 r/b 高低電平,以確定下一塊擦 除的操作進行。 對于擦除命令,一定要注意對忙信號的判斷,如果沒有正確的判斷,會使擦除只擦除 一部分,而沒有擦除的部分,在寫入數(shù)據(jù)的時候,由于 byte 位沒有拉高,而使寫入的數(shù)據(jù) 發(fā)生錯誤。 3.2.4 讀狀態(tài)寄存器的設計 k9f5608u0d 包含一個狀態(tài)寄存器,該寄存器反應了寫入或擦除操作是否完成,或?qū)?入和擦除操作是否無錯。寫入 70h 指令,啟動讀狀態(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”:在寫入/擦除中出錯 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 湖北大學本科畢業(yè)論文(設計) - 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”:準備好 i/o 7寫保護“0”:保護 “1”:未保護 nandflash 讀狀態(tài)寄存器操作如圖 3-16 所示: 圖 3-16:讀狀態(tài)寄存器時序圖 器件一旦接收到狀態(tài)寄存器的指令,它就將保持在狀態(tài)寄存器讀狀態(tài),直到有其它的 指令輸入。因此,如果在任意讀操作中采用了狀態(tài)寄存器讀操作,則在連續(xù)頁讀的過程中, 必須重發(fā) 00h 或 50h 指令。 3.2.5 讀器件 id 的設計 k9f5608u0d 器件具有一個產(chǎn)品鑒定識別碼(id) ,系統(tǒng)控制器可以讀出這個 id,從 而起到識別器件的作用。讀 id 的步驟是:寫入 90h 指令,然后寫入一個地址 00h。在兩個 讀周期下,廠商代碼和器件代碼將被連續(xù)輸出到 i/o 口。 同樣,一旦進入這種命令模式后,器件將保持這種命令狀態(tài),趕到接收到其他的指令 為止。 nandflash 讀取器件識別碼 id 操作如圖 3-17 所示: 湖北大學本科畢業(yè)論文(設計) - 15 - 圖 3-17:讀識別碼時序圖 其中制造商代碼為 0xec 即三星公司的代碼,器件代碼為 0x75,因此,k9f5608u0d 的 id 為 0xec75。如果在其它容量的三星 nandflash,如容量為 16mb 的 k9f52808r0d 的 id 則為 0xec35。 不同型號的代碼見表 3-3 所示: 表 3-3 器件代碼表 在實際的操作中,可以用此代碼在未對 nandflash 中存儲數(shù)據(jù)區(qū)操作的前題下,初步判 斷 nandflash 的好壞,或者是否存在焊接上的錯誤(如斷路,短路的情況判斷) 。 3.2.6 軟件復位功能設計 器件提供一個復位(reset)指令,通過向指令寄存器寫入 ffh 來完成對器件的復位。 當器件處于任意讀模式、寫入或者擦除模式的忙狀態(tài)時,發(fā)送復位指令可以使器件中止當 前的各種操作,正在被修改的存儲器宏單元的內(nèi)容不再有效,指令寄存器被清零并等待下 一條指令的到來。當 wp 為高時,狀態(tài)寄存器被清為 c0h。 3.2.7 一些通用的時序的設計 由于 nandflash 中,對每一個操作,都要先進行命令,再進行地址輸入,所以我們可以 輸入命令和輸入地址寫成相應該的子程序,以方便程序的調(diào)用。 指令鎖存操作如圖 3-18 所示: 湖北大學本科畢業(yè)論文(設計) - 16 - 圖 3-18 指令鎖存時序圖 地址鎖存操作如圖 3-19 所示: 圖 3-19 地址鎖存時序圖 數(shù)據(jù)寫入操作如圖 3-20 所示: 圖 3-20 數(shù)據(jù)寫入時序圖 湖北大學本科畢業(yè)論文(設計) - 17 - 數(shù)據(jù)讀出操作如圖 3-21 所示: 圖 3-21 數(shù)據(jù)讀出時序圖 由于操作 k9f5608u0d 的時序需要通過程序來模擬,因此就需要清楚地了解一些信號 之間的時序關系,編程時可以參考上面的時序圖。 3.3 nandflash 底層程序設計 3.3.1 相關的操作程序設計 nandflash 存儲器進行何種操作基本上是由 ce,cle,ale,re,we 5 條信號線的邏 輯電平?jīng)Q定的,而由于 re、we 已經(jīng)與 44b0 的 oe、we 相連接,所以在進行操作時, 44b0 會自己去對 re、we 操作,即讀一個 byte 時,44b0 的 oe 會自動對 nandflash 的 re 完成一次從高電平向低電平的轉變的過程。而同樣的,而寫一個 byte 的時候,44b0 的 we 會自動的對 nandflash 的 we 完成一次從低電平向高電平轉變的過程。所以在寫程 序的時候,不必對 we、re 的電平變換,通過軟件的方法模擬。而下面幾個函數(shù)模擬了根 據(jù)寫入指令、地址和讀寫數(shù)據(jù)時它們的時序條件,只需要對 ce,cle,ale 這三條信號 線所對應的 gpg1gpg3 進行控制即可。 接口宏定義: #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; 參考地址鎖存周期時序圖,當 ale 為高、cle 和 ce 為低時,將地址從數(shù)據(jù)口寫入 k9f5608u0d 的函數(shù)如下。 void nf_addr ( ) nf_ale_h();/ale 為高電平 nf_cle_l();/cle 為低電平 根據(jù)每次的時序圖,應該在一次開始前,給 nandflash 一個初始化動作,由每操作開始 時序圖可以得到: nf_init(void) nf_ce_h();/ce 為高電平失效 nf_cle_l();/cle 為低電平 nf_ale_l();/ale 為低電平 3.3.2 讀器件 id 碼子程序 根據(jù)讀器件 id 碼的時序圖,可以得到如下代碼: 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 中應用,在超級終端中,可以進有內(nèi)容的 nandflash 進行操作,先對 nandflash 進行讀 id 操作。然后先讀出一個地址的內(nèi)容,通過超級終端顯 示一頁的內(nèi)容。再將這一頁所在的塊擦除,再將其讀出,看是否已經(jīng)清除了。然后再對擦 除后的 nandflash 再寫入指定的數(shù)據(jù),再將其讀出,看是否和寫入的數(shù)據(jù)是相同的 4 試驗驗證與開發(fā)板的使用 4.1 通過 j-tag 下載 u-boot 首先將 j-tag 小板上面的短路冒拔插到 wiggler 插針上(板子上面有絲印標識) ,用 并口延長線連接 j-tag 小板到開發(fā)板 j-tag 接口電腦并口: 安裝好 flashpgm 軟件后,時行如圖 4-1 配置: 圖 4-1 j-tag 配置設置 點擊菜單 file_open 選擇,.ocd 文件。ocd 文件是一個硬件系統(tǒng)配置文件,設置了 cpu,flash 類型,flash 接口的位

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論