国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

C語言在DSP嵌入式系統(tǒng)中的應(yīng)用與開發(fā)

2020-12-01 03:17:10殷莉溫赟
電腦知識(shí)與技術(shù) 2020年29期
關(guān)鍵詞:嵌入式系統(tǒng)

殷莉 溫赟

摘要:當(dāng)前的計(jì)算機(jī)程序應(yīng)用大都以嵌入式系統(tǒng)為主,且是以DSP核心構(gòu)建而成的。這一系統(tǒng)的應(yīng)用與開發(fā)模式主要是采用了C語言匯編的方法,依托DSP系統(tǒng)的存在周期和開發(fā)周期對(duì)其進(jìn)行移植性的調(diào)整與提升,進(jìn)而降低嵌入式系統(tǒng)的缺陷,提升嵌入式系統(tǒng)的穩(wěn)定性。所以,很多DSP開發(fā)人員對(duì)于C語言的應(yīng)用較為廣泛,且開發(fā)的系統(tǒng)穩(wěn)定性和運(yùn)算與命令執(zhí)行效率較高。研究將針對(duì)當(dāng)前C語言在DSP嵌入式系統(tǒng)中的開發(fā)模式和應(yīng)用方法展開研究,并且會(huì)提出相應(yīng)的問題和解決問題的策略與方法,進(jìn)而實(shí)現(xiàn)對(duì)系統(tǒng)的完整構(gòu)建。同時(shí),還會(huì)從現(xiàn)實(shí)應(yīng)用角度對(duì)其進(jìn)行C語言DSP嵌入式系統(tǒng)開發(fā)過程中的注意事項(xiàng)說明,以此降低技術(shù)人員在后期應(yīng)用C語言開發(fā)DSP嵌入式系統(tǒng)過程中發(fā)生問題的概率。

關(guān)鍵詞:C語言;DSP;嵌入式系統(tǒng);語言開發(fā)

中圖分類號(hào):rrP311 文獻(xiàn)標(biāo)識(shí)碼:A

文章編號(hào):1009-3044(2020)29-0204-02

1 引言

隨著當(dāng)今時(shí)代的發(fā)展,信息技術(shù)得到了飛速的進(jìn)步,且快速滲透到了人們的日常生活中,成為人們生活與工作的重要組成部分。在這一模式下,社會(huì)的發(fā)展對(duì)于信息技術(shù)的依賴程度更大,且信息技術(shù)本身的發(fā)展也更加多元化與理想化。在這一背景下,DSP技術(shù)被廣泛應(yīng)用于其中,主要領(lǐng)域有:電子通信行業(yè)、無線電軟件應(yīng)用行業(yè)、儀器儀表行業(yè)、自動(dòng)控制行業(yè)、人工智能行業(yè)等。這就為當(dāng)今時(shí)代背景下的DSP技術(shù)提供了深度發(fā)展的機(jī)會(huì),同時(shí)也為DSP嵌入式產(chǎn)品的應(yīng)用帶來了全新的發(fā)展空間。當(dāng)前人們對(duì)DSP嵌入式產(chǎn)品的應(yīng)用主要來自以下幾種原因:第一是自從控制器被發(fā)明之后,僅僅配備了語言編輯功能的軟件開發(fā)功能,并沒有配備高級(jí)語言的應(yīng)用功能;第二是匯編語言程序生成是二進(jìn)制,其代碼少,且運(yùn)行和執(zhí)行速度飛快;第三是介于儲(chǔ)存器對(duì)價(jià)格和空間的限制,無法對(duì)其進(jìn)行廣泛的應(yīng)用。所以,在這一背景下,DSP嵌入式產(chǎn)品成為其中的佼佼者,并且有效解決了上述問題。在當(dāng)今,C語言在DSP嵌入式系統(tǒng)中的應(yīng)用具備較大的優(yōu)勢:首先是可移植性良好且開發(fā)周期可控;第二是調(diào)試和后期檢測與維護(hù)工作開展較為方便。介于以上兩大特色,大家對(duì)于C語言在嵌入式產(chǎn)品中的應(yīng)用和開發(fā)更加熱衷。

2 C語言在TMS320VC33芯片的開發(fā)過程

在對(duì)其進(jìn)行開發(fā)的過程中,需要結(jié)合下文中敘述的四個(gè)步驟開展實(shí)施:首先是通過對(duì)C語言的編輯完成源程序;其次是完成好編譯工作,設(shè)計(jì)好鏈接;然后是通過在線仿真對(duì)其進(jìn)行檢測;最后是利用固化程序整個(gè)系統(tǒng)的設(shè)計(jì)與開發(fā)。

2.1 編輯源代碼

