橙子视频app


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

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

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

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

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

MEMORY

{

……

BEGIN       : origin = 0x3F7FF6, length = 0x000002

PASSWDS    : origin = 0x3F7FF8, length = 0x000008

……

}

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

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

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

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

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

MEMORY

{

……

PRAMH0     : origin = 0x3f8000, length = 0x002000

……

}

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

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

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