資料介紹
??達芬奇(Davinci)系列嵌入式處理器是TI公司的具有高速處理能力的新一代嵌入式設(shè)備[1],它同時具備了DSP和精簡指令級計算機技術(shù)的優(yōu)點。它集成了一個高性能的DSP核心與一個ARM9內(nèi)核,被廣泛應(yīng)用于嵌入式圖片、視頻處理中[2]。在Davinci平臺下,通常以ARM核為基礎(chǔ)構(gòu)建,但是目前經(jīng)常采用一片NOR Flash加上一片NAND Flash作為外部存儲設(shè)備,并且通常都是256 B/頁或者512 B/頁的小頁面NAND Flash,本文旨在只以一片2 KB/頁的大頁面NAND Flash(Samsung K9K8G08U0A)作為外部存儲設(shè)備、Davinci TMS320DM6446作為處理器的硬件結(jié)構(gòu)下,闡述構(gòu)建穩(wěn)定可靠的系統(tǒng)需要解決的問題。
??1 問題概述
??F是用來連接Flash、SRAM等多種存儲設(shè)備的外設(shè)端口。TMS320DM6446的EMIF端口支持每路32 MB總共4路可尋址的片選空間,支持8 bit以及16 bit的數(shù)據(jù)總線寬度,具有可編程的建立、選通以及保持時間,還具備NAND Flash ECC校驗數(shù)據(jù)生成功能等[5],因此可以方便靈活地與外部NAND Flash芯片通信。在本文的硬件系統(tǒng)中,即采用TMS320DM6446的EMIF的CS2空間與Samsung K9K8G08U0A NAND Flash相連。
??由于本系統(tǒng)只有一片NAND Flash作為外部的存儲設(shè)備,因此所有的引導(dǎo)程序、操作系統(tǒng)內(nèi)核以及根文件系統(tǒng)均需要存儲在這上面,系統(tǒng)也就需要從NAND Flash啟動。TMS320DM6446具有多種啟動方式,具體由哪種方式啟動,由系統(tǒng)復(fù)位時引腳BTSEL[1:0]電平?jīng)Q定,當BTSEL[1:0]被置為“01”時,TMS320DM6446的ARM核從EMIFA的EM_CS2存儲空間開始執(zhí)行(地址為0x0200 0000),這種情況下EMIF連接的是具有線性地址的非易失存儲器,通常是NOR Flash。當BTSEL[1:0]不為“01”時,TMS320DM6446內(nèi)部的ROM BOOT LOADER(簡稱RBL)開始運行,RBL再根據(jù)BTSEL[1:0]的不同值決定從何處加載用戶的引導(dǎo)程序UBL(USER BOOT LOADER)。當BTSEL[1:0]為“00”時,RBL將從連接到EMIF的CS2空間的NAND Flash中加載UBL。由于RBL的加載過程是將UBL拷貝到ARM的內(nèi)部RAM中,因此對于UBL的大小限制在14 KB以內(nèi),但是在嵌入式環(huán)境常用的U-BOOT、ViVi等的大小都遠超過這個限制,因此需要多級加載,一級引導(dǎo)程序主要做系統(tǒng)的初始化,然后將二級引導(dǎo)程序(在本系統(tǒng)中采用U-BOOT,本文后面提到的UBL均指一級引導(dǎo)程序)從NAND Flash中讀取到RAM中,然后啟動它,由U-BOOT負責(zé)操作系統(tǒng)的引導(dǎo)[4]。于是整個NAND Flash上系統(tǒng)構(gòu)建的關(guān)鍵問題包括如何移植UBL,以使其能夠正常初始化系統(tǒng),正常加載二級引導(dǎo)程序U-BOOT到RAM中,U-BOOT的移植使其滿足大頁面NAND Flash的讀寫要求以及裸機時引導(dǎo)程序的燒寫。
??2 UBL移植
??UBL為TI公司提供的對于Davinci系列處理器通過內(nèi)部的ROM BOOT LOADER啟動時的一級引導(dǎo)程序。其工作流程如圖1所示。
??
??UBL的移植主要針對本系統(tǒng)中硬件板的結(jié)構(gòu)修改系統(tǒng)初始化過程以及增加對Samsung K9K8G08U0A NAND Flash的支持,以下分別闡述。
??2.1 系統(tǒng)初始化
??2.1.1 設(shè)置CPU、DDR工作頻率
??TMS320DM6446具有兩路PLL,其中PLL1通過分頻供系統(tǒng)的主時鐘及大部分外設(shè)的時鐘,PLL2供DDR2使用。DSP時鐘頻率為SYSCLK1=27 MHz×(PLL1_PLLM+1),使用固定一分頻,本系統(tǒng)中DSP工作在正常頻率594 MHz,因此需設(shè)置PLL1_PLLM=21,即設(shè)置寄存器0x1C4 0910為21。
??本系統(tǒng)使用兩片K4T1G164QQ-HCE6 DDR2 SDRAM作為系統(tǒng)內(nèi)存,該芯片為DDR2 667芯片,時鐘頻率為333 MHz。TMS320DM6446中DDR2使用PLL2的PLLDIV2分頻作為時鐘頻率,計算公式為(27 MHz×(PLL2_PLLM+1))/(PLL2_PLLDIV2→RATIO+1)。因此設(shè)置PLL2_PLLM=23,PLL2_PLLDIV2→RATIO=1,PLL2_PLLDIV2的第15位為分頻允許位,應(yīng)置為1,所以PLL2_PLLDIV2為0x8001,即寄存器0x1C4 0D10=23,0x1C4 0D1C=0x8001。
??2.1.2 配置EMIF接口
??根據(jù)Samsung K9K8G08U0A NAND Flash的讀、寫時序要求,TMS320DM6446的EMIF用于與NAND Flash連接時,配置寄存器各字段值需滿足如下要求:
??RSETUP≥tCLR(m)/tCYC-1=0
??RSTORBE≥max((tREA(m)+tSU)/tCYC,tRP(m)/tcyc)-1=1.5
??R_SETUP+R_STROBE≥(tCEA(m)+tSU)/tcyc-1=2
??R_HOLD≥(tH-tCHZ(m))/tcyc-1=-4
??R_SETUP+R_STROBE+R_HOLD≥tRC(m)/tcyc-3=-0.5
??TA≥max((tCHZ(m))/tcyc,(tRHZ(m)-(R_HOLD+1)tcyc)/(tcyc))-1≥2
??W_SETUP≥max(tCLS(m)/tcyc,tALS(m)/tcyc,(tCS(m)/tcyc)-1=1
??W_STROBE≥tWP(m)/tcyc-1=0.2
??W_SETUP+W_STROBE≥tDS(m)/tcyc-1=0.2
??W_HOLD≥max((tCLH(m))/(tcyc),(tALH(m))/tcyc,(tCH(m))/(tcyc),(tDH(m))/(tcyc))-1=-0.5
??W_SETUP+W_STROBE+W_HOLD≥tWC(m)/(tcyc)-3=-0.5
??其中tSU是EMIF數(shù)據(jù)建立時間,取值5 ns,tH數(shù)據(jù)保持時間取0,EMFI時鐘為系統(tǒng)6分頻,所以tcyc=1/(27×(21+1)/6)≈10 ns,根據(jù)EMIF連接NAND的取值要求,設(shè)置EMIF CS2的配置寄存器值為0x842429c。
??2.2 支持Samsung K9K8G08U0A NAND Flash
??UBL通過數(shù)據(jù)結(jié)構(gòu)struct _NAND_DEV_STRUCT_來表示一個型號的NAND Flash,具有devID、numBlocks、pagesPerBlock、bytesPerPage幾個字段。通過struct _NAND_
??DEV_STRUCT_類型的數(shù)組gNandDevInfo[]來記錄所有支持的NAND Flash。UBL在從NAND Flash讀取數(shù)據(jù)之前,首先通過讀取設(shè)備號命令0x90得到NAND Flash的設(shè)備號,然后從數(shù)組gNandDevInfo[]中查找具有相同設(shè)備號的記錄,從而得到NAND Flash的詳細信息,以確定NAND Flash的讀方式。
??因此,需要UBL支持特定的NAND Flash,只需要將其信息添加到數(shù)組gNandDevInfo[]中即可。本系統(tǒng)中用到的Samsung K9K8G08U0A NAND Flash設(shè)備號為0xD3,具有8 192個存儲塊,每個塊具有64個頁面,每頁具有2 048 B數(shù)據(jù)存儲區(qū)域以及64 B的Spare區(qū)域,在數(shù)組gNandDevInfo[]中添加{0xD3,8192,64,2048+64}即可。
??3 U-BOOT移植
??本系統(tǒng)中使用的U-BOOT引導(dǎo)程序由TI公司提供的支持Davinci平臺以及NAND Flash啟動的U-BOOT1.1.3移植而來。
??3.1 NAND Flash讀寫時序
??U-BOOT1.1.3不支持2 KB/page的大頁面Flash,因此移植過程主要是增加NAND Flash的讀寫、擦除。2 KB頁面NAND Flash與普通讀寫擦除最主要的區(qū)別在于地址構(gòu)成不同,本系統(tǒng)中用到的Samsung K9K8G08U0A NAND Flash總共存儲空間1 GB=230,每頁大小為2 KB=211,因此總的地址長度30 bit,從A0~A29,頁地址長度為11 bit,從A0~A10,本系統(tǒng)采用8 bit的地址數(shù)據(jù)寬度連接NAND Flash,頁地址和塊地址需要分不同的地址周期,因此NAND的地址需要5個周期送出,前兩個周期為頁地址,依次為地址的A0~A7、A8~A10,后三個周期為塊地址,依次為地址的A11~A18、A19~A26、A27~A29,頁地址和塊地址的最后一個周期不足8位,不足的高位均為0。
??Samsung K9K8G08U0A的讀過程如下:寫0x00命令、分5個周期寫地址、寫0x30命令、讀數(shù)據(jù)、根據(jù)讀出的數(shù)據(jù)生成ECC校驗數(shù)據(jù)、生成的ECC數(shù)據(jù)與讀出的ECC數(shù)據(jù)比對以確定數(shù)據(jù)是否有誤以及能否校正。
??寫過程如下:寫0x80命令、分5個地址周期寫地址、送出數(shù)據(jù)(包括ECC校驗數(shù)據(jù))、寫0x10命令、讀取狀態(tài)直到busy信號無效、檢查是否出現(xiàn)寫錯誤。
??擦除過程如下:寫0x60命令、分三個地址周期寫塊地址、寫0xD0命令、讀取狀態(tài)直到busy信號無效、檢查是否出現(xiàn)擦除錯誤。
??3.2 YAFFS2文件系統(tǒng)燒寫
??YAFFS2鏡像燒寫與U-BOOT下普通寫NAND Flash區(qū)別在于spare區(qū)域的數(shù)據(jù)不需要程序根據(jù)數(shù)據(jù)存儲區(qū)的數(shù)據(jù)生成,spare區(qū)域的數(shù)據(jù)在制作YAFFS2鏡像時,已經(jīng)由鏡像制作工具生成并寫入了鏡像文件。因此在nand命令的write中增加.yaffs2選項,當使用nand write.yaffs2命令時,直接從指定地址中讀出2 048 B/頁數(shù)據(jù)以及數(shù)據(jù)后緊跟的64 B的spare區(qū)域數(shù)據(jù),并將其寫入NAND Flash中。
??U-BOOT在Flash的讀寫過程中需要檢查壞塊情況,在開始讀寫每個塊的時候首先檢查該塊第一頁以及第二頁的spare區(qū)域的第一個數(shù)據(jù)是否為0xFF,如果不為0xFF則當前塊為壞塊,需要跳過它。
下載該資料的人也在下載
下載該資料的人還在閱讀
更多 >
- DM368 NAND Flash啟動揭秘
- 打開NAND Flash接口規(guī)范 0次下載
- Nand Flash工作原理
- SPI Nand Flash簡介
- BCH編解碼器在NAND Flash主控中的研究與優(yōu)化實現(xiàn)
- NAND Flash主機接口控制器技術(shù)研究
- 基于頁合并更新的NAND Flash垃圾回收算法研究
- Nand Flash文件系統(tǒng)解決方案
- NAND Flash嵌入式存儲系統(tǒng)結(jié)構(gòu)資料下載
- 傳感器系統(tǒng)的構(gòu)建與設(shè)計技巧資料下載
- NAND Flash控制器的設(shè)計與驗證 19次下載
- Hynix NAND flash型號指南 25次下載
- Allwinner Technology Nand Flash Support List 2次下載
- NAND_Flash結(jié)構(gòu)與驅(qū)動分析 37次下載
- NAND FLASH在WINCENET系統(tǒng)中的應(yīng)用設(shè)計 2次下載
- 深入了解SD NAND Flash接口 481次閱讀
- NAND Flash和NOR Flash的區(qū)別 1957次閱讀
- 一文了解SPI NAND Flash和SPI NOR Flash的區(qū)別 6324次閱讀
- NAND FLASH驅(qū)動程序?qū)崿F(xiàn)的三個具體方面分析 2866次閱讀
- STM32單片機對NAND Flash的讀寫以及在ASF中的使用 1.4w次閱讀
- 淺談EEPROM和flash的區(qū)別 及 nor flash和nand flash 2.4w次閱讀
- 淺析FLASH讀寫----SPI原理及應(yīng)用 2.3w次閱讀
- SPI flash如何運行程序,SPI flash有哪些應(yīng)用 1.8w次閱讀
- Uboot下關(guān)于Nor Flash的驅(qū)動問題 7297次閱讀
- nand和nor區(qū)別 Linux-Nor Flash驅(qū)動分析 9794次閱讀
- SPI flash是什么,關(guān)于SPI FLASH的讀寫問題 10.3w次閱讀
- DRAM、NAND FLASH、NOR FLASH三大存儲器分析 11.1w次閱讀
- 指定了SDRAM卻燒寫到了Nand flash的詳細分析 7565次閱讀
- 基于NAND Flash的閃存轉(zhuǎn)譯層設(shè)計 2115次閱讀
- NAND FALSH的原理及應(yīng)用介紹 4399次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數(shù)據(jù)手冊
- 1.06 MB | 532次下載 | 免費
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費
- 3TC358743XBG評估板參考手冊
- 1.36 MB | 330次下載 | 免費
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費
- 5元宇宙深度解析—未來的未來-風(fēng)口還是泡沫
- 6.40 MB | 227次下載 | 免費
- 6迪文DGUS開發(fā)指南
- 31.67 MB | 194次下載 | 免費
- 7元宇宙底層硬件系列報告
- 13.42 MB | 182次下載 | 免費
- 8FP5207XR-G1中文應(yīng)用手冊
- 1.09 MB | 178次下載 | 免費
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 2555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33566次下載 | 免費
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費
- 4開關(guān)電源設(shè)計實例指南
- 未知 | 21549次下載 | 免費
- 5電氣工程師手冊免費下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費
- 6數(shù)字電路基礎(chǔ)pdf(下載)
- 未知 | 13750次下載 | 免費
- 7電子制作實例集錦 下載
- 未知 | 8113次下載 | 免費
- 8《LED驅(qū)動電路設(shè)計》 溫德爾著
- 0.00 MB | 6656次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537798次下載 | 免費
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費
- 6電路仿真軟件multisim 10.0免費下載
- 340992 | 191187次下載 | 免費
- 7十天學(xué)會AVR單片機與C語言視頻教程 下載
- 158M | 183279次下載 | 免費
- 8proe5.0野火版下載(中文版免費下載)
- 未知 | 138040次下載 | 免費
評論
查看更多