在對(duì)源代碼進(jìn)行編輯的過程中,需要結(jié)合Code Composer的背景對(duì)其進(jìn)行工程的建設(shè),以此實(shí)現(xiàn)對(duì)CSRJ.MAK的構(gòu)建。在此,需要構(gòu)建一個(gè)C源代碼文件,將其設(shè)計(jì)為CSRJ.C,具體內(nèi)容為C語言源程序。另外,還需要籌建一個(gè)VC33.H的頭文件,在后續(xù)的程序開發(fā)與設(shè)計(jì)過程中需要應(yīng)用到TMS320VC33寄存器,通過該方法可以對(duì)其進(jìn)行有效的定義。最后,將以上兩個(gè)文件進(jìn)行組合,并一同添加到CSRJ.MAK工程中。

2.2 編譯和鏈接

需要從TI公司的COFF文件格式對(duì)其進(jìn)行分析與研究。Code Composer編譯器構(gòu)建的目標(biāo)文件一般為公共目標(biāo)文件,格式為COFF。在這一格式的應(yīng)用中,能夠有效促進(jìn)模塊化編程的管理效果,且可以提升程序的可移植性,強(qiáng)化程序的可讀性能。這對(duì)于后續(xù)代碼的管理與村村器的管理有著重要的影響作用,而且應(yīng)用的方法也會(huì)更加靈活,操作的便利性會(huì)大大提高。由此可見,該方法的應(yīng)用能夠?yàn)楦呒?jí)語言的匯編提供相應(yīng)的基礎(chǔ),帶來有效的幫助。在COFF文件中,最主要的就是要把SECTION進(jìn)行概念的定義。SECTION是COFF文件中最小的單位,在儲(chǔ)存器中占據(jù)空間的模式為數(shù)據(jù)塊模式。而且,在同一目標(biāo)文件中,不同的SECTION是相互分離的,且是不受干預(yù)的。因此,SECTION 一般可以劃分為兩個(gè)方面:第一方面是完成初始化的部分;第二方面是未進(jìn)行初始化的部分。已經(jīng)完成初始化的部分其中含有程序數(shù)據(jù)和程序代碼;未完成初始化的部分能夠?yàn)閿?shù)據(jù)提供儲(chǔ)存的空間,且可以有效保留數(shù)據(jù)信息。

3 C語言在DSP嵌入式系統(tǒng)開發(fā)中需注意的問題

3.1 內(nèi)存依賴

為了有效提升代碼的優(yōu)化性能,促進(jìn)編譯器對(duì)指令執(zhí)行和處理的能力與效率,需要對(duì)其內(nèi)存依賴關(guān)系進(jìn)行設(shè)計(jì)與研究。在這一過程中,需要做到對(duì)指令之間的關(guān)系確認(rèn),且需要完善指令的準(zhǔn)確性。一般情況下,一條指令需要在另一條指令的執(zhí)行狀態(tài)下完成,所以這兩條指令之間就存在相應(yīng)的依賴關(guān)系。如果編譯器無法有效識(shí)別指令之間存在的關(guān)系是否為依賴關(guān)系,那么就需要通過人工的方法對(duì)其進(jìn)行明確,為編譯器提供相應(yīng)的記憶服務(wù)。在此,可以利用“restrict”的關(guān)鍵字輸入方法對(duì)其進(jìn)行聲明變量的處理,或者可以利用命令優(yōu)化的方法對(duì)編譯器進(jìn)行通知。Code Composer可以為其提供4條優(yōu)化指令,第一是Level 0寄存器級(jí)別優(yōu)化指令;第二是Level 1局部級(jí)別優(yōu)化指令;第三是Level 2函數(shù)級(jí)別優(yōu)化指令;第四是Level 3文件級(jí)別優(yōu)化指令。結(jié)合相關(guān)基礎(chǔ)對(duì)其進(jìn)行分析,如果使用第三種方法可以實(shí)現(xiàn)簡單便捷的操作,進(jìn)而體現(xiàn)一步到位的特征。但是,在現(xiàn)實(shí)環(huán)境中,這一情況需要適時(shí)而定,很多比較大的應(yīng)用系統(tǒng)并不支持第三種方式在其中應(yīng)用,而且無法實(shí)現(xiàn)對(duì)大系統(tǒng)代碼的優(yōu)化,如果強(qiáng)行應(yīng)用,甚至?xí)?dǎo)致大系統(tǒng)發(fā)生癱瘓和死循環(huán)的問題。所以,在對(duì)其進(jìn)行應(yīng)用的時(shí)候,需要結(jié)合實(shí)際需求對(duì)其進(jìn)行性能的匹配分析,以此避免系統(tǒng)和程序發(fā)生不執(zhí)行、執(zhí)行混亂、系統(tǒng)崩潰等問題的發(fā)生。

3.2 變量聲明

