程序猿必需:如何簡化DSP自動加載過程及程序燒寫?
發布時間:2015-03-15 責任編輯:sherryyu
【導讀】如何簡化DSP自動加載過程及程序燒寫?本文采用的燒寫方法不需要格式轉換到外部輔助設備,同時DSP程序不再進行二次加載,簡化了燒寫及程序自動加載的過程。
TMS320C6701(以下簡稱C6701)是一款浮點運算DSP,適用於需要大量運算且實時性要求高的場合,如導航解算等。在浮點DSP芯片中,C6701是一款可應用於惡劣環境並具有高可靠性的產品,因此該型DSP芯片雖然推出較早,卻依然在某些領域具有重要應用價值。
DSP應用程序需脫離開發係統獨立工作,在實時DSP應用係統中,通常將應用程序存儲在外部非易失性存儲器(如FLASH、EEPROM、PROM等)中。係統上電後,DSP將外部程序存儲器的程序代碼加載到可高速存取的RAM中,加載完成後自動跳轉到零地址開始運行。因此DSP程序燒寫及自動加載是實時DSP係統設計的重要部分。本文采用的燒寫方法不需要格式轉換到外部輔助設備,同時DSP程序不再進行二次加載,簡化了燒寫及程序自動加載的過程。
1 加載方案及電路設計
1.1 外圍電路設計
C6701有三種加載模式:不加載(No Boot)、ROM加載(Rom Boot)、主機加載(Host Boot)。這三種加載模式由C6701的BOOTMODE[4:0]引腳電平設定,由這5個引腳的設置共同決定使用何種存儲空間映射模式。
在惡劣環境及高可靠應用場合中,可使用不加載方式,也可使用程序從ROM中加載到DSP片外高可靠RAM存儲器中的運行方式。FLASH、EEPROM、PROM等程序存儲芯片多為8位或16位,在高可靠應用環境中8位比較常見。本文中設置BOOTMODE[4:0]為01010B,即程序由外部8位程序存儲器加載到外部32位SRAM中,LENDIAN引腳接高電平。
外部程序存儲器選用FLASH芯片AM29LV160,32位SRAM芯片選用ACT—S512K32V。FLASH和SRAM芯片與C6701的硬件連接如圖1和圖2所示。

圖1 DSP與8位FLASH芯片接口示意圖

圖2 DSP與32位SRAM芯片接口示意圖
1.2 加載方案設計
在BOOTMODE[4:0]為01010B的設置下,程序由外部8位程序存儲器加載到外部32位SRAM中。C6701具體加載過程為:DMA按默認時序從CE1地址(0x01000000)複製64 KB到零起始地址外部SRAM芯片中,加載完成後,從零地址處開始執行。C6701加載過程與C6713稍有不同,C6713隻複製1 KB到零起始地址。64 KB應用程序可以滿足部分應用需求,本例中應用程序小於64 KB,C6701的DMA自動加載即可滿足要求。當應用程序大於64 KB時,開發人員需要在前64 KB中編寫將DSP應用程序從外部ROM搬移到指定存儲空間的二級引導程序,詳細過程可參考文獻。
[page]
2 DSP應用程序設計
一個C語言工程通常包括.c文件、.cmd文件、.asm文件、.h文件和.lib文件。其中.cmd文(wen)件(jian)既(ji)是(shi)內(nei)存(cun)定(ding)位(wei)文(wen)件(jian),又(you)是(shi)鏈(lian)接(jie)器(qi)命(ming)令(ling)文(wen)件(jian),在(zai)鏈(lian)接(jie)過(guo)程(cheng)中(zhong)起(qi)著(zhe)重(zhong)要(yao)作(zuo)用(yong)。鏈(lian)接(jie)時(shi),鏈(lian)接(jie)器(qi)把(ba)所(suo)有(you)目(mu)標(biao)文(wen)件(jian)中(zhong)的(de)同(tong)名(ming)段(duan)合(he)並(bing),並(bing)按(an)鏈(lian)接(jie)器(qi)命(ming)令(ling)文(wen)件(jian)給(gei)各(ge)段(duan)分(fen)配(pei)地(di)址(zhi)。中(zhong)斷(duan)向(xiang)量(liang)表(biao)決(jue)定(ding)加(jia)載(zai)完(wan)成(cheng)後(hou)的(de)C語言程序入口,通常中斷向量表用.asm文件實現。.cmd文件和中斷向量表的編寫是決定DSP程序加載成功與否的關鍵和難點。
2.1 .cmd文件設計
.cmd文件的作用是實現應用程序和數據在DSP映射存儲空間中的定位,存儲空間的分配與硬件設計密切相關。本文BOOTMODE[4:0]為01010B,即存儲空間為MAP0映射模式,由CE0片選的RAM空間起始地址為0x00000000,由CE1片選的FLASH空間起始地址為0x01000000,用戶程序小於64KB。.cmd文件如下:

