精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何提高嵌入式應用設計中的DSP代碼運行性能

電子設計 ? 來源:郭婷 ? 作者:電子設計 ? 2019-08-07 08:12 ? 次閱讀

1 引言

隨著微控制器技術的發展,以TI公司TMS320C2000系列為代表的DCS型數字信號處理器DSP應用廣泛。該類型DSP內部集成Flash存儲器,可將二進制代碼同化到其內部的Flash存儲器直接運行。這種運行方式在傳統嵌入式應用設計中很有效,但在一些算法比較復雜、系統響應要求快速、通訊任務比較繁重的嵌入式應用中,這種運行方式會導致控制系統響應遲緩、通訊異常、I/O操作緩慢等問題。針對這些情況,提出一種新的解決方案,來提高DSP代碼運行性能。

2 問題分析及設計方案

由于應用程序在Flash中運行速度遠低于在RAM中,因此在復雜嵌入式應用中會出現控制系統響應遲緩、通訊異常、I/O操作緩慢等問題。為了避免這些問題,只能讓程序在RAM中運行。TI公司的TMS320C2000系列DSP有2種工作模式:微處理器模式和微控制器模式。當DSP處于微控制器模式時,在RAM中程序運行速度達到峰值,但掉電后程序丟失,系統無法重新自動運行,因此這種程序運行方式僅適用于仿真調試階段。因此,DSP必須工作在微處理器模式下,使用片內Flash作為運行程序的存儲和運行介質,才能保證系統上電后自動運行。但其程序運行效率低。因此必須把這2種工作模式相結合:首先將應用程序固化到片內Flash存儲器,當系統上電后由專門設計的裝載器(Bootloader) 負責將應用程序南Flash搬移到RAM,然后Bootloader將DSP控制權交給應用程序,從而實現DSP運行速度最高和上電后應用程序自動運行,解決了因程序在不同介質的不同效率所導致的系統響應遲緩、通訊異常、I/O操作緩慢等問題。

以TMS320LF2407 DSP為例進行說明:該DSP具有獨立的數據存儲空間和數據總線,以及程序存儲空間和程序總線。只有程序空間的程序才能被DSP視為是可執行程序,數據空間上的程序將被DSP視為操作數據,因此將應用程序直接從片內Flash拷貝到數據空間的RAM后應用程序是不能運行的。若使拷貝后的應用程序能夠被 DSP視為可執行程序還必須做一些輔助工作。

通過對TMS320LF2407的存儲映射結構分析可發現:程序空間和數據空間的擴展區域有部分地址可配置成相同存儲介質(Flash或者RAM),通過某種辦法可以實現共享,也就是說DSP可以將從Flash中拷貝到共享RAM的應用程序視為可執行代碼。

3 設計方案實施

3.1 TMS320LF2407存儲空間配置及CMD文件編寫

為實現程序空間與數據空間共享RAM的存儲器配置方案,首先要熟悉C語言7個存儲段對存儲介質的要求,其具體要求如表1所示。

如何提高嵌入式應用設計中的DSP代碼運行性能

從表1可以看出:“.bss”、“.sysmem”、“.stack”段的存儲介質必須是RAM,且使用數據空間地址;而“.text”、“. swtich”、“.cinit”段的存儲介質可以是RAM或ROM,但必須使用程序空間地址。“.text”是用來存放應用程序的可執行代碼的專用段,它既可運行在RAM中,也可在Flash中,該段的運行介質決定應用程序是否能夠達到最大性能。根據DSP命令鏈接文件(CMD文件)對匯編段的管理方式可知,“.text”可配置成裝載與運行分離的工作模式。這種模式可以使應用程序存儲在Flash中,運行在RAM中從而實現DSP上電后全速運行。

其次由于存儲空間使用裝載與運行分離的配置模式,因此必須重新設計鏈接文件(CMD文件)。在設計新的CMD文件之前,首先介紹常用的分離配置鏈接命令指示器:“.label”定義一個可重定位代碼段標簽,該標簽表明代碼段內部地址都是相對的,在鏈接時重新定義該段分配的首地址。相應的段地址為“首地址+ 段內偏移地址”。利用該匯編指示器可提供代碼裝載地址。“.global”匯編指示器定義全局符號,該符號表示全局地址,鏈接器利用該匯編指示器定義的運行時全局地址,為程序提供在RAM中運行時的人口地址。“.”匯編指示器表示當前代碼的運行地址,它用來幫助計算運行代碼的長度。在CMD文件中定義可執行代碼的運行時首地址標簽_fun_run和代碼長度標簽_fun_len;在存儲空間配置時定義COPYCODE段用來裝載應用程序的可執行代碼:在存儲空間配置時定義DATA0段做為應用程序可執行代碼段的運行介質。

