當(dāng)前位置:首頁 > 電源 > 數(shù)字電源
[導(dǎo)讀]1 引言 在DSP系統(tǒng)的設(shè)計(jì)中,經(jīng)常要使用片外存儲器擴(kuò)充系統(tǒng)存儲空間。特別是當(dāng)DSP的片內(nèi)數(shù)據(jù)存儲器和程序存儲器容量比較小時, 必須把一部分?jǐn)?shù)據(jù),如常量、原始數(shù)據(jù)庫等存儲到片外的存儲器中,從而節(jié)省DSP芯片內(nèi)部

1 引言

DSP系統(tǒng)的設(shè)計(jì)中,經(jīng)常要使用片外存儲器擴(kuò)充系統(tǒng)存儲空間。特別是當(dāng)DSP的片內(nèi)數(shù)據(jù)存儲器和程序存儲器容量比較小時, 必須把一部分?jǐn)?shù)據(jù),如常量、原始數(shù)據(jù)庫等存儲到片外的存儲器中,從而節(jié)省DSP芯片內(nèi)部的存儲器資源。在實(shí)際應(yīng)用中,片外存儲器通常選擇RAM或FLASH MEMORY。RAM數(shù)據(jù)掉電即丟失,不適合長期保存數(shù)據(jù)。對于一些無需頻繁讀寫但需要長期保存的數(shù)據(jù),如字模數(shù)據(jù)、端口地址等時,通常選擇片外FLASH作偽擴(kuò)展的數(shù)據(jù)存儲器。使用片外 FLASH必須要解決對其擦寫的問題。

在實(shí)際應(yīng)用中,對片外FLASH的擦寫有兩種方式:一是使用通用編程器對FLASH芯片進(jìn)行擦寫;二是直接由DSP對FLASH進(jìn)行擦寫。對于需要修改或已安裝在電路板上的FLASH芯片無法使用第一種方式,只能采用第二種方式,且便于調(diào)試。本文介紹一種利用存儲器映射技術(shù)實(shí)現(xiàn)對DSP片外FLASH擦寫的方法。

DSP56F805芯片是Motorola公司在DSP56800 的基礎(chǔ)上開發(fā)的系列DSP芯片之一。該芯片采用先進(jìn)的修正哈佛結(jié)構(gòu),三個內(nèi)部地址總線和四個內(nèi)部數(shù)據(jù)總線支持?jǐn)?shù)據(jù)傳輸;采用MCU形式的指令集,尋址方式靈活;具有較強(qiáng)的片外存儲空間擴(kuò)展能力;功耗小,高度并行。但是該芯片的片內(nèi)數(shù)據(jù)存儲器空間最大為64k,程序存儲空間尋址范圍是64k,內(nèi)部模式(Mode0A和Mode0B)下只有31.5k。對于一些需要復(fù)雜中文圖形用戶界面的 DSP系統(tǒng)來說芯片存儲資源顯得不夠,必須對芯片存儲空間進(jìn)行擴(kuò)展??紤]到具體要求,本文使用片外FLASH來擴(kuò)展系統(tǒng)數(shù)據(jù)存儲空間,將DSP系統(tǒng)的中文圖形用戶界面中用到的所有字模數(shù)據(jù)和頁面內(nèi)容數(shù)據(jù)存放到片外FLASH中,大大節(jié)省了片內(nèi)的數(shù)據(jù)存儲器空間。

CodeWarrior IDE是由Metrowerks公司專為Motorola的DSP56800系列設(shè)計(jì)的開發(fā)平臺。該平臺具有簡單明了的圖形用戶界面和豐富的軟件開發(fā)工具,適合于開發(fā)基于DSP56800系列的應(yīng)用程序、插件程序等各種程序代碼。在CodeWarrior環(huán)境中,用戶可以通過修改.cmd文件來配置存儲器分配方式,還可以通過修改startup文件夾中的初始化程序來控制系統(tǒng)的初始化操作。用戶編譯并鏈接后,將生成.elf文件,在文件中可以看到存儲器的詳細(xì)分配情況。當(dāng)用戶將程序下載到DSP芯片后,可以使用CodeWarrior的調(diào)試器對程序進(jìn)行全面的調(diào)試,如設(shè)置斷點(diǎn)、單步執(zhí)行等;也可以使用 Watch Memory指令來檢查存儲器中的各地址段的值,還可以使用Save/Load Memory指令來保存或是載入某段存儲器的值。

2 方法介紹

首先利用GPIOD0口生成合適的片外FLASH和片內(nèi)XRAM片選信號,實(shí)現(xiàn)片內(nèi)XRAM和片外FLASH的訪問切換。例如當(dāng)GPIOD0 =0時,0x8000~0xFFFF映射到片內(nèi)XRAM,此時對于整個0x0000~0xFFFF地址范圍的讀寫操作就是對于片內(nèi) XRAM的操作;當(dāng)GPIOD0=1時,0x8000~0xFFFF地址范圍映射到數(shù)據(jù)FLASH,則對0x8000~0xFFFF 地址范圍的讀寫操作就是對于片外FLASH的操作;對0x0000~0x7FFF地址范圍的讀寫仍是針對片內(nèi) XRAM的操作,從而將數(shù)據(jù)存儲空間擴(kuò)展了32k。

