橙子视频app


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

本文將公司常用的DSP系(xi)列芯片作為主(zhu)要描(miao)述對象(xiang),內(nei)容涉及(ji)其工(gong)程(cheng)文件的(de)簡(jian)介和(he)(he)啟(qi)動過程(cheng)的(de)簡(jian)單(dan)(dan)梳(shu)理,文中的(de)內(nei)容多來(lai)自工(gong)作實踐(jian)和(he)(he)自己的(de)理解,以(yi)具體的(de)工(gong)程(cheng)應用為主(zhu),意在(zai)與(yu)大(da)家進行技術交流,同時作為簡(jian)單(dan)(dan)的(de)技術積累(lei),由于內(nei)容主(zhu)觀(guan),不免有錯誤的(de)理解和(he)(he)描(miao)述,誤導之處還請(qing)諒(liang)解!并期待大(da)家的(de)提點(dian)!首先本文是(shi)基于DSP芯(xin)片—TMS320F2812進行的(de)相關技術整理,下文將要(yao)提及的(de)地(di)址信息全部(bu)是DSP2812默認的(de)片內地址,可根據手(shou)冊(ce)查詢,對(dui)于其他系(xi)列(lie)的(de)芯(xin)片而言(yan),文中(zhong)相關內容僅具備(bei)對(dui)比(bi)和參(can)考(kao)價值,特此說明。

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

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

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

MEMORY

{

……

BEGIN       : origin = 0x3F7FF6, length = 0x000002

PASSWDS    : origin = 0x3F7FF8, length = 0x000008

……

}

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

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

因此對于一個正確的能夠燒寫的DSP工程文件來說,文中的CMD文(wen)件和asm文件都是必不可少的(de),在以上(shang)條件下如果工程編(bian)譯無誤,將生成正確的(de).out燒寫文件,該文件將(jiang)分別記錄CMD的地址信(xin)息和asm中的(de)跳(tiao)轉信息,正確燒寫(xie)后(hou)才能夠確保(bao)DSP獨立運(yun)行(xing)。

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

首先兩者都能夠實現芯片上電后進入C程序運行的過程,區別在于兩者CMD文件的(de)(de)(de)地址空間分配不同,仿真模式的(de)(de)(de)程(cheng)序段全部來自(zi)芯片內部的(de)(de)(de)RAM區(qu)域(yu)掉電消失(shi),同時(shi)需要仿(fang)真器,其程序RAM地(di)址(zhi)分(fen)配如(ru)下(DSP2812RAM)

MEMORY

{

……

PRAMH0     : origin = 0x3f8000, length = 0x002000

……

}

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

以上僅僅是個人在實踐過程中對于DSP啟(qi)動過(guo)程(cheng)的(de)籠統理解(jie),難免(mian)偏頗,同時敘述也(ye)比較簡單、粗糙,但仍然希望(wang)能(neng)與大(da)家(jia)分享和討論,以(yi)增進彼(bi)此對于軟(ruan)硬件方面(mian)理解(jie)。當然其中的(de)錯(cuo)誤也(ye)期待大(da)家(jia)的(de)善意批評和指(zhi)點,最(zui)后(hou)希望(wang)以(yi)上的(de)內容能(neng)夠帶給大(da)家(jia)些(xie)許(xu)幫(bang)助或(huo)啟(qi)發,以(yi)達到技術交(jiao)流的(de)目的(de),彼(bi)此都(dou)能(neng)夠有所收(shou)獲,不勝感激!

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