![用存儲器映射的方法實現(xiàn)片外FLASH的擦寫_第1頁](http://file4.renrendoc.com/view/e002a6c80437b717b9eb011c2ef28379/e002a6c80437b717b9eb011c2ef283791.gif)
![用存儲器映射的方法實現(xiàn)片外FLASH的擦寫_第2頁](http://file4.renrendoc.com/view/e002a6c80437b717b9eb011c2ef28379/e002a6c80437b717b9eb011c2ef283792.gif)
![用存儲器映射的方法實現(xiàn)片外FLASH的擦寫_第3頁](http://file4.renrendoc.com/view/e002a6c80437b717b9eb011c2ef28379/e002a6c80437b717b9eb011c2ef283793.gif)
![用存儲器映射的方法實現(xiàn)片外FLASH的擦寫_第4頁](http://file4.renrendoc.com/view/e002a6c80437b717b9eb011c2ef28379/e002a6c80437b717b9eb011c2ef283794.gif)
下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、用存儲器映射的方法實現(xiàn)片外FLASH的擦寫 1引言在DSP系統(tǒng)的設計中,經(jīng)常要使用片外存儲器擴充系統(tǒng)存儲空間。特別是當DSP的片內(nèi)數(shù) 據(jù)存儲器和程序存儲器容量比較小時,必須把一部分數(shù)據(jù),如常量、原始數(shù)據(jù)庫等存儲到片 外的存儲器中,從而節(jié)省DSP芯片內(nèi)部的存儲器資源。在實際應用中,片外存儲器通常選 擇RAM或FLASH MEMORY。RAM數(shù)據(jù)掉電即丟失,不適合長期保存數(shù)據(jù)。對于一些無 需頻繁讀寫但需要長期保存的數(shù)據(jù),如字模數(shù)據(jù)、端口地址等時,通常選擇片外FLASH作 偽擴展的數(shù)據(jù)存儲器。使用片外FLASH必須要解決對其擦寫的問題。在實際應用中,對片外FLASH的擦寫有兩種方式:一是使用通用編程
2、器對FLASH芯片進 行擦寫;二是直接由DSP對FLASH進行擦寫。對于需要修改或已安裝在電路板上的FLASH 芯片無法使用第一種方式,只能采用第二種方式,且便于調(diào)試。本文介紹一種利用存儲器 映射技術實現(xiàn)對DSP片外FLASH擦寫的方法。DSP56F805芯片是Motorola公司在DSP56800的基礎上開發(fā)的系列DSP芯片之一。該芯片 采用先進的修正哈佛結構,三個內(nèi)部地址總線和四個內(nèi)部數(shù)據(jù)總線支持數(shù)據(jù)傳輸;采用MCU 形式的指令集,尋址方式靈活;具有較強的片外存儲空間擴展能力;功耗小,高度并行。 但是該芯片的片內(nèi)數(shù)據(jù)存儲器空間最大為64k,程序存儲空間尋址范圍是64k,內(nèi)部模式 (Mode
3、0A和Mode0B)下只有31.5k。對于一些需要復雜中文圖形用戶界面的DSP系統(tǒng)來 說芯片存儲資源顯得不夠,必須對芯片存儲空間進行擴展??紤]到具體要求,本文使用片外 FLASH來擴展系統(tǒng)數(shù)據(jù)存儲空間,將DSP系統(tǒng)的中文圖形用戶界面中用到的所有字模數(shù) 據(jù)和頁面內(nèi)容數(shù)據(jù)存放到片外FLASH中,大大節(jié)省了片內(nèi)的數(shù)據(jù)存儲器空間。CodeWarrior IDE是由Metrowerks公司專為Motorola的DSP56800系列設計的開發(fā)平臺。該 平臺具有簡單明了的圖形用戶界面和豐富的軟件開發(fā)工具,適合于開發(fā)基于DSP56800系 列的應用程序、插件程序等各種程序代碼。在CodeWarrior環(huán)境中,
4、用戶可以通過修改.cmd 文件來配置存儲器分配方式,還可以通過修改startup文件夾中的初始化程序來控制系統(tǒng)的 初始化操作。用戶編譯并鏈接后,將生成.elf文件,在文件中可以看到存儲器的詳細分配 情況。當用戶將程序下載到DSP芯片后,可以使用CodeWarrior的調(diào)試器對程序進行全面的 調(diào)試,如設置斷點、單步執(zhí)行等;也可以使用Watch Memory指令來檢查存儲器中的各地址 段的值,還可以使用Save/Load Memory指令來保存或是載入某段存儲器的值。2方法介紹首先利用GPIOD0 口生成合適的片外FLASH和片內(nèi)XRAM片選信號,實現(xiàn)片內(nèi)XRAM 和片外FLASH的訪問切換。例如
5、當GPIOD0 =0時,0 x80000 xFFFF映射到片內(nèi)XRAM, 此時對于整個0 x00000 xFFFF地址范圍的讀寫操作就是對于片內(nèi) XRAM的操作;當 GPIOD0= 1時,0 x80000 xFFFF地址范圍映射到數(shù)據(jù)FLASH,則對0 x80000 xFFFF地址 范圍的讀寫操作就是對于片外FLASH的操作;對0 x00000 x7FFF地址范圍的讀寫仍是針 對片內(nèi)XRAM的操作,從而將數(shù)據(jù)存儲空間擴展了 32k。再將映射方式設置為片內(nèi),將需要寫到FLASH中的數(shù)據(jù)文件載入片內(nèi)XRAM。最后根據(jù) 需要設置GPIO端口值,切換地址映射的存儲器。這樣通過地址映射的方法,便可實現(xiàn)將
6、 XRAM中數(shù)據(jù)寫入片外FLASH的操作,而對于DSP芯片來 說只是進行了其XRAM尋址空間內(nèi)部的數(shù)據(jù)搬移操作。假設要將一組二維數(shù)組character18032形式的字模數(shù)據(jù)保存入片外數(shù)據(jù)FLASH的0 x80000 xA000地址段中,先做以下準備工作:用一個GPIO端口,擴展系統(tǒng)的可尋址數(shù)據(jù)存儲器空間;洌寫FLASH擦寫程序,程序 流程如圖1所示。#define N 100 /*由于FLASH與RAM的讀寫速度不同,所以需要在每項操作后加入若干個 延遲以保證正確性,延遲的具體長短可以根據(jù)具體情況作調(diào)整*/void main()unsigned int i,code;unsigned int
7、 *code_addr;unsigned int *flash_addr;*GPIO_D_DR=0 x0002; /*映射方式設置為映射到片外數(shù)據(jù)FLASH*/delay(N);GPIOD_setup(); /*GPIOD 設置*/delay(N);erase_flash(); /*如FLASH上原有數(shù)據(jù)無需保留,則全部擦除,如部分據(jù)需保留,也可部分 擦除*/*GPIO_D_DR=0 x0000; /*映射方式設置為映射到片內(nèi)XRAM*/delay(N);flash_addr=(unsigned int *) FLASH_ADDR;code_addr=(unsigned int *)CODE_
8、ADDR; /*設置 XRAM 的存儲起始地址和數(shù)據(jù) FLASH 擦寫 起始地址*/*循環(huán)擦寫*/for(i=0;i(*GPIO_D_DR=0 x0000;delay(N);code=*(code_addr+); /*保存 XRAM 中數(shù)據(jù)到變量 code*/delay(N);*GPIO_D_DR=0 x0002;delay(N);pre_write_flash(); /*寫FLASH前的預處理,向FLASH內(nèi)寫入相應命令字,根據(jù)所選用 FLASH的不同預處理操作也有所不同*/delay(N);*(flash_addr+)=code; /*寫數(shù)據(jù)到 FLASH 中*/delay(N);)擦寫步
9、驟如下:將character18032設置為全局變量。將程序編譯下載到DSP芯片中,打開工程目錄中output文件夾中的.elf文件,找到 charAacAter數(shù)組在XRAM中存放的起始地址和長度。用戶可以使用Watch Memory命令察 看該段地址的數(shù)據(jù)值。使用Save Memory命令將XRAM中對應于character數(shù)組的地址段的數(shù)據(jù)以二進制形式 保存在計算機上。通過UltraEdit將其打開,檢看數(shù)據(jù)保存是否正確。打開FLASH擦寫程序,修改數(shù)據(jù)在片內(nèi)XRAM中存儲的起始地址和FLASH的擦寫起 始地址與數(shù)據(jù)長度。編譯下載后,單步執(zhí)行,執(zhí)行到擦除完FLASH,并將地址映射方式置
10、為映射到片內(nèi)XRAM處,使用Load Memory指令將char數(shù)據(jù)文件載入到片內(nèi)XRAM的相 應存儲地址段中,再接著全速運行程序,幾十秒之后程序執(zhí)行完畢,數(shù)據(jù)便寫到片外FLASH 的相應地址中。再次打開FLASH擦寫程序,單步執(zhí)行到映射方式置為片外FLASH處停止,使用Save MemAoAry命令保存FLASH中剛寫入的地址段的數(shù)據(jù)值。接著使用UltraEdit的比較文件 命令比較前兩次保存的數(shù)據(jù),如完全相同就表明character字模數(shù)組已經(jīng)正確的寫到片外 FLASH 中。將數(shù)據(jù)擦寫入片外數(shù)據(jù)FLASH后,就可以在用戶程序中對該數(shù)據(jù)加以調(diào)用。在調(diào)用的時候 要先將映射方式設置為映射到片外FLASH,然后再取數(shù)據(jù)。如下所示,取出FLASH中0 x6000 地址上存儲的數(shù)據(jù):#define FLASH_ADD (unsigned int *)0 x6000*GPIO_D_DR=0 x0002; /*映射方式設置為映射到片外FLASH*/data
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 環(huán)保視角下的電子設備制造與脫模劑應用分析報告
- 2025年片仔癀茵膽平肝膠囊行業(yè)深度研究分析報告
- 2025年書柜項目可行性研究報告
- 2025年浸漬膠膜飾面紙行業(yè)深度研究分析報告
- 無線紅外報警系統(tǒng)產(chǎn)品行業(yè)深度研究報告
- 救生設備行業(yè)深度研究報告
- 中國昆山市服裝市場運營趨勢分析及投資潛力研究報告
- 2025年WAF市場調(diào)研報告
- 2025年燈飾五金行業(yè)深度研究分析報告
- 中龍骨行業(yè)行業(yè)發(fā)展趨勢及投資戰(zhàn)略研究分析報告
- 2022注冊電氣工程師專業(yè)考試規(guī)范清單匯總
- 一年級寫字下學期課件(PPT 38頁)
- 怎樣處理課堂突發(fā)事件
- 桂花-作文ppt-PPT課件(共14張)
- 高一數(shù)學概率部分知識點總結及典型例題解析 新課標 人教版 必修
- 鐵路運費計算方法
- 《小腦梗死護理查房》
- 免疫及炎癥相關信號通路
- 某風電場設備材料設備清單
- —橋梁專業(yè)施工圖設計審查要(終)
- 德龍自卸車合格證掃描件(原圖)
評論
0/150
提交評論