提高DSP代碼運(yùn)行性能的研究
其次由于存儲(chǔ)空間使用裝載與運(yùn)行分離的配置模式,因此必須重新設(shè)計(jì)鏈接文件(CMD文件)。在設(shè)計(jì)新的CMD文件之前,首先介紹常用的分離配置鏈接命令指示器:“.label”定義一個(gè)可重定位代碼段標(biāo)簽,該標(biāo)簽表明代碼段內(nèi)部地址都是相對(duì)的,在鏈接時(shí)重新定義該段分配的首地址。相應(yīng)的段地址為“首地址+ 段內(nèi)偏移地址”。利用該匯編指示器可提供代碼裝載地址?!埃甮lobal”匯編指示器定義全局符號(hào),該符號(hào)表示全局地址,鏈接器利用該匯編指示器定義的運(yùn)行時(shí)全局地址,為程序提供在RAM中運(yùn)行時(shí)的人口地址?!埃眳R編指示器表示當(dāng)前代碼的運(yùn)行地址,它用來(lái)幫助計(jì)算運(yùn)行代碼的長(zhǎng)度。在CMD文件中定義可執(zhí)行代碼的運(yùn)行時(shí)首地址標(biāo)簽_fun_run和代碼長(zhǎng)度標(biāo)簽_fun_len;在存儲(chǔ)空間配置時(shí)定義COPYCODE段用來(lái)裝載應(yīng)用程序的可執(zhí)行代碼:在存儲(chǔ)空間配置時(shí)定義DATA0段做為應(yīng)用程序可執(zhí)行代碼段的運(yùn)行介質(zhì)。
具體存儲(chǔ)空間配置及CMD文件編寫(xiě)代碼如下:本文引用地址:http://butianyuan.cn/article/152359.htm
3.2 Bootloader裝載器軟件及硬件設(shè)計(jì)
設(shè)計(jì)Bootloader裝載器時(shí)應(yīng)注意兩點(diǎn):首先關(guān)閉看門(mén)狗,否則可能因?yàn)榘嵋茣r(shí)間過(guò)長(zhǎng)導(dǎo)致DSP被不斷復(fù)位,系統(tǒng)無(wú)法正常工作;必須定義 Bootloader裝載器的入口標(biāo)簽_c_int0和出口標(biāo)簽wfc_int0,實(shí)現(xiàn)Bootloader裝載完成搬移工作后順利進(jìn)入用戶應(yīng)用程序。
考慮到DSP上電工作順序:從系統(tǒng)復(fù)位指令處跳轉(zhuǎn)至運(yùn)行時(shí)支持代碼;創(chuàng)建C語(yǔ)言運(yùn)行環(huán)境;用戶程序入口 main();完成用戶初始化及應(yīng)用代碼。因此負(fù)責(zé)從Flash將應(yīng)用程序代碼拷貝到RAM的Bootloader裝載器必須在恰當(dāng)?shù)臅r(shí)間工作,否則應(yīng)用程序不能上電自動(dòng)運(yùn)行。由DSP上電工作順序可以發(fā)現(xiàn),系統(tǒng)上電復(fù)位時(shí)的復(fù)位地址是,固定的但跳轉(zhuǎn)指令所指的地址是由用戶指定的,也就是說(shuō),可以讓該復(fù)位跳轉(zhuǎn)指令指向所設(shè)計(jì)的Bootloader裝載器的首地址完成代碼搬移工作(其工作原理見(jiàn)圖1),然后Bootloader裝載器將DSP的控制權(quán)交給運(yùn)行支持庫(kù),完成C語(yǔ)言環(huán)境建立并進(jìn)入用戶程序入口main()開(kāi)始用戶程序。為此必須對(duì)運(yùn)行支持庫(kù)做如下修改:
從運(yùn)行支持庫(kù)rts.rc源文件中提取boot.a(chǎn)sm.將boot.a(chǎn)sm的入口地址_c_int0修改為wfc_int0地址,重新編譯boot. asm生成boot.obj文件,把boot.obj歸檔到C語(yǔ)言運(yùn)行支持庫(kù)rts.2xx.1ib。將修改后的運(yùn)行支持庫(kù)添加到工程中,實(shí)現(xiàn)Boot- loader裝載器先于運(yùn)行支持庫(kù)代碼執(zhí)行。
Bootloader裝載器利用裝載地址、運(yùn)行地址以及鏈接器提供的代碼長(zhǎng)度等信息,使用讀表指令“TBLR”將代碼從程序空間拷貝到數(shù)據(jù)空間,然后跳轉(zhuǎn)到運(yùn)行支持庫(kù)入口地址開(kāi)始執(zhí)行程序。DSP的這種搬移指令特點(diǎn)僅適合將數(shù)據(jù)表從程序空間拷貝到數(shù)據(jù)空間,要實(shí)現(xiàn)全部設(shè)計(jì)功能必須配合相應(yīng)的硬件設(shè)計(jì),由 TMS320LF2407DSP的存儲(chǔ)器映射結(jié)構(gòu)可以看出程序空間與數(shù)據(jù)空間是物理分離的,即有3個(gè)獨(dú)立的空間片選信號(hào)PS、DS、CS。為實(shí)現(xiàn)RAM共享,首先必須將PS和DS信號(hào)進(jìn)行“與“操作,然后將其輸出信號(hào)作為共享RAM的片選信號(hào),實(shí)現(xiàn)程序空間與數(shù)據(jù)空間的統(tǒng)一編址。根據(jù) TMS320LF2407DSP的存儲(chǔ)器映射結(jié)構(gòu),具體的存儲(chǔ)空間配置如下:0x0000~0x7FFF片上RAM、外設(shè)寄存器和保留的地址區(qū),該區(qū)域必須作為數(shù)據(jù)地址使用;利用圖2所示的硬件結(jié)構(gòu)實(shí)現(xiàn)0x8000~0xFFFF區(qū)域程序空間和數(shù)據(jù)空間共享RAM。共享RAM配置如下:數(shù)據(jù)區(qū) 0x8000~0xBFFF;程序區(qū)0xC000~0xFFFF。
評(píng)論