《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計應(yīng)用 > TMS320VC5509在線燒寫Flash并自舉啟動方法研究
TMS320VC5509在線燒寫Flash并自舉啟動方法研究
來源:微型機(jī)與應(yīng)用2011年第2期
陳若珠, 胡金平, 李戰(zhàn)明
(蘭州理工大學(xué) 電氣工程與信息工程學(xué)院,, 甘肅 蘭州 730050)
摘要: 為了解決TMS320VC55X系列DSP系統(tǒng)程序代碼的保存問題,,設(shè)計了一種利用JTAG接口,在線燒寫Flash并實(shí)現(xiàn)自舉啟動的方法,。這種在線編程的方法利用并行外部存儲器加載(EMIF)接口將TMS320VC5509和Flash芯片相連接,,通過搬移程序?qū)?yīng)用程序的已初始化段按照C55X系列DSP引導(dǎo)表格式燒寫進(jìn)外部擴(kuò)展的Flash存儲器中,從而實(shí)現(xiàn)自舉啟動,。該方法為DSP系統(tǒng)的軟件維護(hù)和升級帶來了方便,,具有實(shí)際的應(yīng)用價值。
Abstract:
Key words :

摘  要:為了解決TMS320VC55X系列DSP系統(tǒng)程序代碼的保存問題,,設(shè)計了一種利用JTAG接口,,在線燒寫Flash并實(shí)現(xiàn)自舉啟動的方法。這種在線編程的方法利用并行外部存儲器加載(EMIF)接口將TMS320VC5509和Flash芯片相連接,,通過搬移程序?qū)?yīng)用程序的已初始化段按照C55X系列DSP引導(dǎo)表格式燒寫進(jìn)外部擴(kuò)展的Flash存儲器中,,從而實(shí)現(xiàn)自舉啟動。該方法為DSP系統(tǒng)的軟件維護(hù)和升級帶來了方便,,具有實(shí)際的應(yīng)用價值,。
關(guān)鍵詞: TMS320VC5509;自舉啟動,;在線編程,;Flash

    隨著數(shù)字信號處理技術(shù)的快速發(fā)展,,DSP被廣泛應(yīng)用于各種數(shù)字信號處理系統(tǒng)中。最終開發(fā)的系統(tǒng)若要脫離仿真器運(yùn)行,,必須將程序代碼存儲在非易失性存儲器中,。Flash是一種可在線進(jìn)行電擦寫而掉電后信息又不丟失的存儲器,它具有功耗低,、容量大,、擦寫速度快等特點(diǎn)。如何將程序燒寫進(jìn)Flash,,并在上電時加載到DSP內(nèi)部的RAM中,是Flash在DSP系統(tǒng)應(yīng)用中的兩個基本問題[1],。本文基于TI公司的TMS320VC5509A和AMD公司的AM29LV800開發(fā)系統(tǒng),詳細(xì)闡述了在線燒寫Flash并實(shí)現(xiàn)自舉啟動的方法。
1 硬件電路設(shè)計
    圖1為TMS320VC5509A與AM29LV800的連接示意圖[2],,F(xiàn)lash擴(kuò)展在CE1空間,,起始地址為200000。由于TMS320VC5509A只有14根地址線A0~A13,又因?yàn)镕lash作為數(shù)據(jù)存儲空間使用時的地址編碼采用字尋址方式,,則DSP的A0信號無效,,所以AM29LV800芯片的低13位地址線A0~A12連接TMS320VC5509A的地址線A1~A13,高6位地址線A13~A18由緩沖串口來擴(kuò)展。AM29LV800是低功耗Flash,,工作在2.7 V~3.6 V電壓下,,一般存儲數(shù)據(jù)可以保存100年以上,可以重復(fù)編程次數(shù)高達(dá)10萬次,。A18~A0為外部地址管腳,DQ0~DQ15為16條數(shù)據(jù)線,,CE為片選控制管腳,OE為輸出控制管腳,,WE為寫入控制管腳,。

