TMS320VC55x系列DSP的Flash引導方法研究
發布時間:2007/8/20 0:00:00 訪問次數:658
1 引言
隨著數字信號處理技術的快速發展,DSP(數字信號處理器)越來越廣泛地應用于各種數字信號處理系統中。最終開發的系統要想脫離仿真器運行,必須將程序代碼存儲在非易失性存儲器中。Flash存儲器以其大容量和可在線編程等特點已成為DSP系統的一個基本配置。如何將程序燒寫進Flash,并在上電時加載到DSP內部的RAM是Flash在DSP系統中應用的兩個基本技術問題。本文以基于TI公司的TMS320VC5509A和Atmel公司的AT49LV1024 Flash開發的系統為背景,詳細介紹了系統引導相關的硬件設計、燒寫軟件設計以及自舉引導和二次引導等實現方法。
2 TMS320VC5509A的自舉引導
2.1 TMS320VC5509A的自舉模式配置
TMS320VC5509A每次上電復位后,在執行完一系列初始化(配置堆棧寄存器、關閉中斷、程序臨時入口、符號擴展、兼容性配置)工作后,根據預先配置的自舉模式,通過固化在ROM內的Bootloader程序進行程序引導。VC5509A的引導模式選擇是通過4個模式選擇引腳BOOTM[0:3]配置完成的。 BOOTM0~3引腳分別與GPIO1、2、3、0相連。在本系統設計中,采用EMIF(外部存儲接口)并行引導模式(16位數據寬度),只需將BOOTM[3:0]設置成1011即可。
EMIF為外部存儲接口,通過EMIF接口可以靈活地和各種同步或異步存儲器件無縫連接。通過EMIF可以將VC5509A的存儲空間擴展到128 Mbit(SDRAM),存儲空間共被分為CE0~CE3四個段,每段占用不同的地址。在EMIF的并行引導模式中,ROM固化的Bootloader程序是以0x200000為首地址開始加載程序。0x200000即為CE1空間的首地址,所以Flash必須接在DSP的CE1空間上。在加載時。EMIF的CE1空間已經默認配置成異步靜態隨機存儲器(SRAM)接口,并且在時序上采用了最差情況設置(即最慢訪問速度),充分保證了時間裕量,使得程序代碼順利地加載到DSP的內存中。
2.2 TMS320VC5509A的引導表
Bootloader在引導程序時,程序代碼是以引導表格形式加載的。TMS320VC55x的引導表結構中包括了用戶程序的代碼段和數據段以及相應段在內存中的指定存儲位置,此外還包括了程序人口地址、部分寄存器的配置值、可編程延時時間等信息。TMS320VC55x系列DSP的引導表結構如表1所示。
其中,程序入口地址是引導表加載結束后,用戶程序開始執行的地址;寄存器配置數目決定了后面有多少個寄存器需要配置;只有當延時標志為0xFFFF時,延時才被執行;延時長度決定了在寄存器配置后延時多少個CPU周期才進行下一個動作;段長度、段起始地址和數據則為用戶程序中定義的各個段的內容,并且可以重復添加;最后以0x00000000(32個0)作為引導表的結束標志。
若要生成引導表,可用CCS最終編譯生成的,out文件通過CCS自帶的hex55.exe轉換程序得到。將hex55.exe、.out文件、.0cmd文件放在同一個文件夾中,通過DOS命令調用hex55.exe。即可完成.out文件到hex格式的引導表文件的轉化。.CMD文件用于提供引導表的相關配置信息,以下為一個.CMD文件的實例:
3 Flash的燒寫和自舉的實現
3.1 TMS320VC5509A和AT49LV1024的硬件沒計
AT49LV1024是Atmel公司一款3 V供電系統的Flash存儲器,16位位寬,容量為64 KB(16條地址線)。VC5509A(PGE封裝)只有14條地址線,只能尋址16 KB的SRAM空間。要想尋址64 KB地址空間的話,Flash地址線的高兩位則需要通過其他I/O線控制。在本系統中通過GPIO4和GPIO6與Flash的高兩位地址相連實現,其連接示意圖如圖1所示。但是在Bootloader自舉引導程序時,并不能控制GPIO引腳,也就是只能引導最大16 KB的程序。對于大于16 KB的程序,則需要進行二次引導。
3.2 二次引導技術
所謂二次引導,就是通過DSP內部ROM固化的Bootloader引導用戶自行編寫一個引導程序,其功能和ROM固化的Bootloader相同,再通過此引導程序加載系統最終運行的程序代碼,并在加載結束后,把PC值置為新的程序入口地址。在用戶編寫的引導程序中控制GIPO4和GPIO6
1 引言
隨著數字信號處理技術的快速發展,DSP(數字信號處理器)越來越廣泛地應用于各種數字信號處理系統中。最終開發的系統要想脫離仿真器運行,必須將程序代碼存儲在非易失性存儲器中。Flash存儲器以其大容量和可在線編程等特點已成為DSP系統的一個基本配置。如何將程序燒寫進Flash,并在上電時加載到DSP內部的RAM是Flash在DSP系統中應用的兩個基本技術問題。本文以基于TI公司的TMS320VC5509A和Atmel公司的AT49LV1024 Flash開發的系統為背景,詳細介紹了系統引導相關的硬件設計、燒寫軟件設計以及自舉引導和二次引導等實現方法。
2 TMS320VC5509A的自舉引導
2.1 TMS320VC5509A的自舉模式配置
TMS320VC5509A每次上電復位后,在執行完一系列初始化(配置堆棧寄存器、關閉中斷、程序臨時入口、符號擴展、兼容性配置)工作后,根據預先配置的自舉模式,通過固化在ROM內的Bootloader程序進行程序引導。VC5509A的引導模式選擇是通過4個模式選擇引腳BOOTM[0:3]配置完成的。 BOOTM0~3引腳分別與GPIO1、2、3、0相連。在本系統設計中,采用EMIF(外部存儲接口)并行引導模式(16位數據寬度),只需將BOOTM[3:0]設置成1011即可。
EMIF為外部存儲接口,通過EMIF接口可以靈活地和各種同步或異步存儲器件無縫連接。通過EMIF可以將VC5509A的存儲空間擴展到128 Mbit(SDRAM),存儲空間共被分為CE0~CE3四個段,每段占用不同的地址。在EMIF的并行引導模式中,ROM固化的Bootloader程序是以0x200000為首地址開始加載程序。0x200000即為CE1空間的首地址,所以Flash必須接在DSP的CE1空間上。在加載時。EMIF的CE1空間已經默認配置成異步靜態隨機存儲器(SRAM)接口,并且在時序上采用了最差情況設置(即最慢訪問速度),充分保證了時間裕量,使得程序代碼順利地加載到DSP的內存中。
2.2 TMS320VC5509A的引導表
Bootloader在引導程序時,程序代碼是以引導表格形式加載的。TMS320VC55x的引導表結構中包括了用戶程序的代碼段和數據段以及相應段在內存中的指定存儲位置,此外還包括了程序人口地址、部分寄存器的配置值、可編程延時時間等信息。TMS320VC55x系列DSP的引導表結構如表1所示。
其中,程序入口地址是引導表加載結束后,用戶程序開始執行的地址;寄存器配置數目決定了后面有多少個寄存器需要配置;只有當延時標志為0xFFFF時,延時才被執行;延時長度決定了在寄存器配置后延時多少個CPU周期才進行下一個動作;段長度、段起始地址和數據則為用戶程序中定義的各個段的內容,并且可以重復添加;最后以0x00000000(32個0)作為引導表的結束標志。
若要生成引導表,可用CCS最終編譯生成的,out文件通過CCS自帶的hex55.exe轉換程序得到。將hex55.exe、.out文件、.0cmd文件放在同一個文件夾中,通過DOS命令調用hex55.exe。即可完成.out文件到hex格式的引導表文件的轉化。.CMD文件用于提供引導表的相關配置信息,以下為一個.CMD文件的實例:
3 Flash的燒寫和自舉的實現
3.1 TMS320VC5509A和AT49LV1024的硬件沒計
AT49LV1024是Atmel公司一款3 V供電系統的Flash存儲器,16位位寬,容量為64 KB(16條地址線)。VC5509A(PGE封裝)只有14條地址線,只能尋址16 KB的SRAM空間。要想尋址64 KB地址空間的話,Flash地址線的高兩位則需要通過其他I/O線控制。在本系統中通過GPIO4和GPIO6與Flash的高兩位地址相連實現,其連接示意圖如圖1所示。但是在Bootloader自舉引導程序時,并不能控制GPIO引腳,也就是只能引導最大16 KB的程序。對于大于16 KB的程序,則需要進行二次引導。
3.2 二次引導技術
所謂二次引導,就是通過DSP內部ROM固化的Bootloader引導用戶自行編寫一個引導程序,其功能和ROM固化的Bootloader相同,再通過此引導程序加載系統最終運行的程序代碼,并在加載結束后,把PC值置為新的程序入口地址。在用戶編寫的引導程序中控制GIPO4和GPIO6