文獻(xiàn)標(biāo)識(shí)碼: A
DOI:10.16157/j.issn.0258-7998.2016.09.031
中文引用格式: 杜虹,,彭華,馬金全,,等. 基于異構(gòu)信號(hào)處理平臺(tái)的自動(dòng)代碼生成工具[J].電子技術(shù)應(yīng)用,,2016,42(9):118-121.
英文引用格式: Du Hong,,Peng Hua,,Ma Jinquan,et al. Automatic code generation framework for heterogeneous processing platform[J].Application of Electronic Technique,,2016,,42(9):118-121.
0 引言
隨著通信信號(hào)處理技術(shù)不斷發(fā)展,,面臨著無(wú)線通信體制更新?lián)Q代速度快,、軟硬件升級(jí)頻繁、研制成本高,、開(kāi)發(fā)周期長(zhǎng)等問(wèn)題[1],。為應(yīng)對(duì)多體制通信處理的快速更新,基于軟件化定義的異構(gòu)通信處理平臺(tái)成為了近年來(lái)的研究熱點(diǎn)[2],。
雖然異構(gòu)通信處理平臺(tái)性能良好,、適用性廣,但是由于其涉及軟硬件類型繁多,,導(dǎo)致了開(kāi)發(fā)過(guò)程復(fù)雜,、開(kāi)發(fā)周期長(zhǎng)、分工合作銜接困難等問(wèn)題[3],。在龐大復(fù)雜的平臺(tái)系統(tǒng)中,,一點(diǎn)改動(dòng)就可能牽一發(fā)而動(dòng)全身,導(dǎo)致程序的不一致性。為了降低軟件開(kāi)發(fā)強(qiáng)度,,縮短開(kāi)發(fā)周期,,減少代碼的重復(fù)書(shū)寫(xiě),一直以來(lái)軟件開(kāi)發(fā)者都致力于代碼自動(dòng)生成方面的研究,。作為復(fù)用技術(shù)的核心和基礎(chǔ),,代碼自動(dòng)生成是提高軟件開(kāi)發(fā)效率的有效手段[4]。自動(dòng)代碼生成器不僅減小了開(kāi)發(fā)人員的工作量,,同時(shí)提高了工程的一致性,,更易于分工與維護(hù)。
針對(duì)異構(gòu)通信信號(hào)處理平臺(tái)在實(shí)時(shí)性,、分布式,、可靠性等方面的要求,自動(dòng)代碼生成器需應(yīng)對(duì)異構(gòu)平臺(tái)中的實(shí)時(shí)處理,,以及編程一致的系統(tǒng)可靠性[5],。為了提高軟件開(kāi)發(fā)綜合效率,實(shí)現(xiàn)組件的快速開(kāi)發(fā),,縮短新算法從理論到應(yīng)用的開(kāi)發(fā)周期,,本文提出了一種新型的代碼自動(dòng)生成器工具。該生成工具包括框架配置文件向?qū)?、描述要素宏定義文件實(shí)時(shí)更新,、硬件驅(qū)動(dòng)源代碼框架生成、軟件組件源程序框架生成,、軟件包組裝以及裝配粘合代碼的自動(dòng)生成等,。實(shí)測(cè)分析表明,該生成工具對(duì)于異構(gòu)通信平臺(tái)軟件快速開(kāi)發(fā),、硬件迅速映射,、用戶便捷應(yīng)用等方面有顯著突破,是異構(gòu)通信信號(hào)處理平臺(tái)實(shí)現(xiàn)其實(shí)時(shí)性,、分布式,、可靠性的重要工具。
1 自動(dòng)代碼生成技術(shù)
目前,,自動(dòng)代碼生成技術(shù)應(yīng)用十分廣泛,,在UML建模[6]、模型驅(qū)動(dòng)框架(MDA)[7],、數(shù)據(jù)庫(kù)表創(chuàng)建[8]等方面都有所突破,。但是在異構(gòu)通信處理平臺(tái)上的代碼自動(dòng)生成技術(shù)仍不完善,只在異構(gòu)多核處理器方面有少量研究[9],。
基于異構(gòu)通信信號(hào)處理平臺(tái)的代碼自動(dòng)生成關(guān)鍵在于建模抽象技術(shù)[10],、復(fù)用技術(shù)[11]、Python引擎技術(shù)[12]。代碼主要分為3種類型[13]:第一種是框架代碼中的固定部分,,無(wú)需做任何修改,;第二種代碼指大部分不用修改,只對(duì)有相應(yīng)的輸入來(lái)源和邏輯規(guī)律的代碼進(jìn)行修改,;第三種是沒(méi)有任何規(guī)律可循的特殊代碼,,這類代碼須由專業(yè)人員填寫(xiě),無(wú)法自動(dòng)生成,。第一種代碼可直接使用,,第三種代碼留白待用,第二種代碼即需要實(shí)現(xiàn)自動(dòng)生成的主要代碼,。
代碼自動(dòng)生成主要由元數(shù)據(jù),、代碼模板、數(shù)據(jù)模型和代碼生成引擎組成,,其流程如圖1所示,。
(1)元數(shù)據(jù):元數(shù)據(jù)是對(duì)異構(gòu)通信處理平臺(tái)資源的一種描述,通過(guò)建模實(shí)現(xiàn),,是數(shù)據(jù)信息傳遞的基礎(chǔ),。
(2)代碼模板:代碼模板是用戶想要生成的源代碼模型,它表示源代碼中的共性部分,,即無(wú)需修改的部分,。
(3)數(shù)據(jù)模型:數(shù)據(jù)模型是代碼自動(dòng)生成框架的基礎(chǔ)模型,具有高度的抽象性,。它表示了源代碼中的個(gè)性部分,,即需根據(jù)規(guī)律自動(dòng)生成的部分。
(4)源代碼:源代碼是代碼自動(dòng)生成的成果,,即通過(guò)自動(dòng)生成形成的可加入工程直接使用的完整代碼,。
2 異構(gòu)平臺(tái)的軟件體系架構(gòu)
異構(gòu)通信處理平臺(tái)包括對(duì)ATCA,、VPX,、CPCI、專用PC等已有硬件處理平臺(tái)的兼容,,可以統(tǒng)一地開(kāi)發(fā)運(yùn)行環(huán)境實(shí)現(xiàn)軟硬件的無(wú)縫交互,,實(shí)現(xiàn)多功能應(yīng)用組件的高度共享。其軟件體系架構(gòu)分為硬件層,、板級(jí)支持包層,、操作系統(tǒng)與驅(qū)動(dòng)層、硬件抽象層,、核心服務(wù)層和應(yīng)用層,。
一般地,為了實(shí)現(xiàn)異構(gòu)通信信號(hào)處理平臺(tái)中多處理器和軟件組件的升級(jí)繼承與資源共享,其自動(dòng)代碼生成器需滿足平臺(tái)框架需求,,具體層級(jí)分布如圖2所示,。通信處理平臺(tái)的自動(dòng)代碼生成器提高了軟件開(kāi)發(fā)的綜合效率,實(shí)現(xiàn)硬件驅(qū)動(dòng)和軟件組件的快速開(kāi)發(fā),,縮短了新算法應(yīng)用的實(shí)際周期,,為通信領(lǐng)域的快速發(fā)展提供了良好的平臺(tái)。
3 自動(dòng)代碼生成器實(shí)現(xiàn)
3.1 操作系統(tǒng)與驅(qū)動(dòng)層代碼生成
在操作系統(tǒng)與驅(qū)動(dòng)層,,異構(gòu)通信處理平臺(tái)的自動(dòng)代碼生成工具主要涉及硬件設(shè)備驅(qū)動(dòng)的自動(dòng)代碼生成,。處理器包括作為設(shè)備的處理器和平臺(tái)中的處理器。每個(gè)硬件設(shè)備驅(qū)動(dòng)都要實(shí)現(xiàn)如表1所示的功能,。
驅(qū)動(dòng)接口名稱由功能名稱和數(shù)據(jù)庫(kù)存儲(chǔ)的板卡類型號(hào),、處理器類型碼和處理器號(hào)組成。板卡類型號(hào)表明處理器所在板卡信息,,確定處理器歸屬,。處理器類型碼表明了處理器的類型、處理方式和編程模式,。處理器號(hào)是對(duì)某板卡上具體處理器的確定,。由以上三方面的信息共同確定系統(tǒng)中唯一一個(gè)處理器,由此定義驅(qū)動(dòng)函數(shù),。
根據(jù)組合形成的函數(shù)名,,通過(guò)函數(shù)模板實(shí)現(xiàn)驅(qū)動(dòng)接口的定義、注冊(cè)和函數(shù)框架生成,。首先根據(jù)函數(shù)名形成相應(yīng)的驅(qū)動(dòng)接口定義文件,,驅(qū)動(dòng)接口注冊(cè)文件和驅(qū)動(dòng)接口函數(shù)文件。根據(jù)函數(shù)定義,、注冊(cè),、函數(shù)框架的函數(shù)模板,自動(dòng)完成不同文件的驅(qū)動(dòng)定義和注冊(cè),。
3.2 核心服務(wù)層代碼生成
3.2.1 配置文件向?qū)?/p>
在核心服務(wù)層,,異構(gòu)通信處理平臺(tái)的自動(dòng)代碼生成工具主要涉及配置文件向?qū)Ш兔枋鲆睾甓x。配置文件向?qū)е饕轻槍?duì)平臺(tái)配置時(shí)的可視化向?qū)?,主要方面如?所示,。用戶可根據(jù)可視化向?qū)?duì)平臺(tái)進(jìn)行配置,由具體模板模式以及用戶對(duì)平臺(tái)的配置信息,,形成系統(tǒng)可識(shí)別的配置文件,。
3.2.2 描述要素宏定義
描述要素是對(duì)平臺(tái)系統(tǒng)的整體描述,包括軟硬件物理元件,、連接關(guān)系和功能描述,。根據(jù)對(duì)異構(gòu)通信處理平臺(tái)建模,,元數(shù)據(jù)結(jié)合特定編碼形成宏定義,模板變量如表3所示,。自動(dòng)生成要素宏定義保證了系統(tǒng)擴(kuò)展升級(jí)時(shí)的一致性,,是實(shí)現(xiàn)平臺(tái)高可靠性和可擴(kuò)展性的保證。
3.3 應(yīng)用層代碼生成
3.3.1 軟件組件函數(shù)框架
軟件組件源代碼主要包括對(duì)應(yīng)用功能組件的定義和實(shí)現(xiàn),。軟件組件的函數(shù)如表4所示,。組件函數(shù)名由組件名稱和功能名稱組成,創(chuàng)建對(duì)唯一組件的初始化,、數(shù)據(jù)處理和參數(shù)配置等,。根據(jù)組件名,在數(shù)據(jù)庫(kù)中查找組件對(duì)應(yīng)的參數(shù)名和參數(shù)類型,,為實(shí)現(xiàn)數(shù)據(jù)結(jié)構(gòu)定義提供數(shù)據(jù),。根據(jù)組件名稱,由組件名作為定義文件和函數(shù)文件的名稱創(chuàng)建組件應(yīng)用文件,。
3.3.2 軟件裝配腳本
軟件裝配的腳本生成是通信處理平臺(tái)的中心環(huán)節(jié),。根據(jù)通信處理流程形成的腳本文件,記錄了組件功能和連接方式,,是軟件化處理的核心,。Python腳本可直接解釋執(zhí)行,省去了編譯時(shí)間,;并且可與多種語(yǔ)言保持良好的兼容性和互操作性[14],。用Python做腳本文件可無(wú)縫調(diào)用C模塊程序,既運(yùn)用了C的快速計(jì)算功能,,也兼具了Python簡(jiǎn)單的流模式記錄特性,,是軟件裝配腳本的良好選擇。文本文件對(duì)操作系統(tǒng)的適應(yīng)性更強(qiáng),,增加了系統(tǒng)可移植性,,但是需要設(shè)計(jì)文本格式和解析引擎。
為保證系統(tǒng)實(shí)時(shí)性和可擴(kuò)展性,,軟件裝配的腳本采用雙解析引擎,,以txt文本和python文件共同作為裝配腳本,如圖3所示,。兩種腳本可視化應(yīng)用對(duì)用戶沒(méi)有區(qū)別,,可根據(jù)自己熟悉的編程模式選擇腳本類型,。在應(yīng)用運(yùn)行時(shí),,雙引擎解析自動(dòng)識(shí)別應(yīng)用描述腳本,執(zhí)行應(yīng)用,。
4 實(shí)測(cè)分析
為驗(yàn)證本文提出的自動(dòng)代碼生成器的有效性,,將以一個(gè)QPSK調(diào)制解調(diào)信號(hào)處理流程為例,,在實(shí)際系統(tǒng)上進(jìn)行測(cè)試。
4.1 實(shí)驗(yàn)系統(tǒng)體系組成
本次實(shí)驗(yàn)系統(tǒng)的硬件平臺(tái)以PC作為域管理器,,ATCA和VPX作為處理平臺(tái),。ATCA平臺(tái)包括兩塊板卡,板卡上有DSP和FPGA,。VPX包括一塊板卡,,板卡上有FPGA。其中,,DSP類型為TMS320C6678,,F(xiàn)PGA類型為XC5VLX50T,硬件平臺(tái)拓?fù)淙鐖D4所示,。
以QPSK調(diào)制解調(diào)信號(hào)處理流程為例,。Txdemo組件的功能是產(chǎn)生1 024長(zhǎng)度的二進(jìn)制信號(hào),并通過(guò)輸出端口發(fā)送出去,,Rxdemo組件的功能是接收信號(hào),,并且將信號(hào)保存到指定文件中,方便用戶查看,。首先由Txdemo信源發(fā)送數(shù)據(jù),,經(jīng)QPSK調(diào)制模塊調(diào)制,通過(guò)AWGN信道后,,再由QPSK解調(diào)模塊解調(diào),,最后將解調(diào)后的數(shù)據(jù)保存在Rxdemo中。其中,,Txdemo組件和Rxdemo組件部署在PC上,,QPSK調(diào)制模塊和QPSK 解調(diào)模塊部分別部署在ATCA的兩塊處理板上,AWGN信道部署在VPX的處理板上,,具體部署如圖5,。
4.2 實(shí)驗(yàn)結(jié)果及分析
QPSK調(diào)制解調(diào)波形結(jié)果如圖6所示。結(jié)果與實(shí)驗(yàn)預(yù)期結(jié)果相符,,印證了框架的可行性,,即自動(dòng)代碼生成的編程一致性和可靠性。應(yīng)用模塊分布在不同的處理器上,,滿足代碼自動(dòng)生成的異構(gòu)平臺(tái)分布性,。在系統(tǒng)運(yùn)行過(guò)程中,除了模塊功能代碼之外,,均由代碼自動(dòng)生成實(shí)現(xiàn),。各模塊的運(yùn)行時(shí)間如表5所示。經(jīng)計(jì)算,,框架代碼生成時(shí)間開(kāi)銷占應(yīng)用總開(kāi)銷的2%,滿足實(shí)時(shí)性要求。綜合驗(yàn)證結(jié)果,,基于異構(gòu)通信處理平臺(tái)的自動(dòng)代碼生成技術(shù)滿足了系統(tǒng)對(duì)實(shí)時(shí)性,、分布式、可靠性等方面的要求,證明了自動(dòng)代碼生成的有效性。
5 結(jié)論
本文基于異構(gòu)通信處理平臺(tái)框架,根據(jù)其對(duì)實(shí)時(shí)性,、分布式、可靠性等方面的要求,,實(shí)現(xiàn)了該框架的自動(dòng)代碼生成,。實(shí)現(xiàn)了框架配置文件、要素宏定義文件,、硬件驅(qū)動(dòng)源代碼框架,、軟件組件源程序框架以及裝配粘合代碼的自動(dòng)生成,加強(qiáng)了平臺(tái)中軟硬件編程的一致性,、縮短了開(kāi)發(fā)周期,,大大減少需要手工編寫(xiě)開(kāi)發(fā)和測(cè)試代碼的工作量,提高了軟件開(kāi)發(fā)的效率,。
參考文獻(xiàn)
[1] JTRS Draft Specification.Software communications architecture specification(rev.4.0)[R].Washington:JTRS Joint Program Office,,2012.
[2] DICKENS M L.Surfer:Any-core software defined radio[J].Dissertations & Theses-Gradworks,2012,,8(2):204-205.
[3] ADRAT M,,ASCHEID G.Special issue on recent innovations in wireless software-defined radio systems[J].Journal of Signal Processing Systems,2015,,78(3):239-241.
[4] Wang Miao,,Qi Fengbin.Automatic code generation framework for Heterogeneous multi-core systems[J].Journal of Frontiers of Computer Science and Technology,2013,,7(6):518-526.
[5] FAYEZ J A.Designing a software defined radio to run on a heterogeneous processor[D].Virginia:Virginia Polytechnic Institute and State University,,2011.
[6] 曹雷,薛平貞.UML建模在嵌入式系統(tǒng)開(kāi)發(fā)中的應(yīng)用[J].現(xiàn)代電子技術(shù),,2013(16):41-44.
[7] 張清波.基于MDA模型驅(qū)動(dòng)的代碼生成的研究與設(shè)計(jì)[J].現(xiàn)代計(jì)算機(jī):專業(yè)版,,2015(9):73-79.
[8] 劉雪飛,吳伯橋,,王申強(qiáng).XML文檔與數(shù)據(jù)庫(kù)表信息互相轉(zhuǎn)換的方法研究與實(shí)踐[J].信息安全與技術(shù),,2013(7):67-69.
[9] TULIKA M,MIHAI P.Bahurupi:A polymorphic heterogeneous multi-core architecture[J].Acm Transactions on Architelture & Code Optimization,,2013,,8(4):73-94.
[10] CHEN Q,TIRUMALA S,,JAIN A.Integrated circuit optimization modeling technology:US,,US 8555233 B2[P].2013.
[11] HONG Y S,,SONG H U.Refresh period signal generatorwith digital temperature information generation function:US,,US7859931[P].2010.
[12] MUSHTAQ A,,OLAUSSEN K.Automatic code generator for higher order integrators[J].Computer Physics Communications,2014,,185(5):1461-1472.
[13] 張曦,,湯俊,湯小為,,等.基于TS201的信號(hào)處理軟件框架及自動(dòng)代碼生成器[J].科學(xué)技術(shù)與工程,,2013,13(18):5356-5360.
[14] SAUTER N K,,HATTNE J,,GROSSE-KUNSTLEVE R W,et al.New Python-based methods for data processing[J].Acta Crystallographica,,2013,,69(7):1274-1282.