2 自啟動過程分析及啟動表結(jié)構(gòu)
    DSP系統(tǒng)的bootloader是指在系統(tǒng)上電時將一段存儲在外部非易失性存儲器中的程序搬移到DSP片內(nèi)或片外擴(kuò)展的高速RAM中并執(zhí)行的代碼。Bootloader程序永久性地存儲在DSP以FF8000H開始的ROM中,,DSP系統(tǒng)在復(fù)位后PC=FF8000H,,即從Bootloader程序首地址開始執(zhí)行。
    TMS320VC5509 DSP的Bootloader有多種加載方式[3],,如表1所示,,設(shè)置DSP的GPIO0-GPIO3,DSP在復(fù)位時讀取這4個引腳上的狀態(tài)以確定所使用的啟動模式,。本文使用16-bit EMIF加載方式,雖然連線復(fù)雜,,需要考慮并行非易失存儲器Flash與EMIF接口的匹配關(guān)系,但是它的優(yōu)點(diǎn)很多:不需要外部時鐘驅(qū)動,,非易失存儲器種類多樣,,容量較大,除了存儲下載表之外,還可存儲系統(tǒng)需要保存的關(guān)鍵數(shù)據(jù),,以便在掉電時保存信息。
    在這些加載模式下,,下載程序之前先要生成一張載入表,,即引導(dǎo)表。引導(dǎo)表的結(jié)構(gòu)如圖2所示,,引導(dǎo)表攜帶的信息有代碼段和數(shù)據(jù)段信息,,向DSP下載程序的入口點(diǎn)地址、寄存器配置信息和可編程延時信息,。

    讀引導(dǎo)表可知以下信息:程序入口地址是引導(dǎo)表加載結(jié)束后用戶程序開始執(zhí)行的地址,,也就是用戶程序生成的map文件中顯示的入口地址;需配置寄存器數(shù)表明后面有多少個需要配置的寄存器,;當(dāng)延時標(biāo)志為0xFFFF時,,執(zhí)行延時,延時長度決定了在寄存器配置后延時多少個CPU周期才進(jìn)行下一個動作,;段字節(jié)數(shù),、段起始地址和數(shù)據(jù)表示用戶程序中定義的各個段的內(nèi)容;引導(dǎo)表以32個0為結(jié)束標(biāo)志,。
    生成引導(dǎo)表的方法:通過在DOS環(huán)境下使用hex55.exe轉(zhuǎn)換工具,。在轉(zhuǎn)換操作之前, 先把用戶程序生成的
.out文件,、包含轉(zhuǎn)換選項(xiàng)的CMD文件hex5509.cmd和轉(zhuǎn)換工具h(yuǎn)ex55.exe放在同一個文件夾里,,在DOS方式下先將路徑修改為文件所在的位置,然后在此路徑下運(yùn)行命令hex55 hex5509.cmd,,即可生成想要的.hex文件,。
    在轉(zhuǎn)換時,提供引導(dǎo)表的相關(guān)配置信息的CMD文件這里被命名為hex5509.cmd,,文中用到的hex5509.cmd的內(nèi)容為:
    -boot                            /*創(chuàng)建一個引導(dǎo)表*/
    -v5510:2                /*選擇合適的DSP引導(dǎo)表格式*/
    LED.out                                     /*輸入文件*/
    -o FLASH.hex                              /*輸出文件*/
    -a                            /*輸出格式為straight ASCII*/
    -parallel16                  /*16位并行異步加載模式*/
    -memwidth 16
    -romwidth 16
    -e 0x000004d4                     /*程序的入口地址*/
    -map LED.map                     /*輸出map文件*/
    -delay 0xffff                                 /*延時*/