在進(jìn)行函數(shù)調(diào)用的過程中,需要兼顧全局變量的關(guān)系,并且要盡量地去使用全局變量。這樣,能夠大大降低變量堆棧的問題,提升寄存器的應(yīng)用效率,擴(kuò)大寄存器的應(yīng)用空間。除此之外,在Code Composer背景下對(duì)其進(jìn)行全局變量的聲明處理,或者利用初始化的方法,會(huì)導(dǎo)致雙倍儲(chǔ)存空間的占用。為了避免這一情況的發(fā)生,降低儲(chǔ)存空間的占用量,需要本著節(jié)約資源的概念對(duì)其進(jìn)行數(shù)據(jù)量的分析與研究,然后將數(shù)據(jù)量較大的內(nèi)容通過特殊定義的方法進(jìn)行空間資源占用的壓縮。進(jìn)而實(shí)現(xiàn)對(duì)變量聲明的有效處理。在此,通過一組數(shù)據(jù)對(duì)其進(jìn)行分析與解釋。

如果通過常規(guī)方法對(duì)其進(jìn)行理解和定義,那么:

Biao_xyx[2] [5]={1.22, 3.55, 4.67, 9.53, 8.11, 6.97, 9.45,7.54,8.16,1.08);在編譯完成之后對(duì)其進(jìn)行查看,通過對(duì).map文件的分析與研究發(fā)現(xiàn),數(shù)據(jù)在.cinit段一共占據(jù)了12個(gè)字符空間,而在.bss段中一共占用了10個(gè)字符空間。

如果通過特殊方法對(duì)其進(jìn)行理解和定義,那么:

Asm(“.global_biao_xyx“);

Asm(“.sect\“.data_chabiaoV'‘);

Asm(¨biao_xvx: .float l.22, 3.55, 4.67, 9.53, 8.1l“);

Asm(“.float 6.97, 9.45, 7.54, 8.16, 1.08“);

extern float biao_xyx[2][3];

在編譯完成之后對(duì)其進(jìn)行查看,通過對(duì).map文件的分析與研究發(fā)現(xiàn),數(shù)據(jù)在.data_chabiao段中一共占用了10個(gè)字符的空間。

3.3 應(yīng)用TI提供的功能函數(shù)和固有函數(shù)

TI在C語言的開發(fā)過程中能夠?yàn)槠涮峁┹^好的幫助與較大的支撐,且可以為C語言的開發(fā)帶來具有實(shí)際應(yīng)用價(jià)值的固有函數(shù)。如果在這一過程中應(yīng)用了一半的C語言賭氣進(jìn)行函數(shù)編寫,或者通過個(gè)人編寫的方式對(duì)其進(jìn)行設(shè)計(jì),會(huì)在這個(gè)設(shè)計(jì)系統(tǒng)設(shè)計(jì)與開發(fā)過程中消耗更多的時(shí)間與精力,且會(huì)造成各種問題。最后,解決問題的時(shí)間、編譯的時(shí)間、編譯的準(zhǔn)確性、問題的處理深度等均是后期程序應(yīng)用的潛在威脅。為了避免這一情況的發(fā)生,需要應(yīng)用TI提供的功能函數(shù)和固有函數(shù)對(duì)其進(jìn)行相應(yīng)的干預(yù)和處理。

3.4 編寫循環(huán)體

在對(duì)數(shù)據(jù)進(jìn)行處理的過程中,對(duì)于循環(huán)體的應(yīng)用比較廣泛,且應(yīng)用的次數(shù)較多。循環(huán)體能夠處理大量的數(shù)據(jù)信息,而且會(huì)耗費(fèi)較多的時(shí)間。在此需要特別注意的問題有:在應(yīng)用循環(huán)體對(duì)其進(jìn)行程序編寫的時(shí)候,切不可通過包含調(diào)用的方法對(duì)其進(jìn)行系統(tǒng)設(shè)計(jì)與開發(fā);在應(yīng)用循環(huán)體對(duì)其進(jìn)行設(shè)計(jì)的過程中,切不可在其中體現(xiàn)過多的指令和命令內(nèi)容;在應(yīng)用多重循環(huán)方法對(duì)其進(jìn)行設(shè)計(jì)的時(shí)候,若內(nèi)層循環(huán)體相對(duì)外層較短,需要建立全新的循環(huán)模式,放棄原有的循環(huán)體,通過內(nèi)外結(jié)合的循環(huán)方法對(duì)其進(jìn)行全新的設(shè)計(jì)與應(yīng)用;在應(yīng)用循環(huán)體的時(shí)候,需要將與循環(huán)無關(guān)的代碼和語言進(jìn)行相應(yīng)的移植,使其處于循環(huán)體以外的部分。這樣可以降低循環(huán)的時(shí)間,提升循環(huán)的效率與質(zhì)量。

