新聞中心

        EEPW首頁 > 嵌入式系統 > 牛人業話 > DSP編程技巧之2:揭開編譯器神秘面紗之處理器選項

        DSP編程技巧之2:揭開編譯器神秘面紗之處理器選項

        ——
        作者:paradoxfx 時間:2013-12-18 來源:電子產品世界 收藏

        處理器選項

        本文引用地址:http://www.104case.com/article/198710.htm

        別名

        含義

        --silicon_version=28

        -v28

        C28x架構的產生目標文件;不選擇的話模式為C27x模式,也可以選擇為C2xLP兼容模式(例如讓C28CPU支持C24的匯編語句,存在較多的兼容性問題,因為尋找模式、CPU架構等都發生了一定的變化,有的指令不再適用于新器件)。后兩種模式大部分網友都幾乎不會用到,所以我們的選項里面一般都會選擇-v28。更詳細的信息可以參考CPU介紹和匯編編程指南。

        --large_memory_model

        -ml

        產生大內存模式下的代碼。開啟這個選項的話,會強迫把整個地址空間當作一塊完整的22位寬的空間(實際是分為16位寬的低地址和超過16位寬度之后的高地址空間的),從而使得尋址時使用的指針也是22位的(這個指針是針對CPU尋址來說的,不是我們C程序里用的指針),這樣尋找空間就不必局限于216次方,即64K了。這種模式適合在C++編程的時候使用,使得編譯生成的代碼可以訪問超過16位寬度的地址空間的存儲單元,這樣就沒有64K字的空間限制了。

        那么為什么在在C++編程時使用呢?是因為目前不支持C++的關鍵字far;如果你了解C++關鍵字的話,那用同樣的思路來理解這個模式就容易了。

        此外,在開啟的情況下,大內存模式是必須開啟的,否則編譯器會報錯。

        在新建C2000的工程,需要添加相關的庫文件的時候,如果你再看到有的庫是rts2800.lib,有的是rts2800_ml.lib,這次應該明白改用哪個了吧。小建議是為了省事和保持兼容性,沒有別的顧慮的話就把這個選項打開吧。

        --unified_memory

        -mt

        統一的內存模式下產生代碼。顧名思義,就是把所有的存儲空間定義為一個整體,這樣編譯器在編譯時就可以使用RPTPREAD指令來處理大部分的內存復制memcpy調用和結構體的分配(它也不用“擔心”存儲空間突然出個斷層,沒法連續尋找了)。例如像下面的匯編指令就可以得到更加高效的執行:

        MOVL XAR7, #Array1?? ;XAR7指向數組1

        MOVL XAR2, #Array2?? ;XAR2指向數組2

        RPT #(N-1) ;重復執行下一條指令N

        ||PREAD *XAR2++,*XAR7 ;Array2[i]=Array1[i],i++

        這樣的一段匯編代碼我們可以直接手工編寫;如果你有個for循環的C代碼的話,看一下編譯生成的匯編代碼,是不是幾乎一模一樣的?

        --cla_support[=cla0]

        --cla_supportC2833x系列之后的Piccolo系列才有的特性,叫控制規律加速器,意思是把一些與控制系統性能息息相關的代碼放到CLA中獨立運行,不占用CPU時間,這樣整個控制軟件的運行速度都得到極大提高,從而保證實時性。

        --float_support={fpu32|softlib|fpu64}

        在啟用了-v28-ml的前提下才能使用;含義是啟用軟件處理(比如調用一些優化好的庫函數)、32位或者64位的協處理器進行浮點運算,從而支持相關的匯編指令。

        這這個子選項是不能同時使用的,即使用方法為:

        --float_support=fpu32

        或者--float_support=fpu64等。

        需要補充的是,這里的64位浮點運算指的數據類型是long double,而實際上28335這樣的目前只硬件支持32位的FPU運算,64位的浮點運行要經過CPU折算再送給FPU處理的,所以不是必須的話盡量不要使用FPU64這樣的運算。

        --vcu_support[=vcu0]

        VCUF2837xD這樣的高端芯片上具備的功能,指的是Viterbi and complex unit (VCU II) accelerators,即通過采用viterbi 復雜單元 (VCU II) 加速器執行振動分析來更好地預測電機故障,振動信號的來源是加速度傳感器或者振動傳感器等,可以使用流行的MEMS,可以貼在電機的外殼、編碼器等部位。如果需要使用這個功能的話,就需要在編譯器選項里面打開它。

        c++相關文章:c++教程



        上一頁 1 2 下一頁

        關鍵詞: FPU CCS DSP 編譯器

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 崇明县| 浮山县| 稻城县| 眉山市| 辽源市| 蓝山县| 达拉特旗| 山阳县| 多伦县| 奈曼旗| 天祝| 叙永县| 定西市| 若羌县| 酉阳| 日土县| 平利县| 随州市| 通河县| 阿鲁科尔沁旗| 临湘市| 额济纳旗| 定日县| 同江市| 长武县| 杭锦旗| 涟水县| 靖边县| 大兴区| 如东县| 凤翔县| 禄丰县| 依安县| 灵寿县| 宜兴市| 丹凤县| 郁南县| 济源市| 五莲县| 巢湖市| 鄂尔多斯市|