徐 哲,王中秀,全奎旺沈陽理工大學,遼寧沈陽 100168
?
嵌入式DSP系統(tǒng)C語言硬件編程技術探討
徐哲,王中秀,全奎旺
沈陽理工大學,遼寧沈陽100168
摘要隨著科技的不斷發(fā)展,嵌入式系統(tǒng)被廣泛應用于各處,現(xiàn)階段,最具有代表性的嵌入式系統(tǒng)為DSP。因此,本文將從嵌入式DSP系統(tǒng)基本硬件入手,結合C語言程序最常用調(diào)試方法與硬件編程技術,并研究將C語言轉(zhuǎn)化為DSP代碼的過程。
關鍵詞嵌入式DSP系統(tǒng);C語言;硬件編程技術
以便獲得適用于人們使用的信號形式,而嵌入式DSP系統(tǒng)則是將DSP作為中央處理器,將硬件與軟件組合在一起,該系統(tǒng)體積較小,可以很快完成信號處理,其算法也較為靈活,性能也很穩(wěn)定,所以在儀器研制與電子產(chǎn)品中應用較多。C語言是嵌入式DSP系統(tǒng)的重要組成部分,其硬件編程技術也是現(xiàn)代研究重點,因此,有必要了解C語言硬件程序開發(fā)、調(diào)試以及代碼轉(zhuǎn)化。
1.1DSP基本結構
一般來講,嵌入式DSP系統(tǒng)硬件編制過程是有一定規(guī)律可循的,通常是根據(jù)時間進行排列,其主要構成部分有以下幾種:A/D轉(zhuǎn)換、DSP芯片、D/A轉(zhuǎn)換、通信板塊以及顯示板塊,此外還有一些輔助板塊,如電源管理等[1]。
1.2DSP芯片內(nèi)部結構
盡管DSP芯片內(nèi)部結構較為復雜,但開發(fā)者并不需要全面了解其結構,只要簡單了解即可,以便在編程時使用。在DSP芯片中主要由兩部分構成,一部分是以中央處理器為主的內(nèi)核,另一部分是以外部輔助設備為主的外部設備。將各個模塊組合在一起,就成為了嵌入式DSP系統(tǒng),通常將這一結構稱之為哈弗結構。在該系統(tǒng)中,數(shù)據(jù)存儲與程序存儲具有獨立性,與兩者對應的硬件總線也就兩種。外部設備主要指芯片以外的硬件設備,其功能也多種多樣,經(jīng)過相互配合以后就可以使這些應用功能得以完善,之所以其功能能夠完善主要在于系統(tǒng)中應用了這些外部設備,使得芯片運行速度得以顯著提升,DSP功能也隨之增強。
1.3DSP芯片存儲器圖及其編制方式
要編寫DSP程序就一定要了解DSP芯片存儲器及其編制方式,它們都有助于DSP編程。DSP存儲空間有兩種,一種是RAM,另一種是ROM,這些存儲方式不僅有數(shù)據(jù)空間與程序空間,還有I/O空間,而I/O空間又由數(shù)據(jù)空間與程序空間兩部分構成,且它們是相互獨立的,兩者的編制是相同的,唯一不同的是兩者的地址代表不同,程序空間的每個地址代表的是一個字節(jié),而存儲空間每個地址所代表的則是16bit字[2]。
現(xiàn)階段,硬件編程最常用的編程方式有3種,分別為C語言、匯編語言以及可視化編程[3]。其中與DSP代碼最為相似的應匯編語言,但它也有很多缺陷存在,最大的不足就是難以被人們理解,由于芯片系列的不同也就意味著需要使用不同的匯編指令,由此開發(fā)而來的程序更是無法被應用到各處,可見,匯編語言只能被應用于部分程序編寫中,并不能應用于硬件控制大量使用中。而可視化編程則是最近幾年才能研發(fā)并使用的編程模式,一般用于大規(guī)模程序開發(fā)中,要學習該編程依然存在很大困難,并不適用于初學者使用。C語言則綜合了以上兩種編程方式的優(yōu)缺點,靈活性較好,也就意味著它能夠被應用到多種硬件編程中,這與C語言自身特點有很大關系。C語言屬于高級語言,便于初學者學習使用,其編程模式為從上至下,可移植性也很強,加之其較為靈活更是方便讀寫硬件寄存器中的數(shù)值。
在CCS系統(tǒng)中運行C語言程序一定要經(jīng)過程序調(diào)試才可以,主要步驟由以下幾部分構成:第一,將編制好的可執(zhí)行文件調(diào)入進來;第二,將部分程序分成幾段,一邊運行程序一邊觀察各個斷點值;第三,由于這些值一般分布在存儲器中,就要細致分析該數(shù)據(jù),并多次重復進行這項工作,直至程序預期功能完成。
C語言程序最常用的調(diào)試方法有兩種:首先,通過Watch Window查看C語言程序變量。在利用CCS時,可以通過點擊其集成開發(fā)環(huán)境中的View-Watch Window開啟觀察窗,其中的第一個標簽就是watch locals,這里就可以將程序光標所在位置中的函數(shù)變量名稱與數(shù)值顯示出來;其次,借助Memory Window了解I/O空間中寄存器值。雖然Watch Window也可以看到變量,但卻看不到I/O空間,如果要觀察值,就需要點擊Viewmemory,當窗口彈出以后,就可以選擇滿足自身要求的存儲空間地址,選定以后點擊OK便會彈出用于觀看存儲空間的小窗口,一旦值發(fā)生變化,就會以紅色字體方式顯示出來。
對于C語言程序來說,它是一種較為通用的語言,能夠被應用到各種處理器中,但在處理器運行期間一定要有規(guī)定代碼才可以保證芯片始終處于正常運行狀態(tài),所以,但C語言編程完成以后,應實現(xiàn)轉(zhuǎn)碼,但轉(zhuǎn)換過程應滿足規(guī)定軟件才可以。如在DSP系統(tǒng)中多用CCS轉(zhuǎn)換代碼,CCS是軟件開發(fā)者最常用的軟件。在轉(zhuǎn)換DSP應用時,軟件開發(fā)者需要利用集成開放環(huán)境生成項目,該項目一般由以下幾部分構成,主要有頭文件、庫文件以及源文件等內(nèi)容,后兩種文件與其他編程軟件中所包括的文件相同。如DSP基本歷程多數(shù)都與源文件有一定關系,而以結構語句為代表的程序具體語句則以頭文件為主。庫文件屬于廠家自定義程序,是廠家依照自己所生產(chǎn)的芯片硬件性能編制而成的,以TMs32oC55xDSp芯片為例,廠家參照芯片型號制定出了庫文件,由于其處于DSP程序中,就需要將DSP作為開頭,并將rts55x. ilb庫文件包括在內(nèi),這主要是由于其已經(jīng)成為連接C語言與DSP代碼的重要方式,如在CCS文件中原本就涵蓋庫文件,在編程時只需在開頭使用即可,一般來講,main()為C語言程序默認入口,在編寫DSP程序階段也一定要將該庫文件囊括進來,這都是為了滿足rts55x. ilb所制定的要求。而鏈接文件則是由開發(fā)者自行編寫的文件,其作用相對較為獨特,一般由定位程序塊與數(shù)據(jù)塊兩部分構成[4]。但編寫鏈接文件十分困難,不僅需要掌握一定的軟件知識,還要對硬件知識有全面了解,這樣一來也就提升了對開發(fā)者能力的需求。
將C語言轉(zhuǎn)化為DSP代碼的過程可以參照以下內(nèi)容:1)在源文件中需要由編輯器與匯編器應用其中完成編譯,并構建屬于兩者的“中間文件”;2)在中間文件處理后,新建.out與.map文件;3)利用CCS將.out下載并存儲在DSP芯片中,用于仿真測試;4)仿真測試完成后借助響應軟件將.out轉(zhuǎn)化為.hex。
通過以上研究了解到,C語言十分靈活,所應用范圍也很廣,之所以能夠被應用到各處主要是由于C語言不僅具有靈活性,還具有便于讀取與操作的特點。本文研究了嵌入式DSP系統(tǒng)與C語言硬件編程技術與過程,希望能為相關人士帶來有效參考,進一步開發(fā)與利用C語言硬件編程技術。
參考文獻
[1]宋敏.基于DSP和嵌入式平臺的在線電能質(zhì)量監(jiān)測系統(tǒng)設計[D].上海交通大學,2012.
[2]金麗娟.基于DSP的嵌入式PLC運動控制模塊的研究與實現(xiàn)[D].杭州電子科技大學,2013.
[3]張凱.嵌入式車牌定位與分割系統(tǒng)的設計與實現(xiàn)[D].北京郵電大學,2011.
[4]佟吉鋼.高性能嵌入式系統(tǒng)技術及應用的若干問題研究[D].南開大學,2010.
作者簡介:徐哲,所在院校為沈陽理工大學,研究方向為自動化DSP就是利用數(shù)字形式完成信號采集、變換等工作,
中圖分類號TP39
文獻標識碼A
文章編號1674-6708(2015)155-0153-02