3.5 浮點(diǎn)格式的轉(zhuǎn)換

為了讓硬件設(shè)備得到更好的運(yùn)行效率,實(shí)現(xiàn)更高的運(yùn)行能力,TMS320VC33應(yīng)用了浮點(diǎn)格式對(duì)其進(jìn)行相應(yīng)的支撐與幫助。在這一模式下,DSP系統(tǒng)軟件的通信模塊將會(huì)被大力開發(fā),且會(huì)結(jié)合浮點(diǎn)格式對(duì)其進(jìn)行數(shù)據(jù)處理與數(shù)據(jù)傳輸。在此,需要注意的問題有:切記在使用該系統(tǒng)的時(shí)候需要了解外部系統(tǒng)所應(yīng)用的是什么格式,并且要對(duì)其進(jìn)行及時(shí)的格式轉(zhuǎn)換與處理,以此實(shí)現(xiàn)硬件設(shè)備的運(yùn)行效率不受影響。

4 總結(jié)

研究結(jié)合‘rMS320VC33芯片的開發(fā)為大背景,分別研究了C語言的開發(fā)與架構(gòu)方式,以及DSP嵌入式系統(tǒng)在應(yīng)用過程中需要注意的問題有哪些。通過該方法能夠?yàn)楹罄m(xù)的系統(tǒng)開發(fā)與應(yīng)用提供更多的幫助,進(jìn)而滿足研究人員對(duì)工作效率、系統(tǒng)運(yùn)行能力等各方面的需求。

參考文獻(xiàn):

[1]邊倩,林智慧.用C語言實(shí)現(xiàn)DSP程序設(shè)計(jì)的研究[J].電子技術(shù)與軟件工程,2016(23):251.

[2]王培人,李寶龍.基于DSP的NAND FLASH芯片控制實(shí)現(xiàn)[J].哈爾濱商業(yè)大學(xué)學(xué)報(bào)(自然科學(xué)版),2016,32(5):563-567.

[3]徐哲,王中秀,全奎旺.嵌入式DSP系統(tǒng)C語言硬件編程技術(shù)探討[J].科技傳播,2016,8(2):153-154.

[4]陶新民,李震,姜述杰.基于DSP和C語言的變壓器振動(dòng)信號(hào)采集與分析系統(tǒng)[J].應(yīng)用科技,2015,42(5):1-5.

[5]袁博文.基于嵌入式DSP系統(tǒng)C語言硬件編程技術(shù)淺談[J].電腦迷,2017(12):61.

[6]馮瑛敏.基于DSP的嵌入式IP語音通信系統(tǒng)設(shè)計(jì)與開發(fā)[D].長沙:湖南大學(xué),2007.

【通聯(lián)編輯:代影】

作者簡介:殷莉(1980-),女,江蘇常州人,碩士,副教授,研究方向?yàn)橛?jì)算機(jī)信息化,軟件;溫赟(1979-),女,江蘇常州人,高校副教授,碩士,研究方向:計(jì)算機(jī)信息化、電子商務(wù)。

猜你喜歡
嵌入式系統(tǒng)
Teaching Research on IoT and—Embedded System of Software Engineering
基于Xilinx口袋實(shí)驗(yàn)室的組合邏輯電路設(shè)計(jì)實(shí)驗(yàn)
面向應(yīng)用的智能專業(yè)嵌入式系統(tǒng)教學(xué)
基于物聯(lián)網(wǎng)的遠(yuǎn)程紅外控制器
嵌入式系統(tǒng)軟件開發(fā)技術(shù)探析
基于AVR單片機(jī)的SPI接口設(shè)計(jì)與實(shí)現(xiàn)
辦公自動(dòng)化系統(tǒng)的設(shè)計(jì)
嵌入式系統(tǒng)在醫(yī)療器械中的應(yīng)用分析
基于物聯(lián)網(wǎng)項(xiàng)目驅(qū)動(dòng)的嵌入式系統(tǒng)教學(xué)改革的研究與實(shí)踐
嵌入式系統(tǒng)課程“中斷、異常與事件”教學(xué)實(shí)踐及啟示
沧州市| 雅江县| 无锡市| 兰溪市| 靖江市| 麻栗坡县| 梓潼县| 兴隆县| 崇义县| 犍为县| 图木舒克市| 綦江县| 喀喇沁旗| 会东县| 丘北县| 普兰店市| 盖州市| 尚志市| 嘉兴市| 兰考县| 宝应县| 根河市| 林芝县| 惠来县| 灵璧县| 高阳县| 荥经县| 安图县| 尼玛县| 依安县| 日土县| 兴和县| 石首市| 晋宁县| 恭城| 外汇| 托里县| 静海县| SHOW| 丹寨县| 田林县|