新聞中心

EEPW首頁 > 網(wǎng)絡(luò)與存儲 > 設(shè)計應(yīng)用 > TMS320VC55X系列DSP的FLASH引導(dǎo)方法*

TMS320VC55X系列DSP的FLASH引導(dǎo)方法*

——
作者:天津大學(xué)精密測試技術(shù)及儀器國家重點實驗室 呂曉明 段發(fā)階 賈建祿 何梓賓 時間:2007-08-03 來源:電子產(chǎn)品世界 收藏

摘要: 本文以實際系統(tǒng)開發(fā)基礎(chǔ)為背景,闡述了系列DSP對在線燒寫的方法,給出了系統(tǒng)的硬件連接示意圖和完整的燒寫程序,并研究了自舉引導(dǎo)的實現(xiàn)方法以及大程序的二次引導(dǎo)方法。

關(guān)鍵詞: ;;;燒寫;二次引導(dǎo)

引言

隨著數(shù)字信號處理技術(shù)的快速發(fā)展,DSP被廣泛的應(yīng)用到各種數(shù)字信號處理系統(tǒng)中。最終開發(fā)的系統(tǒng)要想脫離仿真器運行,必須將程序代碼存儲在非易失性存儲器中。存儲器以其大容量和可在線編程等特點已成為DSP系統(tǒng)的一個基本配置。如何將程序燒寫進(jìn)FLASH,并在上電時加載進(jìn)DSP內(nèi)部的RAM是FLASH在DSP系統(tǒng)中應(yīng)用的兩個基本技術(shù)問題。本文以基于TI公司的TMS320VC5509A和ATMEL公司的AT49LV1024 FLASH開發(fā)的系統(tǒng)為背景,介紹該系統(tǒng)引導(dǎo)相關(guān)的硬件設(shè)計,燒寫軟件設(shè)計以及自舉引導(dǎo)、二次引導(dǎo)等實現(xiàn)方法。

TMS320VC5509A的自舉引導(dǎo)

TMS320VC5509A每次上電復(fù)位后,在執(zhí)行完一系列初始化(配置堆棧寄存器、關(guān)閉中斷、程序臨時入口、符號擴(kuò)展、兼容性配置)工作后,根據(jù)事先配置的自舉模式,通過固化在ROM內(nèi)的BOOTLOADER程序進(jìn)行程序引導(dǎo)。VC5509A的引導(dǎo)模式選擇是通過四個模式選擇引腳BOOTM[0:3]的配置來完成的。在本系統(tǒng)中,采用EMIF(外部存儲接口)并行引導(dǎo)模式(16位數(shù)據(jù)寬度),則需將BOOTM[3:0]設(shè)置成1011即可。

通過EMIF接口可以靈活地和各種同步或異步存儲器件無縫連接。通過EMIF可以擴(kuò)展VC5509A的存儲空間到128Mbit(SDRAM),存儲空間共被分為CE0~CE3。在EMIF的并行引導(dǎo)模式中,ROM中固化的程序是以字地址0x200000為首地址開始加載程序。地址0x200000即位CE1空間的首地址,所以FLASH必須接在DSP的CE1空間上。在加載時,EMIF的CE1空間已經(jīng)默認(rèn)配置成異步靜態(tài)隨機(jī)存儲器(SRAM)接口,并且在時序上采用了最差情況設(shè)置(即最慢訪問速度),充分保證了時間裕量,使得程序代碼被順利的加載到DSP的內(nèi)存中。

在引導(dǎo)程序時,程序代碼是以引導(dǎo)表格式加載的。TMS320VC55x的引導(dǎo)表結(jié)構(gòu)中包括了用戶程序的代碼段和數(shù)據(jù)段以及相應(yīng)段在內(nèi)存中的指定存儲位置,此外還包括了程序入口地址、部分寄存器的配置值、可編程延時時間等信息(見表1)。

其中,程序入口地址是引導(dǎo)表加載結(jié)束后,用戶程序開始執(zhí)行的地址;寄存器配置數(shù)目決定了后面有多少個寄存器需要配置;只有當(dāng)延時標(biāo)志為0xFFFF時,延時才被執(zhí)行;延時長度決定了在寄存器配置后延時多少個CPU周期后才進(jìn)行下一個動作;段長度、段起始地址和數(shù)據(jù)則為用戶程序中定義的各個段的內(nèi)容,并且可以重復(fù)添加;最后以0x00000000(32個0)作為引導(dǎo)表的結(jié)束標(biāo)志。

