橙子视频app


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

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

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

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

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

MEMORY

{

……

BEGIN       : origin = 0x3F7FF6, length = 0x000002

PASSWDS    : origin = 0x3F7FF8, length = 0x000008

……

}

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

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

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

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

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

MEMORY

{

……

PRAMH0     : origin = 0x3f8000, length = 0x002000

……

}

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

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

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