色偷偷偷久久伊人大杳蕉,色爽交视频免费观看,欧美扒开腿做爽爽爽a片,欧美孕交alscan巨交xxx,日日碰狠狠躁久久躁蜜桃

x
x

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

發(fā)布時(shí)間:2014-9-1 14:42    發(fā)布者:看門狗
關(guān)鍵詞: FPU , CCS , DSP , 編譯器
作者:paradoxfx 來源:電子產(chǎn)品世界

  也許你已經(jīng)熟練使用了CCS好多年,可是當(dāng)某一天出現(xiàn)一個(gè)與cl2000有關(guān)的錯(cuò)誤的時(shí)候,突然間也摸不著頭腦了;例如使用老版本的還不支持C2000 FPU的CCS來編譯28335的程序,cl2000就會(huì)提示你各種不支持然后報(bào)錯(cuò)不運(yùn)行了。Cl2000.exe是神馬?

  Cl2000.exe就是和我們的程序編譯密切相關(guān)的編譯器了,使用的方法是:
  cl2000 [編譯器選項(xiàng)] [需要編譯的文件] [--運(yùn)行鏈接器 [鏈接器選項(xiàng)] 目標(biāo)文件]]

  使用方法看起來很復(fù)雜,還好CCS已經(jīng)幫我們調(diào)用它了(或者說CCS就是一個(gè)框架,它完成的編譯、調(diào)試、鏈接等功能幾乎都需要調(diào)用一些別的exe來執(zhí)行,所以你可能體會(huì)過升級(jí)了一些庫(kù)文件、編輯器版本等,界面文件等卻不需要進(jìn)行任何的更改),這些句子會(huì)顯示在工程的屬性里面。當(dāng)然如果你想親自體驗(yàn)一把,也可以在ccs安裝目錄下面的tools\compiler\c2000_6.1.5\bin下面找到它,即cl2000.exe,然后用命令行的方式運(yùn)行起來)。舉個(gè)簡(jiǎn)單例子:

  cl2000 -v28 symtab.c file.c seek.asm --run_linker --library=lnk.cmd
  --output_file=myprogram.out

  在上面的例子中,如果需要編譯的文件,例如幾個(gè).c或者.asm找不到,CCS就會(huì)提示xxx.c或者xxx.asm找不到或者未定義了;或者你改了目標(biāo)文件的名字,例如改成了a.out,但是加載程序到DSP中的時(shí)候卻仍然使用更改前的b.out,自然有可能出現(xiàn)預(yù)料之外的結(jié)果了:在以前幫助網(wǎng)友解決問題的時(shí)候,確實(shí)出現(xiàn)過這樣的狀況。

  明白了編譯器的調(diào)用方法之后,我們就更進(jìn)一步,揭開編譯器中形形色色選項(xiàng)的神秘面紗,從此看到編譯器提示的形形色色的警告和錯(cuò)誤不再用發(fā)怵。

  具體說來,編譯器的選項(xiàng)有多大20個(gè)大類,超過一百個(gè)具體的選項(xiàng)。當(dāng)然這些選項(xiàng)是有輕重之分的,有的是必須用到的,例如支持一下FPU等功能;有的則是不常接觸的,例如MISRA這樣的汽車工業(yè)軟件可靠性檢查,只有在對(duì)軟件進(jìn)行標(biāo)準(zhǔn)化時(shí)才會(huì)用到。所以我們首先看一下最常用的選項(xiàng),例如處理器的選項(xiàng),它們的意義在于定義了在編譯程序時(shí)CPU的模式。補(bǔ)充一點(diǎn)是,cl2000的幫助里看到的選項(xiàng)都是很長(zhǎng)的名字,在CCS里面為了書寫方便(因?yàn)檫x項(xiàng)框就那么點(diǎn)面積啊),一般用別名來代替;沒有別名的則直接使用選項(xiàng)名字。

