徐家剛,徐瑞榮
(船舶重工集團公司723 所,揚州225001)
數字信號處理技術廣泛應用于雷達、通信、圖像處理等領域,其中有些信號處理運算量很大、算法結構復雜,且要求高速實時、高性能、靈活地完成各種處理任務。近年來,以數字信號處理器(DSP)為基礎的通用信號處理模塊的研制受到人們的重視,它的研制成功滿足了信號處理系統實時性和通用性的要求。由于DSP 程序運行前都有程序加載的問題,尤其當信號處理模塊由多DSP 構成時,要充分考慮到上位機與DSP 間、主DSP 與從DSP 間的加載關系,DSP 也提供了多種靈活的加載方式以滿足應用要求。因此在設計通用信號處理模塊前,有必要研究DSP 的加載方式。
TMS320C6455 是世界上最大的DSP 芯片商——德州儀器(TI )公司新推出的高端DSP 芯片,也是目前單片處理能力最強的定點DSP。它建立在增強型C64X+DSP 內核基礎之上,該內核添加了專用新指令與基于TI 當前高級C64XDSP 架構的代碼,代碼尺寸平均縮短了20%~30%,周期效率提高了20%。新指令包括復雜的32 位寬乘法以及同步加減法指令,提高了快速傅里葉變換(FFT)以及離散余弦變換(DCT)的性能。TMS320C6455時鐘頻率為1.2GHz ,16 位定點處理能力為9 600 MMAC/s 。推出 TMS320C6455 前,TI 的 DSP 單片處理能力較強,但是芯片間的數據傳輸問題沒有解決,構建多處理器平臺比較復雜。而新推出的TMS320C6455 采用了SerialRapidIO 接口技術,互連速率高達25Gb/s ,很好地解決了芯片間的數據傳輸問題,搭建多處理器平臺變得簡單方便。RapidIO互連規(guī)范已成為ISO/IEC DIS18372 標準,RapidIO Trade Association 已經囊括了世界主要半導體芯片供應商、通信系統OEM和計算機系統制造商。ADI 的link 口雖然也可以實現高速數據傳輸,但link 口是ADI 自定義總線。所以link 口應用范圍狹窄,而RapidIO技術將有廣闊的發(fā)展前景??梢灶A見,TMS320C6455 (以下簡稱C6455 )將在雷達、通信、圖像處理等領域得到廣泛應用。
TMS320C6455 支持多種加載方式:常規(guī)的FLASH加載、主機(HPI/PCI 接口)加載以及特有的RapidIO加載和I2C 加載。豐富的加載方式為通用信號處理板的研制提供了便利。
FLASH 加載用到的FLASH 存儲器是在EPROM和EEPROM的基礎上發(fā)展起來的一種高密度、非易失性電可擦寫存儲器,在掉電情況下仍能保證數據不丟失,并能夠在不離開電路板或數據設備的情況下實施擦除和再編程操作。它具有結構簡單、維護便利、存取速度快、對環(huán)境適應能力強等優(yōu)點,而且單位存儲比特的價格比傳統的EPROM要低,十分適合于低功耗、小尺寸和高性能的便攜式系統,也可以利用現成的DSP 通過軟件編程來實現同樣的功能。使用FLASH的另外一個突出優(yōu)點是它可以實現在線編程,這樣就可以避免使用EPROM反復插拔產生的一些問題,該優(yōu)點在系統的調試階段尤為明顯。本文立足實際經驗,對TMS320C6455 的FLASH加載流程進行闡述,并較為詳細地介紹了基于FLASH AM29LV033C的在線編程加載方法,研究了在線燒寫應用程序的方法以及應用中的注意事項。
TMS320C6455 支持從EMIFA 總線上讀取ROM來加載DSP 程序。其設置由BootMode 管腳設定。在EMIFA讀取ROM的加載模式下(Boot-Mode [3 :0]設置為“0100 ”),C6455 上電后,從 EMFIA的CE3 空間(起始地址:0xB0000000)開始執(zhí)行程序。所以為了實現通過FLASH對C6455 的加載,必須在FLASH起始空間開始的一段上放置一段BootLoader 代碼,由該段代碼完成將FLASH中已保存好的C6455 代碼鏡像搬移到C6455 的L2 空間內的任務。搬移完成后跳轉到程序初始化入口處(_c _int00),從而實現加載。
綜上所述,C6455FLASH加載的流程如下:
(1)編程DSP 代碼;
(2)根據DSP 代碼編譯鏈接后生成的*.out和*.map 文件,獲取該DSP 代碼在運行時各段的內存分配信息;
(3)根據步驟2 中獲得的各段內存分配信息,編寫B(tài)ootLoader 的匯編代碼;
(4)制作BootLoader 代碼的二進制內存鏡像,用于存入FLASH起始地址處;
(5)制作DSP 程序的二進制內存鏡像,用于存入FLASH;
(6)運行FLASH燒寫程序,設置斷點,通過修改PC 值來執(zhí)行燒寫FLASH;
(7)設置BootMode 為ROM加載模式;
(8)重新上電,DSP 完成從FLASH的加載(包括程序搬移和跳轉到入口地址處),開始執(zhí)行程序。
本設計中采用4M×8 位AM29LV033C FLASH,其特點為:3V單電源供電,可使內部產生高電壓進行編程和擦除操作。支持JEDEC 單電源FLASH存儲器標準;只需向其命令寄存器寫入標準的微處理器指令,具體編程+擦除操作由內部嵌入的算法實現,并且可以通過查詢特定的引腳RY/BY?;駾Q7 和DQ6 狀態(tài)位監(jiān)控操作是否完成;可以對任一扇區(qū)進行讀寫或擦除操作而不影響其它部分的數據。
AM29LV033CFLASH映射為C6455 的片外程序存儲空間數據,C6455 通過外部存儲器接口(EMIF)與FLASH連接。DSP 與FLASH是主從關系,由EMIF 的相關輸出管腳控制FLASH的擦除和讀寫。在 EMIF 端,CE 為片選信號(在FLASH加載方式中,EMIF 必須位于CE3 ),EAxx為地址線,EDxx 為數據信號,OE 是輸出使能也就是讀使能信號,WE 為寫使能,這些管腳信號分別與FLASH 的相應管腳相連接。C6455 訪問的FLASH 地址空間最長可至 A[19 :0],與 EMIF 的EA[21 :2]相連,訪問的數據位寬度為8bit 。
采用FLASH AM29LV033C數據線和地址線分別和DSP 的外部數據和地址總線相連,AM29LV033C 的/OE、/WE 和/CE 信 號 分 別 與DSP 的EMIF 接口相關信號相連,DSP 和FLASH的連接示意圖如圖1 所示。
圖1 DSP 和FLASH的連接示意圖
首先,由于在FLASH中存放的應該是DSP 程序的二進制鏡像格式,該鏡像實際上就是通過開發(fā)工具或其它方式加載到DSP L2 空間內的DSP 可執(zhí)行文件。TI 的DSP 可執(zhí)行文件遵行分段的管理方式,由鏈接器根據*.cmd 文件中指定的內存分配規(guī)則,將DSP 可執(zhí)行文件中的各段加載到*.cmd文件中指定的位置。
一個使用了C 環(huán)境的DSP 可執(zhí)行文件主要有以下各段組成:
(1)CINIT 段:C 運行時環(huán)境;
(2)CONST 段:常量;
(3)CODE 段:可執(zhí)行的二進制代碼;
(4)SWITCH 段:分支。
而其它的如堆棧段、BSS 段等則是會在運行時動態(tài)改變的段,不計入必須由BootLoader 加載的范圍。
圖2 DSP 內存空間與FLASH中鏡像文件的映射關系圖
由于在上電后會立即執(zhí)行,所以BootLoader 代碼由匯編實現,從而避免了初始化C 運行時環(huán)境的麻煩。
完整的BootLoadr 代碼如下,其中斜體部分是需要根據不同的DSP 程序編譯鏈接后生成的MAP文件來進行設置的,這些部分指示出了各段的起始地址和各段的空間長度:
BootLoader 和DSP 程序代碼編寫好后,無論是BootLoader 的二進制代碼還是DSP 程序其它的各個段對應的二進制代碼,都必須按照一定的規(guī)則燒寫到FLASH當中去。由于FLASH的唯一訪問接口就來自于C6455 本身,所以可以編寫一段C6455的DSP 程序完成FLASH 燒寫,除了數據源是.cinit 、.code 、.const 、.switch 等各個通 過 MAP 文件可在DSP 的內存空間內定位的段外,其與一般的FLASH燒寫沒有任何區(qū)別。FLASH燒寫的代碼包括2 個部分:一部分是根據某一個DSP 程序對應的MAP 文件中的各段起始和長度來設置的常量定義頭文件;另一部分是調用FLASH操作函數實現的燒寫操作,這些函數的參數來源于常量定義頭文件。
常量定義頭文件示例如下:
FLASH燒寫代碼段示例如下:
對應的cmd 文件示例如下:
由于不希望在最后燒入FLASH的二進制鏡像中包含這段燒寫程序,所以可以通過編譯指令控制將這段代碼放置于DSP 空間的一個指定的位置,然后用開發(fā)工具將程序加載到DSP 中,在開發(fā)工具中將PC 寄存器的指針修改為燒寫程序所對應的DSP空間地址往下執(zhí)行,以完成燒寫任務。
需要注意的是,燒寫程序不能使用與主程序的程序空間和中斷向量表重合的物理空間,以免覆蓋。燒寫時,打開主程序和燒寫程序的PROJECT,先LOAD 主程序,再LOAD 燒寫程序,然后執(zhí)行燒寫程序,燒寫完成。燒寫完成后,將加載模式設置為EMIFA讀取ROM的加載模式,上電后,自動實現程序的FLASH加載。
通過上文的方法可以很好地解決TMS320C6455 的加載問題,同時為TMS320C645x系列DSP 在各種不同應用場合的不同加載要求提供解決思路。
[1]李方慧,王飛,何佩琨.TMS320C6000 系列DSPs 原理與應用[M].北京:電子工業(yè)出版社,2003.
[2]吳海洲,劉恒甫,黃克武.基于TMS320C6455 的DSP加載模式研究[J ].電子測量技術,2008(6):155-161.
[3]羅鋼,彭浩,陳善武.利用仿真器接口實現TMS320-C6XDSPFLASH的燒寫及應用程序自引導[J ].現代電子技術,2005(4):12-14.