橙子视频app


簡述DSP的工程文件與內部啟動過程

本文將公司常用的DSP系列芯片(pian)作(zuo)為(wei)主要描述對象,內容(rong)涉及其工(gong)程文件的(de)(de)(de)簡(jian)(jian)介和啟動(dong)過程的(de)(de)(de)簡(jian)(jian)單梳理(li),文中的(de)(de)(de)內容(rong)多來自工(gong)作(zuo)實踐和自己的(de)(de)(de)理(li)解(jie),以具(ju)體(ti)的(de)(de)(de)工(gong)程應用為(wei)主,意在(zai)與大(da)家(jia)進行技術(shu)交流,同(tong)時作(zuo)為(wei)簡(jian)(jian)單的(de)(de)(de)技術(shu)積累,由于內容(rong)主觀,不免有錯誤(wu)的(de)(de)(de)理(li)解(jie)和描述,誤(wu)導之處還請諒解(jie)!并期待大(da)家(jia)的(de)(de)(de)提(ti)點!首(shou)先本文是(shi)基于DSP芯片—TMS320F2812進行的相(xiang)關(guan)技術整理(li),下文將要提及的地址信息全部是DSP2812默認的片內地址,可根(gen)據(ju)手(shou)冊(ce)查詢,對于其他系列的芯片而言,文中相關內容(rong)僅(jin)具備對比和參考價值,特此說明(ming)。

對于DSP2812與其(qi)他主控芯片(pian)相似,其(qi)運行(xing)模式(shi)主要(yao)分(fen)為分(fen)為帶有仿真(zhen)器的調試仿真(zhen)模式(shi)和脫離仿真(zhen)器的獨立運行(xing)模式(shi),對于(yu)DSP來說(shuo)兩者的區別在于程序是分(fen)配在RAM中(zhong)還是分配在(zai)FLASH中運行。以下主要討論的是實現脫離仿(fang)真器上(shang)電自動運行的模式,即將(jiang)程序和數據分配到片內FLASH中(zhong)完成獨立(li)運(yun)行,仿真調試(shi)模式下文作(zuo)為對比也簡單說明僅作(zuo)參考。

要建立一個完整的DSP程序工程包含(han)需要幾種必要的文(wen)件類型(xing),其中涉及(ji)DSP啟動過程的主(zhu)要是CMD文件和asm文件,他們(men)分(fen)別用于片內(nei)地址分(fen)配和地址跳轉,共同引導了DSP從(cong)啟(qi)動(dong)到運行的過程(cheng)。

由于目前本人所應用的DSP都未(wei)涉及連接片外存(cun)儲(chu)設(she)備,因(yin)此本文(wen)中僅介紹DSP2812從(cong)片內flash啟(qi)動的(de)引導過程(cheng)。首先在芯(xin)片(pian)上電后,默認狀(zhuang)態下會到固(gu)(gu)定片(pian)內(nei)(nei)地址(zhi)提取已經(jing)固(gu)(gu)化好(hao)的(de)中斷向(xiang)量(liang)表(biao),然后根據(ju)已固(gu)(gu)化好(hao)的(de)地址(zhi)指針,再提取程(cheng)序(xu)中可能用(yong)到的(de)函(han)數(shu)信(xin)息,隨即進入片(pian)內(nei)(nei)flash的啟(qi)動(dong)模式,該啟(qi)動(dong)模式下默認跳轉到(dao)0x3F7FF6(DSP2812),該地址是片內flash的(de)一(yi)部分,根據以上(shang)信息,就需(xu)要在(zai)CMD文件(jian)中分配flash模式啟動區域如(ru)下:

MEMORY

{

……

BEGIN       : origin = 0x3F7FF6, length = 0x000002

PASSWDS    : origin = 0x3F7FF8, length = 0x000008

……

}

該區域命暫時名為BEGIN,截止到目前DSP默認的(de)啟動流程進入并停(ting)止在該(gai)區域(yu)中,用(yong)戶需要(yao)繼(ji)續添(tian)加(jia)程序(xu)代(dai)碼,其目的(de)是將啟動引(yin)入自己編(bian)寫的(de)C環境程(cheng)序中,最終實現在(zai)主程(cheng)序中運行,此處的程(cheng)序代碼(ma)需要(yao)寫(xie)在(zai)asm文件中,同時在asm文件中用(yong)戶自定義的代碼名稱也要在(zai)CMD文件(jian)中映射到BEGIN的地址上,使代碼在該地址中運行,完成啟動引導。需要注意的是根據DSP2812的片內信息,BEGIN區域距離默認的密碼區僅有2個字的(de)距(ju)離,只能放一(yi)個跳轉指令(ling),實現跳轉。