3 Flash燒寫
    Flash的讀操作與傳統(tǒng)EPROM讀操作相同,。由于芯片使用軟件保護(hù)模式進(jìn)行操作,用戶編程時,,只要向指定的地址寫入指定的序列,,就可以啟動Flash芯片內(nèi)部的寫狀態(tài)機(jī),完成指定的操作,。表2為Flash的操作命令說明(對芯片的擦除和編程都是按照字進(jìn)行的),,表中所有的數(shù)據(jù)都是十六進(jìn)制數(shù)。
    Flash的正確操作順序:先復(fù)位,,再擦除,,最后編程。按照表2提供的操作命令時序來實(shí)現(xiàn)對AM29LV800的擦除和編程,,PA為編程地址,,PD為編程數(shù)據(jù),。Flash擴(kuò)展在CE1空間,起始地址是200000,,所以操作時所有地址必須加上200000,。例如燒寫工程中擦除部分命令為:
    deminaddr = (int *)CESECT1;
    addbias = 0x0555;
    *(deminaddr+addbias) = 0x00aa;
    addbias = 0x02aa;
    *(deminaddr+addbias) = 0x0055;
    addbias = 0x0555;
    *(deminaddr+addbias) = 0x0080;
    addbias = 0x0555;
    *(deminaddr+addbias) = 0x00aa;
    addbias = 0x02aa;
    *(deminaddr+addbias) = 0x0055;
    addbias = 0x0555;
    *(deminaddr+addbias) = 0x0010;
    delay(100)
    芯片擦除需要占用6個總線周期,而芯片編程需要4個總線周期,,依照表3的數(shù)據(jù),,在每個總線周期對相應(yīng)地址寫入命令字就可以了。用戶一般都是對芯片進(jìn)行寫操作,,寫操作只能使‘1’變‘0’,,而擦除只能使‘0’變?yōu)?lsquo;1’。圖3為擦除和編程命令波形圖,,清楚地顯示了擦除和編程操作過程,。

    判斷編程或擦除的結(jié)束是當(dāng)把編程或擦除的命令字按照其時序?qū)懭隖lash 時,在寫編程命令時序或擦除命令時序的最后一個WE上升沿到來之后,,AM29LV800會自動運(yùn)行一個嵌入在Flash內(nèi)部的算法來判斷編程或擦除操作是否結(jié)束,。采用觸發(fā)位校驗(yàn)的方法,檢測數(shù)據(jù)切換位DQ6(Toggle Bit)的狀態(tài),連續(xù)讀數(shù)據(jù)會使DQ6的值在‘0’和‘1’之間來回切換,,當(dāng)編程或擦除結(jié)束時,,DQ6就停止值的切換[4]。因此,,可以通過連續(xù)兩次讀DQ6的值來判斷編程或擦除是否結(jié)束,,當(dāng)兩次讀得的值相同時,說明編程或擦除結(jié)束,,否則沒有,。觸發(fā)位檢測算法流程圖如圖4所示。

4 程序的燒寫實(shí)現(xiàn)
    本系統(tǒng)在CCS仿真環(huán)境下對Flash進(jìn)行在線編程,。先建立一個Flash的燒寫工程,,并在工程中將要燒寫進(jìn)Flash的引導(dǎo)表文件通過CCS的LOAD DATA功能直接加載進(jìn)DSP的內(nèi)存,根據(jù)加載的首地址和數(shù)據(jù)長度,,在仿真環(huán)境下燒寫進(jìn)Flash中,。值得注意的是,程序加載的內(nèi)存空間不能與Flash的燒寫程序重疊,否則燒寫失敗,。燒寫完成以后,,關(guān)掉電源,拔掉仿真器電纜,,讓仿真器和計算機(jī)脫開:重新打開電源,,實(shí)驗(yàn)板上指示燈閃爍,表明燒寫進(jìn)Flash程序正在運(yùn)行,自啟動成功,。
    需要補(bǔ)充的是,,經(jīng)過hex55.exe文件轉(zhuǎn)化后的hex文件的引導(dǎo)表文件不能直接導(dǎo)入CCS中,CCS只支持將特別規(guī)定的DAT格式文件通過LOAD DATA導(dǎo)入內(nèi)存,,所以在導(dǎo)入之前必須先將引導(dǎo)表轉(zhuǎn)化成DAT格式文件,,這個工作可以由VC編寫一個簡單的C語言轉(zhuǎn)化程序?qū)崿F(xiàn)。
    本文闡述了一種針對TMS320VC5509A DSP簡單有效的Flash燒寫方法,,并提出了程序自舉引導(dǎo)的實(shí)現(xiàn)方法??梢杂行У亟鉀Q程序代碼存儲問題和DSP脫機(jī)自舉問題,,不僅提高了調(diào)試效率,也增加了系統(tǒng)的靈活性,。本文討論的引導(dǎo)方法包括硬件設(shè)計及相關(guān)程序,,已經(jīng)在筆者的實(shí)際開發(fā)語音項(xiàng)目中使用并成功運(yùn)行。
參考文獻(xiàn)
[1] 薛金輝,王忠勇. TMS320VC5501在線燒寫Flash并自舉啟動方法研究[J]. 通訊技術(shù),2009,42(09):193-195.
[2] Texas Instruments. TMS320VC5509 DSP external memory interface (EMIF) reference guide[S]. Literature Number: SPRU670,2003(10).
[3] Texas Instruments. Using the TMS320VC5509A bootloader [S]. SPRA375F, 2008(9).
[4] Advanced Micro Devices. am29lv800b [R].AMD Technical specification, publication #21490, 2000(8).

此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權(quán)禁止轉(zhuǎn)載,。