2.2 中斷向量表設計
本文中斷向量表如下:

上電或複位完成後,DMA按默認時序從CE1地址複製64 KB到零起始地址處,加載完成後,DSP從零地址開始執行。本文中斷向量表從程序空間0地址開始存放,每個中斷向量8個字節,總計大小為0x200字節。加載完成後程序從0地址開始執行,直接跳轉到DSP主程序入口~c_int 00處。
[page]
3 燒寫程序設計
應用程序編寫完成後,需要將程序燒寫到程序存儲器中。程序燒寫主要有以下幾種方法:
①采用通用燒寫器進行燒寫;
②使用CCS中自帶FlashBurn工具燒寫;
③用戶自己編寫燒寫程序,由DSP將加載到片上的應用程序燒寫到程序存儲器中。
使用通用燒寫器燒寫時,需要程序存儲器為可插拔的,這樣給設計帶來不便。FlashBurn支持的存儲器種類有限,對於使用國產存儲器芯片的場合不一定合適,另外FlashBurn不能識別目標文件,需要將目標文件轉換為二進製文件後才可燒寫。
采用用戶自己編寫燒寫程序的方法較為靈活。具體方法為:單獨建立一個燒寫工程文件,燒寫時,先把應用程序工程編譯生成的目標文件加載到目標DSP電路的RAM中,再把燒寫工程文件生成的目標文件加載到目標DSP電路RAM的另一個地址空間中,運行main函數後執行燒寫程序直到燒寫完成。這種燒寫方法可以避免兩次加載可能造成的覆蓋,防止第二次加載時修改第一次加載的內容。
3.1 燒寫程序的.cmd文件和中斷向量表設計
燒寫程序的.cmd文件與用戶應用程序的.cmd文件相同,但程序地址分配空間須嚴格區分開來。本文將用戶程序地址空間安排在從0開始的0xB400空間內,燒寫程序安排在從0xC000開始的0x3400空間內。燒寫程序.cmd文件地址空間分配如下:
MEMORY{
VECS: o=0000C000h l=00000400h
PMEM: o=0000C400h l=00003000h
}
如果需要優化程序空間,可以通過編譯生成的.map文件得到用戶程序和燒寫程序實際占用的空間,通過修改,.cmd文件進一步優化。
燒寫程序沒有中斷,可以隻保留_c_int00,簡單起見,也可以采用與應用程序完全相同的中斷向量表。
3.2 燒寫程序設計
在設計燒寫程序前,需要充分了解程序存儲芯片的操作過程。本文使用的FLASH芯片AM29LV160的操作碼,有寫操作、讀操作、芯片擦除、塊擦除、鎖定等十餘種操作。FLASH芯片在寫操作前需要先進行擦除操作。燒寫程序如下:

燒寫程序設計和燒寫操作中有以下幾點需要注意:
①燒寫時,一定要先把應用程序目標文件加載到RAM中,再把燒寫程序目標文件加載到RAM中,然後運行main函數執行燒寫。
②程序中FLASH_ADDRS為自動加載前程序存儲的FLASH芯片地址,本文為0X01000000;RAM_ADDRS為加載後程序存儲的地址,本文為外部SRAM芯片地址0x00000000。
③進行FLASH芯片操作前需對EMIF進行初始化,程序中my_EmifCog為7個32位二進製數組成的數組,分別配置GBLCTL、CECTL0、CECTL1、CECTL2、CECTL3、SDCTL和SDTIM這7個控製寄存器。本文中CE0接外部32位SRAM芯片,CE2接8位FLASH芯片,分別設置CECTL0為0xFFFF3F23、CECTL1為0xFFFF3F03,其他控製寄存器需要根據應用情況來確定。
④FLASH芯片可整片擦除,也可塊擦除,需擦除完成後才能對FLASH芯片進行寫操作。FLASH芯片擦除時間較長,需要在擦除子程序後設置斷點,等待擦除完成(可以CCS中查看0x01000000起始的FLASH空間全為0xFF為參考)後,再進行程序燒寫操作。
⑤程序中PRO_LEN為用戶程序長度,為用戶應用程序,.cmd文件設置中斷向量、程序等分配的總長度,本文為0xB400。
⑥程序加載到的外部SRAM為32位,FLASH芯片為8位,LENDIAN為高電平。燒寫程序從SRAM中讀取的程序為32位,32位數據需要按照從低到高的順序燒寫到8位FLASH芯片中。
結語
實際工程應用驗證了上述燒寫及自動加載方法的可行性。本文所述的加載過程比二次加載節省了DSP係統啟動時間,但因加載過程中FLASH芯片讀寫等待時間為默認設置,用戶不能更改,程序加載時間仍達120 ms,在某些看門狗時間較短的應用中需要特別考慮。本文的程序燒寫方法還可以推廣應用於其他的DSP係統中。
特別推薦
- 噪聲中提取真值!瑞盟科技推出MSA2240電流檢測芯片賦能多元高端測量場景
- 10MHz高頻運行!氮矽科技發布集成驅動GaN芯片,助力電源能效再攀新高
- 失真度僅0.002%!力芯微推出超低內阻、超低失真4PST模擬開關
- 一“芯”雙電!聖邦微電子發布雙輸出電源芯片,簡化AFE與音頻設計
- 一機適配萬端:金升陽推出1200W可編程電源,賦能高端裝備製造
技術文章更多>>
- 芯科科技Tech Talks與藍牙亞洲大會聯動,線上線下賦能物聯網創新
- 冬季續航縮水怎麼辦?揭秘熱管理係統背後的芯片力量
- 從HDMI 2.1到UFS 5.0:SmartDV以領先IP矩陣夯實邊緣計算基石
- 小空間也能實現低噪供電!精密測量雙極性電源選型指南,覆蓋小功率到大電流全場景
- 直擊藍牙亞洲大會 2026:Nordic 九大核心場景演繹“萬物互聯”新體驗
技術白皮書下載更多>>
- 車規與基於V2X的車輛協同主動避撞技術展望
- 數字隔離助力新能源汽車安全隔離的新挑戰
- 汽車模塊拋負載的解決方案
- 車用連接器的安全創新應用
- Melexis Actuators Business Unit
- Position / Current Sensors - Triaxis Hall
熱門搜索
風力渦輪機
風能
風扇
風速風向儀
風揚高科
輔助駕駛係統
輔助設備
負荷開關
複用器
伽利略定位
幹電池
幹簧繼電器
感應開關
高頻電感
高通
高通濾波器
隔離變壓器
隔離開關
個人保健
工業電子
工業控製
工業連接器
工字型電感
功率表
功率電感
功率電阻
功率放大器
功率管
功率繼電器
功率器件