具體存儲空間配置及CMD文件編寫代碼如下:

如何提高嵌入式應用設計中的DSP代碼運行性能

如何提高嵌入式應用設計中的DSP代碼運行性能

3.2 Bootloader裝載器軟件及硬件設計

設計Bootloader裝載器時應注意兩點:首先關閉看門狗,否則可能因為搬移時間過長導致DSP被不斷復位,系統無法正常工作;必須定義 Bootloader裝載器的入口標簽_c_int0和出口標簽wfc_int0,實現Bootloader裝載完成搬移工作后順利進入用戶應用程序。

考慮到DSP上電工作順序:從系統復位指令處跳轉至運行時支持代碼;創建C語言運行環境;用戶程序入口 main();完成用戶初始化及應用代碼。因此負責從Flash將應用程序代碼拷貝到RAM的Bootloader裝載器必須在恰當的時間工作,否則應用程序不能上電自動運行。由DSP上電工作順序可以發現,系統上電復位時的復位地址是,固定的但跳轉指令所指的地址是由用戶指定的,也就是說,可以讓該復位跳轉指令指向所設計的Bootloader裝載器的首地址完成代碼搬移工作(其工作原理見圖1),然后Bootloader裝載器將DSP的控制權交給運行支持庫,完成C語言環境建立并進入用戶程序入口main()開始用戶程序。為此必須對運行支持庫做如下修改:

從運行支持庫rts.rc源文件中提取boot.asm.將boot.asm的入口地址_c_int0修改為wfc_int0地址,重新編譯boot. asm生成boot.obj文件,把boot.obj歸檔到C語言運行支持庫rts.2xx.1ib。將修改后的運行支持庫添加到工程中,實現Boot- loader裝載器先于運行支持庫代碼執行。

如何提高嵌入式應用設計中的DSP代碼運行性能

Bootloader裝載器利用裝載地址、運行地址以及鏈接器提供的代碼長度等信息,使用讀表指令“TBLR”將代碼從程序空間拷貝到數據空間,然后跳轉到運行支持庫入口地址開始執行程序。DSP的這種搬移指令特點僅適合將數據表從程序空間拷貝到數據空間,要實現全部設計功能必須配合相應的硬件設計,由 TMS320LF2407DSP的存儲器映射結構可以看出程序空間與數據空間是物理分離的,即有3個獨立的空間片選信號PS、DS、CS。為實現RAM共享,首先必須將PS和DS信號進行“與“操作,然后將其輸出信號作為共享RAM的片選信號,實現程序空間與數據空間的統一編址。根據 TMS320LF2407DSP的存儲器映射結構,具體的存儲空間配置如下:0x0000~0x7FFF片上RAM、外設寄存器和保留的地址區,該區域必須作為數據地址使用;利用圖2所示的硬件結構實現0x8000~0xFFFF區域程序空間和數據空間共享RAM。共享RAM配置如下:數據區 0x8000~0xBFFF;程序區0xC000~0xFFFF。

如何提高嵌入式應用設計中的DSP代碼運行性能

這里的硬件結構配合Bootloader裝載器和特別設計的CMD文件實現了DSP運行速度最大和上電后代碼自動運行,解決了在復雜應用情況下控制系統響應遲緩、通訊異常等問題。

具體Bootloader裝載器設計代碼如下:

如何提高嵌入式應用設計中的DSP代碼運行性能

4 測試結果

該方案在某型防空武器火力控制分系統的實踐中表現良好。通過提高DSP程序運行效率成功解決了因控制系統實時多任務所導致的通訊異常問題,避免了不必要的硬件升級。經實驗對比發現:當系統有5個毫秒級實時任務同時工作時,采用Flash運行方式的 TTCAN通訊接口每毫秒最多可發送2幀數據,而采用本設計方案每毫秒最多可發送6幀數據,代碼運行效率提高了3倍。

5 結束語

該設計方案不僅成功解決了程序在Flash中運行效率低所導致的各種異常問題,同時還避免了不必要的處理器升級所帶來的成本和開發風險。其設計思想可以推廣到其他類似的應用中,從而最大限度的利用現有硬件基礎提高嵌入式系統的性能。


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 處理器
    +關注

    關注

    68

    文章

    19165

    瀏覽量

    229123
  • dsp
    dsp
    +關注

    關注

    552

    文章

    7962

    瀏覽量

    348264
  • 嵌入式
    +關注

    關注

    5068

    文章

    19019

    瀏覽量

    303265