處理器選項(xiàng)
別名
含義
--silicon_version=28
0
為C28x架構(gòu)的DSP產(chǎn)生目標(biāo)文件;不選擇的話模式為C27x模式,也可以選擇為C2xLP兼容模式(例如讓C28的CPU支持C24的匯編語句,存在較多的兼容性問題,因?yàn)閷ふ夷J、CPU架構(gòu)等都發(fā)生了一定的變化,有的指令不再適用于新器件)。后兩種模式大部分網(wǎng)友都幾乎不會(huì)用到,所以我們的編譯器選項(xiàng)里面一般都會(huì)選擇-v28。更詳細(xì)的信息可以參考DSP的CPU介紹和匯編編程指南。
--large_memory_model-ml產(chǎn)生“大內(nèi)存模式”下的代碼。開啟這個(gè)選項(xiàng)的話,會(huì)強(qiáng)迫編譯器把整個(gè)地址空間當(dāng)作一塊完整的22位寬的空間(實(shí)際是分為16位寬的低地址和超過16位寬度之后的高地址空間的),從而使得尋址時(shí)使用的指針也是22位的(這個(gè)指針是針對(duì)CPU尋址來說的,不是我們C程序里用的指針),這樣尋找空間就不必局限于2的16次方,即64K了。這種模式適合在C++編程的時(shí)候使用,使得編譯生成的代碼可以訪問超過16位寬度的地址空間的存儲(chǔ)單元,這樣就沒有64K字的空間限制了。
那么為什么在在C++編程時(shí)使用呢?是因?yàn)槟壳熬幾g器不支持C++的關(guān)鍵字far;如果你了解C++關(guān)鍵字的話,那用同樣的思路來理解這個(gè)模式就容易了。
此外,在開啟FPU的情況下,大內(nèi)存模式是必須開啟的,否則編譯器會(huì)報(bào)錯(cuò)。
在新建C2000的工程,需要添加相關(guān)的庫(kù)文件的時(shí)候,如果你再看到有的庫(kù)是rts2800.lib,有的是rts2800_ml.lib,這次應(yīng)該明白改用哪個(gè)了吧。小建議是為了省事和保持兼容性,沒有別的顧慮的話就把這個(gè)選項(xiàng)打開吧。
--unified_memory-mt在“統(tǒng)一的內(nèi)存模式”下產(chǎn)生代碼。顧名思義,就是把所有的存儲(chǔ)空間定義為一個(gè)整體,這樣編譯器在編譯時(shí)就可以使用RPT與PREAD指令來處理大部分的內(nèi)存復(fù)制memcpy調(diào)用和結(jié)構(gòu)體的分配(它也不用“擔(dān)心”存儲(chǔ)空間突然出個(gè)斷層,沒法連續(xù)尋找了)。例如像下面的匯編指令就可以得到更加高效的執(zhí)行:
MOVL XAR7, #Array1    ;XAR7指向數(shù)組1
MOVL XAR2, #Array2    ;XAR2指向數(shù)組2
RPT #(N-1) ;重復(fù)執(zhí)行下一條指令N次
||PREAD *XAR2++,*XAR7 ;Array2=Array1,i++
這樣的一段匯編代碼我們可以直接手工編寫;如果你有個(gè)for循環(huán)的C代碼的話,看一下編譯生成的匯編代碼,是不是幾乎一模一樣的?
--cla_support[=cla0]--cla_support是C2833x系列之后的Piccolo系列才有的特性,叫控制規(guī)律加速器,意思是把一些與控制系統(tǒng)性能息息相關(guān)的代碼放到CLA中獨(dú)立運(yùn)行,不占用CPU時(shí)間,這樣整個(gè)控制軟件的運(yùn)行速度都得到極大提高,從而保證實(shí)時(shí)性。
--float_support={fpu32|softlib|fpu64}在啟用了-v28和-ml的前提下才能使用;含義是啟用軟件處理(比如調(diào)用一些優(yōu)化好的庫(kù)函數(shù))、32位或者64位的FPU協(xié)處理器進(jìn)行浮點(diǎn)運(yùn)算,從而支持相關(guān)的匯編指令。
這這個(gè)子選項(xiàng)是不能同時(shí)使用的,即使用方法為:
--float_support=fpu32
或者--float_support=fpu64等。
需要補(bǔ)充的是,這里的64位浮點(diǎn)運(yùn)算指的數(shù)據(jù)類型是long  double,而實(shí)際上28335這樣的DSP中FPU目前只硬件支持32位的FPU運(yùn)算,64位的浮點(diǎn)運(yùn)行要經(jīng)過CPU折算再送給FPU處理的,所以不是必須的話盡量不要使用FPU64這樣的運(yùn)算。
--vcu_support[=vcu0]VCU是F2837xD這樣的高端芯片上具備的功能,指的是Viterbi  and complex unit (VCU II) accelerators,即通過采用viterbi 復(fù)雜單元  (VCU II)  加速器執(zhí)行振動(dòng)分析來更好地預(yù)測(cè)電機(jī)故障,振動(dòng)信號(hào)的來源是加速度傳感器或者振動(dòng)傳感器等,可以使用流行的MEMS,可以貼在電機(jī)的外殼、編碼器等部位。如果需要使用這個(gè)功能的話,就需要在編譯器選項(xiàng)里面打開它。


本文地址:http://m.54549.cn/thread-132446-1-1.html     【打印本頁】

本站部分文章為轉(zhuǎn)載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀點(diǎn)和對(duì)其真實(shí)性負(fù)責(zé);文章版權(quán)歸原作者及原出處所有,如涉及作品內(nèi)容、版權(quán)和其它問題,我們將根據(jù)著作權(quán)人的要求,第一時(shí)間更正或刪除。
您需要登錄后才可以發(fā)表評(píng)論 登錄 | 立即注冊(cè)

相關(guān)視頻

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權(quán)所有   京ICP備16069177號(hào) | 京公網(wǎng)安備11010502021702
快速回復(fù) 返回頂部 返回列表