TMS320VC55X系列DSP的FLASH引導方法*
摘要: 本文以實(shí)際系統開(kāi)發(fā)基礎為背景,闡述了TMS320C55X系列DSP對FLASH在線(xiàn)燒寫(xiě)的方法,給出了系統的硬件連接示意圖和完整的燒寫(xiě)程序,并研究了自舉引導的實(shí)現方法以及大程序的二次引導方法。
關(guān)鍵詞: TMS320C55X;FLASH;Bootloader;燒寫(xiě);二次引導
引言
隨著(zhù)數字信號處理技術(shù)的快速發(fā)展,DSP被廣泛的應用到各種數字信號處理系統中。最終開(kāi)發(fā)的系統要想脫離仿真器運行,必須將程序代碼存儲在非易失性存儲器中。FLASH存儲器以其大容量和可在線(xiàn)編程等特點(diǎn)已成為DSP系統的一個(gè)基本配置。如何將程序燒寫(xiě)進(jìn)FLASH,并在上電時(shí)加載進(jìn)DSP內部的RAM是FLASH在DSP系統中應用的兩個(gè)基本技術(shù)問(wèn)題。本文以基于TI公司的TMS320VC5509A和ATMEL公司的AT49LV1024 FLASH開(kāi)發(fā)的系統為背景,介紹該系統引導相關(guān)的硬件設計,燒寫(xiě)軟件設計以及自舉引導、二次引導等實(shí)現方法。
TMS320VC5509A的自舉引導
TMS320VC5509A每次上電復位后,在執行完一系列初始化(配置堆棧寄存器、關(guān)閉中斷、程序臨時(shí)入口、符號擴展、兼容性配置)工作后,根據事先配置的自舉模式,通過(guò)固化在ROM內的BOOTLOADER程序進(jìn)行程序引導。VC5509A的引導模式選擇是通過(guò)四個(gè)模式選擇引腳BOOTM[0:3]的配置來(lái)完成的。在本系統中,采用EMIF(外部存儲接口)并行引導模式(16位數據寬度),則需將BOOTM[3:0]設置成1011即可。
通過(guò)EMIF接口可以靈活地和各種同步或異步存儲器件無(wú)縫連接。通過(guò)EMIF可以擴展VC5509A的存儲空間到128Mbit(SDRAM),存儲空間共被分為CE0~CE3。在EMIF的并行引導模式中,ROM中固化的Bootloader程序是以字地址0x200000為首地址開(kāi)始加載程序。地址0x200000即位CE1空間的首地址,所以FLASH必須接在DSP的CE1空間上。在加載時(shí),EMIF的CE1空間已經(jīng)默認配置成異步靜態(tài)隨機存儲器(SRAM)接口,并且在時(shí)序上采用了最差情況設置(即最慢訪(fǎng)問(wèn)速度),充分保證了時(shí)間裕量,使得程序代碼被順利的加載到DSP的內存中。
Bootloader在引導程序時(shí),程序代碼是以引導表格式加載的。TMS320VC55x的引導表結構中包括了用戶(hù)程序的代碼段和數據段以及相應段在內存中的指定存儲位置,此外還包括了程序入口地址、部分寄存器的配置值、可編程延時(shí)時(shí)間等信息(見(jiàn)表1)。
其中,程序入口地址是引導表加載結束后,用戶(hù)程序開(kāi)始執行的地址;寄存器配置數目決定了后面有多少個(gè)寄存器需要配置;只有當延時(shí)標志為0xFFFF時(shí),延時(shí)才被執行;延時(shí)長(cháng)度決定了在寄存器配置后延時(shí)多少個(gè)CPU周期后才進(jìn)行下一個(gè)動(dòng)作;段長(cháng)度、段起始地址和數據則為用戶(hù)程序中定義的各個(gè)段的內容,并且可以重復添加;最后以0x00000000(32個(gè)0)作為引導表的結束標志。
要生成引導表,可以將CCS最終編譯生 成的.out文件通過(guò)CCS自帶的hex55.exe轉換程序得到。將hex55.exe、.out文件、cmd文件放在同一個(gè)文件夾中,通過(guò)dos命令格式調用hex55.exe,即可完成.out文件到hex格式的引導表文件的轉化。CMD文件用來(lái)提供引導表的相關(guān)配置信息,以下為一個(gè)CMD文件的實(shí)例:
FlashBootTest.out; 輸入的.out文件
-boot; 說(shuō)明創(chuàng )建boot文件
-v5510:2; 生成55X boot文件格式
-parallel16; 使用串行加載方式
-a; ASCII格式
-reg_config 0x1c00,0x6cd2; 在地址0x1c00
的寄存器寫(xiě)入0x6cd2,配置CPU時(shí)鐘
-delay 0x100; 延時(shí)0x100 個(gè)CPU 時(shí)鐘周期
-o FlashBootTest.hex; 輸出.hex文件
FLASH的燒寫(xiě)和自舉的實(shí)現
TMS320VC5509A和AT49LV1024的硬件設計
AT49LV1024是ATMEL公司3V供電系統的FLASH芯片,16位位寬,容量為64K字。VC5509A(PGE封裝)只有14條地址線(xiàn),只能尋址16K字的SRAM空間。要想尋址64K字地址空間的話(huà),FLASH地址線(xiàn)的高兩位則需要通過(guò)其他IO線(xiàn)控制。在本系統中通過(guò)GPIO4和GPIO6與FLASH的高兩位地址相連達到此目的,其連接示意圖如圖1所示。但是在Bootloader自舉引導程序的時(shí)候,并不能控制GPIO引腳,也就是只能引導最大16K字的程序。對于大于16K字的程序,則需要進(jìn)行二次引導。
圖1 VC5509A和AT49LV1024的硬件連接示意圖
二次引導技術(shù)
所謂二次引導,通過(guò)DSP內部ROM固化的Bootloader引導用戶(hù)自己編寫(xiě)一個(gè)引導程序,其功能和ROM內固化的Bootloader相同,再通過(guò)此引導程序加載系統最終運行的程序代碼,并在加載結束后,把PC值置為新的程序入口地址。由于在用戶(hù)編寫(xiě)的引導程序中,可以控制GIPO4和GPIO6,所以可達到64K字地址空間的尋址目的。其具體實(shí)現框圖如圖2所示。
圖2 TMS320VC 5509A二次引導框圖
數據燒寫(xiě)程序設計
FLASH的數據可直接讀取,但對FLASH的編程和擦除操作則需要通過(guò)一系列命令才能進(jìn)行。
AT49LV1024的寫(xiě)操作只能將1變成0,而0變成1操作必須通過(guò)擦除操作進(jìn)行。所以每次寫(xiě)FLASH之前,必須進(jìn)行片擦除,使存儲單元值變成0xFFFF,才能進(jìn)行編程。
擦除命令:需要六個(gè)周期,其操作命令如表2所示。
編程命令需要四個(gè)周期,其操作命令如表3所示。
編程和擦除操作都需要一定的周期的時(shí)間(AT49LV1024的單字編程時(shí)間是20ms,整片擦除時(shí)間是10s),用戶(hù)可以通過(guò)查詢(xún)標志數據線(xiàn)DQ6和DQ7來(lái)確定編程或擦除是否完畢。當片子正處于編程或擦除狀態(tài)時(shí),連續讀任意單元的值,DQ6的值將一直處于0、1交替變化,當編程或擦除結束時(shí),讀DQ6則得到一個(gè)恒定值。本文即通過(guò)此方法來(lái)判斷操作是否結束。
根據FLASH的編程和擦除命令,編寫(xiě)了相應的C語(yǔ)言程序如下,其中SetGPIO46Addr(Addr)子程的作用是根據所傳遞的Addr值配置相應的GPIO4和GPIO6即高兩位地址的值。
評論