新聞中心

基于TMS320DM642的

——
作者:胡嘉凱 蔣建國(guó) 齊美彬 時(shí)間:2006-06-03 來(lái)源:電子產(chǎn)品世界 收藏

摘  要:DSP系統(tǒng)在獨(dú)立運(yùn)行時(shí)需要把用戶代碼從外部Flash中加載到系統(tǒng)RAM運(yùn)行,包括了Flash的編程及上電加載兩項(xiàng)技術(shù),是DSP系統(tǒng)開(kāi)發(fā)中的重點(diǎn)和難點(diǎn)。本文采用一種在系統(tǒng)編程方法對(duì)Flash編程,巧妙地利用JTAG仿真器實(shí)現(xiàn)系統(tǒng)在線調(diào)試及編程,無(wú)需進(jìn)行COFF到HEX的數(shù)據(jù)格式轉(zhuǎn)換。

關(guān)鍵詞:在系統(tǒng)編程;DSP;加載器

引言
 
  一個(gè)完整的系統(tǒng)必須要有一個(gè)合適的存儲(chǔ)器存放用戶代碼。Flash是一種非易失性存儲(chǔ)器,而且具有電可擦寫、容量大、價(jià)格便宜等特點(diǎn),通常可用于在DSP系統(tǒng)中存放用戶代碼。
Flash在正常使用前要進(jìn)行編程,即將用戶代碼寫入Flash。在系統(tǒng)編程方法不需要其它編程設(shè)備和編程電源,只借助于仿真器,可直接通過(guò)DSP燒寫程序?qū)lash進(jìn)行編程。本文所使用的編程方法就屬于在系統(tǒng)編程。
本文首先介紹常見(jiàn)的Flash編程方法,然后詳細(xì)介紹本文方法的原理,以及DSP系統(tǒng)上電加載原理,最后給出整個(gè)實(shí)現(xiàn)過(guò)程并分析了Flash編程時(shí)需要注意的一些問(wèn)題。

        
圖1 系統(tǒng)上電的工作步驟           

圖2  程序流程

Flash編程方法

常見(jiàn)的Flash編程方式

  Flash在正常使用前必須寫入用戶程序,傳統(tǒng)上有3種編程方法:由供應(yīng)商出貨前把程序代碼寫入Flash、編程器編程和在系統(tǒng)編程。

  第1種方法不能滿足用戶更改代碼的需求,所以在開(kāi)發(fā)階段不宜采用。當(dāng)使用編程器編程時(shí),要求Flash固定在PCB板前必須把用戶程序?qū)懭肫瑑?nèi)。因此,現(xiàn)在一般都優(yōu)先考慮在系統(tǒng)編程方法,首先應(yīng)確定所選的DSP是否直持在系統(tǒng)編程?,F(xiàn)行的在系統(tǒng)編程的方法一般是先把待加載程序(用戶程序)的.out文件(COFF格式)轉(zhuǎn)成HEX格式,然后去掉HEX格式文件的文件頭,再通過(guò)燒寫程序?qū)懙紽lash里去。也可以不進(jìn)行COFF格式到HEX格式的轉(zhuǎn)換這一步,把COFF文件作為源文件,去除文件頭信息后將其寫入Flash。

本文方法的編程原理

  本文的實(shí)現(xiàn)方法比較簡(jiǎn)單,首先把用戶程序映射到系統(tǒng)RAM,再把用戶程序作為數(shù)據(jù)直接從RAM搬入Flash中。

  首先在CCS上完成用戶程序,生成可執(zhí)行的.out文件,將該文件設(shè)為文件1進(jìn)行加載;然后加載燒寫程序的.out文件,將其設(shè)為文件2;最后運(yùn)行文件2,通過(guò)它把文件1燒入Flash。

  操作步驟非常簡(jiǎn)單,這里要說(shuō)明幾點(diǎn)。首先,2個(gè).out文件各自獨(dú)立,文件2加載后,文件1成為數(shù)據(jù),CCS在運(yùn)行時(shí),運(yùn)行的是最新加載的程序,也即文件2。其次,文件2與文件1映射到RAM中的物理空間各自獨(dú)立,也就是文件2不能映射到文件1已映射的地方,如果發(fā)生重疊,文件2的內(nèi)容就會(huì)覆蓋原先文件1映射到該地址空間的內(nèi)容,寫入Flash的內(nèi)容就會(huì)發(fā)生錯(cuò)誤。再次,用戶程序里包括了二次加載程序,以在自舉時(shí)把用戶程序從Flash還原到RAM中。

 

 

 

 

 

 

總線周期

 

 

 

 

 

命令

1

 

2

 

3

 

4

 

5

 

6

 

序列

 地址

 數(shù)據(jù)

 地址

 數(shù)據(jù)

 地址

 數(shù)據(jù)

 地址

 數(shù)據(jù)

 地址

 數(shù)據(jù)

 地址

 數(shù)據(jù)

軟件復(fù)位

 XXX

 F0

 

 

 

 

 

 

 

 

 

 

芯片擦除

 XXX

 AA

 XXX

 55

 XXX

 80

 XXX

 AA

 XXX

 55

 XXX

 10

扇區(qū)擦除

 XXX

 AA

 XXX

 55

 XXX

 80

 XXX

 AA

 XXX

 55

 SA

 30

字節(jié)寫

 XXX

 AA

 XXX

 55

 XXX

 A0

 PA

 PD

 

 

 

 

表1  Am29LV033C內(nèi)存指令表

二次加載和Bootloader

  要保證用戶程序的正確運(yùn)行,僅把程序?qū)懭隖lash是不夠的,必須保證上電后,程序能夠從Flash中正確恢復(fù)到RAM。系統(tǒng)上電工作步驟如圖1所示。
DSP首先自檢,得到程序的加載模式。在C6000中主要有2種模式,一種是主機(jī)加載模式,也即DSP從0x0000 0000開(kāi)始執(zhí)行程序;另一種是ROM加載模式,該模式又有8位、16位、32位幾種,不同的DSP略有不同,這里選用8位ROM模式。工作時(shí),DSP先從地址0x9000 0000開(kāi)始,把0x9000 0000~0x9000 0400這1K(在C62xx中是64K)的數(shù)據(jù)搬到0x0000 0000~0x0000 0400,然后再?gòu)?x0000 0000開(kāi)始執(zhí)行程序。這一次加載由DSP自行完成,但是1K的程序作為用戶程序顯然不夠,因此,這1K的程序要做成加載器,也就是手工寫的Bootloader,利用它把用戶程序從Flash搬入RAM。加載器搬運(yùn)用戶程序又是一次加載,因此把這個(gè)過(guò)程統(tǒng)稱為二次加載。

  Bootloader要完成兩項(xiàng)功能,第一,把其它程序搬到指定的地址;第二,跳轉(zhuǎn)到用戶程序入口,這里要先修改ISP,再跳轉(zhuǎn)到復(fù)位中斷,因此在Bootloader的最后總是一條跳轉(zhuǎn)指令。由于Bootloader在Flash中的位置是0x9000 0000~0x9000 0400,而Bootloader又是放在用戶程序里的,因此,為了方便燒寫程序把Bootloader寫到該位置,這里在用戶程序的.cmd文件中把bootloader定位在程序段的起始位置。

編程方法實(shí)現(xiàn)

系統(tǒng)配置和參數(shù)設(shè)置

  TMS320DM642是TI公司的一款視頻圖像DSP,工作時(shí)鐘最高可達(dá)到600MHz。程序存儲(chǔ)器最大可調(diào)至272M



評(píng)論


相關(guān)推薦

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

關(guān)閉