經過上文的簡單說明,不難看出含有跳轉代碼的asm文件是實現DSP啟動引(yin)導的(de)重要組成部(bu)分,將(jiang)啟動引(yin)入了C程序的入口,實(shi)現(xian)了(le)DSP從啟(qi)動到(dao)運行C程(cheng)序的過程(cheng)。如果工程(cheng)文件(jian)下沒有加(jia)載正確的asm文件或者類似(si)的跳轉指令,DSP將進入默認(ren)啟(qi)動區 0x3F7FF6,失去后續指令而跳不出來,可能的現象是程序能夠正確編譯和燒寫,但是上電后DSP無法運行編寫的程序,使用(yong)戶(hu)陷入誤(wu)區,找不到(dao)程序不運行的真正原因。

因此對于一個正確的能夠燒寫的DSP工(gong)程文(wen)(wen)件(jian)來說,文(wen)(wen)中的CMD文件和(he)asm文件(jian)都是必不可少的,在以上條件(jian)下如果(guo)工程編譯(yi)無誤(wu),將生(sheng)成(cheng)正確的.out燒(shao)寫(xie)文件,該文件將(jiang)分(fen)別記錄CMD的地址信(xin)息(xi)和asm中的跳轉信息,正(zheng)確(que)燒(shao)寫后(hou)才能夠確(que)保DSP獨立(li)運行。

到此基本能夠實現做一個項目的最終目的,核心芯片DSP能夠脫離仿(fang)真器(qi)獨立運(yun)(yun)行(xing)(xing),而帶有仿(fang)真器(qi)的(de)調(diao)試(shi)模(mo)式(shi)作為程序測(ce)試(shi)中的(de)一(yi)項重要手段,其運(yun)(yun)行(xing)(xing)模(mo)式(shi)與(yu)上文中的(de)獨立運(yun)(yun)行(xing)(xing)模(mo)式(shi)相比有相似之處也有明顯(xian)的(de)區別,此處淺談兩(liang)者的(de)異同,以更好的(de)理解獨立模(mo)式(shi)下程序的(de)啟(qi)動(dong)與(yu)運(yun)(yun)行(xing)(xing)。

首先兩者都能夠實現芯片上電后進入C程序運(yun)行的過程,區別(bie)在于(yu)兩者(zhe)CMD文件的地址空(kong)間(jian)分配不同,仿真模(mo)式的程序(xu)段全部來自芯片內部的RAM區域掉電消失(shi),同時需(xu)要(yao)仿真(zhen)器(qi),其(qi)程序RAM地址分配如下(DSP2812RAM)

MEMORY

{

……

PRAMH0     : origin = 0x3f8000, length = 0x002000

……

}

所以調試狀態下CMD文件中的映(ying)射也(ye)全部來自芯片的RAM區域,因(yin)此(ci)該模式下(xia)無需地址跳(tiao)轉(zhuan)即能夠進入C程序中,從(cong)而該模式下不需要asm文件(jian)指引啟(qi)動過程,調(diao)試時需要將該文件(jian)移除,只(zhi)分配(pei)正(zheng)確的(de)RAM空(kong)間(jian)即(ji)可實現調試。

以上僅僅是個人在實踐過程中對于DSP啟動過程(cheng)的(de)籠統理解,難免偏頗,同時敘述也比較簡單、粗糙,但仍然希(xi)望能與(yu)大家(jia)(jia)分享(xiang)和討論,以增進(jin)彼(bi)此對于軟硬件方面理解。當然其中的(de)錯誤(wu)也期待大家(jia)(jia)的(de)善意批(pi)評和指點,最后希(xi)望以上的(de)內容能夠(gou)帶(dai)給大家(jia)(jia)些許幫助或啟發,以達到(dao)技術交流的(de)目的(de),彼(bi)此都能夠(gou)有所(suo)收獲,不勝感(gan)激!

Copyright © 2015 黑龍江特通電氣股份有限公司. 保留所有權利。 黑公安網備23010902000227隱私政策 使用條款 銷售政策 網站地圖
技術支持: 資海科技集團