收藏 人收藏

    評論

    相關推薦

    嵌入式機器視覺系統有什么特性?怎么優化?

    介紹了基于ARM+DSP架構的嵌入式機器視覺系統的特性,分析了制約嵌入式機器視覺系統性能的因素。從操作系統和應用程序方面,討論了嵌入式機器視
    發表于 03-11 06:47

    什么是嵌入式系統?

    綜合性嚴格要求的專用計算機系統。簡單地說,嵌入式系統集系統的 應用軟件 與硬件于 一體 ,類似于 PC BIOS 的工作方式,具有 軟件代碼 小、高度自動化、 響應速度 快等 特點 ,特別適合于
    發表于 04-16 09:53

    嵌入式和通用DSP之間的差別在哪

    DSP在內的多內核嵌入結構是提高整體數據處理能力的一個有效方案。如何更高速、高效地協調各個內核之間的工作成為這項工作的核心,與此相關的嵌入式軟件的
    發表于 12-15 06:01

    如何調試嵌入式代碼

    我們在進行嵌入式系統開發調試時,受限于嵌入式芯片資源和性能,一般采用遠程調試。在調試嵌入式底層代碼時,gdbserver 無法
    發表于 12-17 06:32

    如何在嵌入式設備上運行性能Java

    如何在嵌入式設備上運行性能Java
    發表于 03-28 09:43 ?16次下載

    嵌入式技術設計專用DSP系統研究

    分析了用嵌入式技術設計專用DSP處理系統的一些基本問題。分析結果指出,嵌入式技術的在專用DSP處理系統的應用設計可以發揮巨大的作用,是
    發表于 05-09 14:15 ?25次下載

    提高DSP代碼運行性能的研究

    傳統嵌入式應用設計通常是將程序直接固化到DSP內部的Flash存儲器運行,程序運行效率較低,不能充分發揮DSP
    發表于 12-27 15:34 ?25次下載

    如何優化嵌入式DSP應用的功耗

    如何優化嵌入式 DSP 應用的功耗 采用軟硬件技術可以提高電源效率,而使用內置電源管理 API 的 DSP RTOS 更容易實現上述目的。 作者:Scott Gary,德州
    發表于 04-22 11:44 ?694次閱讀

    DSP嵌入式系統人機接口設計

    DSP嵌入式系統人機接口設計  1 引言   人機接口是嵌入式控制系統的重要組成部分,用于人機之間實時交換控制系統并返回系統狀態。嵌入式系統大都采用液
    發表于 12-24 16:34 ?958次閱讀
    <b class='flag-5'>DSP</b><b class='flag-5'>嵌入式</b>系統人機接口設計

    嵌入式DSP在家電的應用

    本文將從嵌入式DSP電機控制芯片的基本特征開始,介紹一下基于DSP的磁場定向控制和擴展卡爾曼濾波算法
    發表于 09-24 00:43 ?905次閱讀
    <b class='flag-5'>嵌入式</b><b class='flag-5'>DSP</b>在家電<b class='flag-5'>中</b>的應用

    嵌入式DSP模塊和FPGA構架為基礎的提高無線信號處理性能的子系統設計

    您可以顯著提高無線系統中信號處理功能的性能。怎樣提高呢?有效方法是利用FPGA結構的靈活性和目前受益于并行處理的FPGA架構嵌入式
    發表于 07-17 11:48 ?835次閱讀
    以<b class='flag-5'>嵌入式</b><b class='flag-5'>DSP</b>模塊和FPGA構架為基礎的<b class='flag-5'>提高</b>無線信號處理<b class='flag-5'>性能</b>的子系統設計

    關于嵌入式代碼的致命漏洞

    輸入可以被制作成“包含代碼”,并且該程序可以被欺騙來執行該代碼代碼注入缺陷意味著黑客可以劫持現有進程,并以與原始進程相同的權限執行任何他們喜歡的代碼。 在許多
    的頭像 發表于 01-06 15:13 ?1780次閱讀

    DSP嵌入式系統的應用實例

    DSP嵌入式系統的應用實例(嵌入式開發工具軟件)-該文檔為DSP嵌入式系統
    發表于 07-30 13:09 ?22次下載
    <b class='flag-5'>DSP</b>在<b class='flag-5'>嵌入式</b>系統<b class='flag-5'>中</b>的應用實例

    DSP與MCU在嵌入式系統的應用

    DSP與MCU在嵌入式系統的應用(嵌入式開發解決方案)-該文檔為DSP與MCU在嵌入式系統
    發表于 07-30 13:11 ?12次下載
    <b class='flag-5'>DSP</b>與MCU在<b class='flag-5'>嵌入式</b>系統<b class='flag-5'>中</b>的應用

    嵌入式代碼高效運行指南

    嵌入式C語言之所以經久不衰,在于它的運行效率很高,想要高效運行代碼,除了編譯器幫忙優化,關鍵還要靠自己“優化”代碼
    的頭像 發表于 01-06 15:32 ?856次閱讀