橙子视频app


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

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

對于DSP2812與(yu)其(qi)他(ta)主(zhu)控芯片相(xiang)似,其(qi)運行模(mo)式主(zhu)要分為(wei)分為(wei)帶有仿真器的調試仿真模(mo)式和脫(tuo)離仿真器的獨(du)立運行模(mo)式,對于DSP來說兩(liang)者的(de)區別(bie)在(zai)于程序是分配在(zai)RAM中還是分配在FLASH中運行。以下主要討論的(de)是實現脫(tuo)離仿真器上電自(zi)動運行的(de)模(mo)式(shi),即將程序和數(shu)據分配到片(pian)內FLASH中完成獨立運行,仿(fang)真調試模式下文作為對(dui)比也簡單說明(ming)僅作參考。

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

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

MEMORY

{

……

BEGIN       : origin = 0x3F7FF6, length = 0x000002

PASSWDS    : origin = 0x3F7FF8, length = 0x000008

……

}

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

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

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

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

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

MEMORY

{

……

PRAMH0     : origin = 0x3f8000, length = 0x002000

……

}

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

以上僅僅是個人在實踐過程中對于DSP啟動過(guo)程(cheng)的(de)籠統理解(jie),難(nan)免偏(pian)頗,同(tong)時敘述(shu)也比較(jiao)簡單、粗糙,但仍然(ran)希望(wang)能(neng)與(yu)大(da)家分享和(he)(he)討(tao)論(lun),以(yi)增(zeng)進(jin)彼此(ci)對(dui)于(yu)軟硬件方面理解(jie)。當然(ran)其中的(de)錯(cuo)誤也期待大(da)家的(de)善意批評和(he)(he)指點,最后希望(wang)以(yi)上的(de)內(nei)容能(neng)夠帶給大(da)家些(xie)許幫(bang)助或啟發,以(yi)達(da)到(dao)技術交流的(de)目的(de),彼此(ci)都能(neng)夠有(you)所收獲,不勝感(gan)激!

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