再將映射方式設(shè)置為片內(nèi),將需要寫到FLASH中的數(shù)據(jù)文件載入片內(nèi)XRAM。最后根據(jù)需要設(shè)置GPIO端口值,切換地址映射的存儲器。這樣通過地址映射的方法,便可實(shí)現(xiàn)將XRAM中數(shù)據(jù)寫入片外FLASH的操作,而對于DSP芯片來說只是進(jìn)行了其XRAM尋址空間內(nèi)部的數(shù)據(jù)搬移操作。

假設(shè)要將一組二維數(shù)組character[180][32]形式的字模數(shù)據(jù)保存入片外數(shù)據(jù)FLASH的0x8000~0xA000地址段中,先做以下準(zhǔn)備工作:

①用一個GPIO端口,擴(kuò)展系統(tǒng)的可尋址數(shù)據(jù)存儲器空間;②編寫FLASH擦寫程序,程序流程如圖1所示。

#define N 100 /* 由于FLASH與RAM的讀寫速度不同,所以需要在每項(xiàng)操作后加入若干個延遲以保證正確性,延遲的具體長短可以根據(jù)具體情況作調(diào)整 */


void main()
{
unsigned int i,code;
unsigned int *code_addr;
unsigned int *flash_addr;
*GPIO_D_DR=0x0002; /*映射方式設(shè)置為映射到片外數(shù)據(jù)FLASH*/
delay(N);
GPIOD_setup(); /*GPIOD設(shè)置*/
delay(N);
erase_flash(); /*如FLASH上原有數(shù)據(jù)無需保留,則全部擦除,如部分據(jù)需保留,也可部分擦除*/

*GPIO_D_DR=0x0000; /*映射方式設(shè)置為映射到片內(nèi)XRAM*/ delay(N);
flash_addr=(unsigned int *) FLASH_ADDR;
code_addr=(unsigned int *)CODE_ADDR; /*設(shè)置XRAM的存儲起始地址和數(shù)據(jù)FLASH擦寫起始地址*/

/*循環(huán)擦寫*/
for(i=0;i{
*GPIO_D_DR=0x0000;
delay(N);
code=*(code_addr++); /*保存XRAM中數(shù)據(jù)到變量code*/
delay(N);
*GPIO_D_DR=0x0002;
delay(N);
pre_write_flash(); /* 寫FLASH前的預(yù)處理,向FLASH內(nèi)寫入相應(yīng)命令字,根據(jù)所選用 FLASH的不同預(yù)處理操作也有所不同*/
delay(N);
*(flash_addr++)=code; /*寫數(shù)據(jù)到FLASH中*/
delay(N);
}
}
[!--empirenews.page--]

擦寫步驟如下:
① 將character[180][32]設(shè)置為全局變量。

② 將程序編譯下載到DSP芯片中,打開工程目錄中output文件夾中的.elf文件,找到character 數(shù)組在XRAM中存放的起始地址和長度。用戶可以使用Watch Memory命令察看該段地址的數(shù)據(jù)值。

③ 使用Save Memory命令將XRAM中對應(yīng)于character數(shù)組的地址段的數(shù)據(jù)以二進(jìn)制形式保存在計(jì)算機(jī)上。通過UltraEdit將其打開,檢看數(shù)據(jù)保存是否正確。

④ 打開FLASH擦寫程序,修改數(shù)據(jù)在片內(nèi)XRAM中存儲的起始地址和FLASH的擦寫起始地址與數(shù)據(jù)長度。編譯下載后,單步執(zhí)行,執(zhí)行到擦除完FLASH,并將地址映射方式置為映射到片內(nèi)XRAM處,使用Load Memory指令將char數(shù)據(jù)文件載入到片內(nèi)XRAM的相應(yīng)存儲地址段中,再接著全速運(yùn)行程序,幾十秒之后程序執(zhí)行完畢,數(shù)據(jù)便寫到片外FLASH的相應(yīng)地址中。

⑤ 再次打開FLASH擦寫程序,單步執(zhí)行到映射方式置為片外FLASH處停止,使用Save Memory命令保存FLASH中剛寫入的地址段的數(shù)據(jù)值。接著使用UltraEdit的比較文件命令比較前兩次保存的數(shù)據(jù),如完全相同就表明character字模數(shù)組已經(jīng)正確的寫到片外FLASH中。

將數(shù)據(jù)擦寫入片外數(shù)據(jù)FLASH后,就可以在用戶程序中對該數(shù)據(jù)加以調(diào)用。在調(diào)用的時候要先將映射方式設(shè)置為映射到片外FLASH,然后再取數(shù)據(jù)。如下所示,取出FLASH中0x6000地址上存儲的數(shù)據(jù):

#define FLASH_ADD (unsigned int *)0x6000
*GPIO_D_DR=0x0002; /*映射方式設(shè)置為映射到片外FLASH*/
data = *(FLASH_ADD);

3 結(jié)論

本文介紹了一種通過地址映射方式,在基于 DSP的嵌入式系統(tǒng)中,通過DSP擦寫片外FLASH的方法。該方法可適用于多種場合,針對多個 FLASH芯片可使用多個GPIO端口進(jìn)行地址的擴(kuò)展,并可通過DSP實(shí)現(xiàn)對其擦寫操作;若將部分程序放置到片外FLASH中并作相應(yīng)設(shè)置,即可實(shí)現(xiàn)系統(tǒng)的自舉運(yùn)行等。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險,如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運(yùn)營商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學(xué)會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團(tuán))股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