要生成引導(dǎo)表,可以將CCS最終編譯生   成的.out文件通過CCS自帶的hex55.exe轉(zhuǎn)換程序得到。將hex55.exe、.out文件、cmd文件放在同一個文件夾中,通過dos命令格式調(diào)用hex55.exe,即可完成.out文件到hex格式的引導(dǎo)表文件的轉(zhuǎn)化。CMD文件用來提供引導(dǎo)表的相關(guān)配置信息,以下為一個CMD文件的實例:

FlashBootTest.out; 輸入的.out文件
-boot; 說明創(chuàng)建boot文件
-v5510:2; 生成55X boot文件格式
-parallel16; 使用串行加載方式
-a; ASCII格式
-reg_config 0x1c00,0x6cd2; 在地址0x1c00
     的寄存器寫入0x6cd2,配置CPU時鐘
-delay 0x100; 延時0x100 個CPU 時鐘周期
-o FlashBootTest.hex; 輸出.hex文件

FLASH的燒寫和自舉的實現(xiàn)

TMS320VC5509A和AT49LV1024的硬件設(shè)計

AT49LV1024是ATMEL公司3V供電系統(tǒng)的FLASH芯片,16位位寬,容量為64K字。VC5509A(PGE封裝)只有14條地址線,只能尋址16K字的SRAM空間。要想尋址64K字地址空間的話,FLASH地址線的高兩位則需要通過其他IO線控制。在本系統(tǒng)中通過GPIO4和GPIO6與FLASH的高兩位地址相連達(dá)到此目的,其連接示意圖如圖1所示。但是在Bootloader自舉引導(dǎo)程序的時候,并不能控制GPIO引腳,也就是只能引導(dǎo)最大16K字的程序。對于大于16K字的程序,則需要進(jìn)行二次引導(dǎo)。

圖1  VC5509A和AT49LV1024的硬件連接示意圖

二次引導(dǎo)技術(shù)

所謂二次引導(dǎo),通過DSP內(nèi)部ROM固化的Bootloader引導(dǎo)用戶自己編寫一個引導(dǎo)程序,其功能和ROM內(nèi)固化的Bootloader相同,再通過此引導(dǎo)程序加載系統(tǒng)最終運行的程序代碼,并在加載結(jié)束后,把PC值置為新的程序入口地址。由于在用戶編寫的引導(dǎo)程序中,可以控制GIPO4和GPIO6,所以可達(dá)到64K字地址空間的尋址目的。其具體實現(xiàn)框圖如圖2所示。

圖2  TMS320VC 5509A二次引導(dǎo)框圖

數(shù)據(jù)燒寫程序設(shè)計

FLASH的數(shù)據(jù)可直接讀取,但對FLASH的編程和擦除操作則需要通過一系列命令才能進(jìn)行。
AT49LV1024的寫操作只能將1變成0,而0變成1操作必須通過擦除操作進(jìn)行。所以每次寫FLASH之前,必須進(jìn)行片擦除,使存儲單元值變成0xFFFF,才能進(jìn)行編程。

擦除命令:需要六個周期,其操作命令如表2所示。

編程命令需要四個周期,其操作命令如表3所示。

編程和擦除操作都需要一定的周期的時間(AT49LV1024的單字編程時間是20ms,整片擦除時間是10s),用戶可以通過查詢標(biāo)志數(shù)據(jù)線DQ6和DQ7來確定編程或擦除是否完畢。當(dāng)片子正處于編程或擦除狀態(tài)時,連續(xù)讀任意單元的值,DQ6的值將一直處于0、1交替變化,當(dāng)編程或擦除結(jié)束時,讀DQ6則得到一個恒定值。本文即通過此方法來判斷操作是否結(jié)束。

根據(jù)FLASH的編程和擦除命令,編寫了相應(yīng)的C語言程序如下,其中SetGPIO46Addr(Addr)子程的作用是根據(jù)所傳遞的Addr值配置相應(yīng)的GPIO4和GPIO6即高兩位地址的值。



評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