<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 基于 DSP的嵌入式系統通過(guò)地址映射方式實(shí)現片外FLASH擦寫(xiě)

基于 DSP的嵌入式系統通過(guò)地址映射方式實(shí)現片外FLASH擦寫(xiě)

作者: 時(shí)間:2010-12-12 來(lái)源:網(wǎng)絡(luò ) 收藏

1 引言

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

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

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

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

2 方法介紹

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

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

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

①用一個(gè)GPIO端口,擴展系統的可尋址數據存儲器空間;②編寫(xiě)FLASH擦寫(xiě)程序,程序流程如圖1所示。

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

本文引用地址:http://dyxdggzs.com/article/151235.htm

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

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

/*循環(huán)擦寫(xiě)*/
for(i=0;i{
*GPIO_D_DR=0x0000;
delay(N);
code=*(code_addr++); /*保存XRAM中數據到變量code*/
delay(N);
*GPIO_D_DR=0x0002;
delay(N);
pre_write_flash(); /* 寫(xiě)FLASH前的預處理,向FLASH內寫(xiě)入相應命令字,根據所選用 FLASH的不同預處理操作也有所不同*/
delay(N);
*(flash_addr++)=code; /*寫(xiě)數據到FLASH中*/
delay(N);
}
}
linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)

上一頁(yè) 1 2 下一頁(yè)

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>