<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > TMS320F2812代碼運行性能的研究

TMS320F2812代碼運行性能的研究

作者: 時(shí)間:2008-01-29 來(lái)源:網(wǎng)絡(luò ) 收藏
引 言
是目前非常優(yōu)秀的32位定點(diǎn)DSP,集成了多種外設。對開(kāi)發(fā)通常利用TI公司的CCS2集成開(kāi)發(fā)環(huán)境,使用JTAG接口仿真器連接目標板,可以不占用用戶(hù)資源實(shí)現全速/斷點(diǎn)調試;仿真調試完成后對CMD文件進(jìn)行相關(guān)修改,并用RTS2800_FL04830.LIB替換RTS2800N.LIB,必要時(shí)對程序中變量與函數分配的空間做部分調整后,編譯項目得到輸出文件;在CCS2集成開(kāi)發(fā)環(huán)境中完成下載、加密等操作后,斷電脫離仿真機,成為獨立的嵌入式系統。
然而,相當多的應用設計者常常面臨程序仿真通過(guò),但獨立失敗的情況,表現均為程序比估計的要差很多,以致來(lái)不及處理實(shí)時(shí)數據。由于在Flash中運行的時(shí)間比在SARAM中仿真的時(shí)間長(cháng),有的設計試驗出現在Flash中運行比仿真慢4倍以上的結果,使設計只能停留在仿真通過(guò)的層次上。

1 分析
TI公司提供的一篇文檔資料spra958e.pdf,描述了在內部Flash中運行程序的相關(guān)知識,說(shuō)明當在RAM中仿真速度為150 MIPS時(shí),相應Flash中的執行速度可達90~lOO MIPS;同時(shí)。在此文檔資料中提供了參考實(shí)例,但介紹性文字較多,實(shí)現高的具體配置方式描述不夠具體。經(jīng)反復閱讀TI公司的其他相關(guān)文檔資料,并編程對比實(shí)驗,筆者摸索出實(shí)現Flash中運行速度達到RAM中仿真速度的75%左右的方法,與TI指標相符合。下面詳細說(shuō)明試驗程序與方法。限于篇幅,只列出與試驗過(guò)程密切相關(guān)部分的配置情況。試驗程序使用的空間分配如表1所列。

試驗程序如下:

下面是CMD文件關(guān)鍵內容。因RAM仿真與下載Flash所用CMD文件有差異,故為節省篇幅,混合寫(xiě)在一起,差異部分參見(jiàn)說(shuō)明。


試驗程序運行時(shí),用示波器在的XF輸出腳可以測量到重復脈沖(如圖1所示),表2為對應的測量結果。

函數InitFlash()設置了等待參數。在100 MHz的系統時(shí)鐘條件下,筆者的實(shí)例能保證正常執行的最佳參數;而其他設置會(huì )產(chǎn)生運行速度慢,或過(guò)快但運行不穩定的結果。觀(guān)察表2的測量結果,可以發(fā)現各方式下T1時(shí)間不變,原因為指令“asm(“RPT#248||NOP”)”取指令只執行一次,然后在DSP中內部循環(huán)執行250次,而只有取指令才涉及等待參數問(wèn)題,所以在試驗的4種條件下T1基本相同(畢竟還是存在取指令過(guò)程,每種條件下T1并非完全一致,有微小差別)。因Flash本身訪(fǎng)問(wèn)速度比SARAM要慢,指令需要插入等待周期。
表2說(shuō)明了下載到Flash中運行時(shí)的速度與在SARAM中仿真時(shí)相比,有所下降。T2/T3/T4雖然同為數據傳送花費時(shí)間,但因分布空間不同,對應匯編指令數和指令類(lèi)型相應有增減,故表現出不同的執行時(shí)間,其中數據在外部RAM中傳輸比在內部SARAM中傳輸要慢。
表2還顯示出下載到Flash中運行,如果同時(shí)對芯片加密,則應當特別注意變量分配的空間位置。加密后Flash處于安全模塊中,如果變量分配到HO,那么由于H0是非安全塊,DSP工作時(shí)可以在兩種模塊中動(dòng)態(tài)切換,不需要開(kāi)發(fā)者附加。描述參見(jiàn)TI文檔資料中的CSM章節,但并未說(shuō)明需要額外增加時(shí)間開(kāi)銷(xiāo)。LOL1是安全塊,如果變量分配到L0L1或是沒(méi)有加密,則因不存在安全與非安全模塊的切換時(shí)間開(kāi)銷(xiāo),速度比較快。當采用保護芯片知識產(chǎn)權而需要加密Flash時(shí)必須注意分配變量空間,把對運行速度敏感的參數分配到LOLl中,否則會(huì )發(fā)現程序執行速度降低到仿真時(shí)的1/4。由于內部SARAM空間有限,應用系統往往需要外擴RAM,數據交換將比在內部SARAM執行時(shí)有所增多。

2 結論
通過(guò)前面的試驗,可以得到幾個(gè)在TMS320F2812應用開(kāi)發(fā)中,運行于Flash中的代碼如何提高性能的指導原則:
①根據系統時(shí)鐘選擇合適的等待參數;
②數據分配空間從指令類(lèi)型與數量上影響程序執行效率;
③Flash加密后,對執行速度有快速性要求的應用系統,應當在CMD文件中指定運行空間在SARAM的L0L1段,并注意變量分配的段空間。
設計系統如果滿(mǎn)足上面幾個(gè)原則,那么程序執行效率就可達到SARAM仿真時(shí)的70%。



關(guān)鍵詞: 研究 性能 運行 代碼 TMS320F2812

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>