專(zhuān)利名稱(chēng)::一種多dsp平臺(tái)上的自動(dòng)代碼生成方法
技術(shù)領(lǐng)域:
:本發(fā)明屬于嵌入式系統(tǒng)領(lǐng)域,具體的說(shuō)是一種在多DSP平臺(tái)上自動(dòng)生成代碼的技術(shù)方法。
背景技術(shù):
:隨著計(jì)算機(jī)技術(shù)的進(jìn)步,軟件生產(chǎn)也開(kāi)始向自動(dòng)化方向發(fā)展。通過(guò)專(zhuān)門(mén)的代碼自動(dòng)轉(zhuǎn)換軟件,將上層的軟件模型自動(dòng)轉(zhuǎn)換為實(shí)現(xiàn)代碼可以極大地提高軟件生產(chǎn)的效率,將人們從重復(fù)的勞動(dòng)中解放出來(lái)。國(guó)外由于人力資源成本高,很早就開(kāi)始在軟件開(kāi)發(fā)中應(yīng)用代碼生成技術(shù),例如Mathworks公司的Matlab&Simulink,NI的Labview,Gedae公司的Gedae等。多DSP平臺(tái)是目前在雷達(dá)、通信和聲納等信號(hào)處理領(lǐng)域廣泛應(yīng)用的一種硬件處理結(jié)構(gòu),它具有針對(duì)特定運(yùn)算專(zhuān)門(mén)優(yōu)化過(guò)的數(shù)字信號(hào)處理核心和靈活可變的拓?fù)浠ミB能力,可以滿(mǎn)足高密度、高吞吐量的實(shí)時(shí)信號(hào)處理任務(wù)的需要。典型的多DSP處理平臺(tái)如ADI公司的4片或8片TigerSHARC201集成處理板,各片DSP可以由鏈路口靈活互連。目前在多DSP平臺(tái)的應(yīng)用開(kāi)發(fā)領(lǐng)域,國(guó)內(nèi)的軟件開(kāi)發(fā)方式還是主要還是依賴(lài)國(guó)外公司相關(guān)平臺(tái)的配套開(kāi)發(fā)軟件,例如ADI公司的VisualDSP++,TI公司的CCS等,缺乏自己的代碼生成工具。這種開(kāi)發(fā)方法有幾個(gè)明顯弊端一是當(dāng)所開(kāi)發(fā)的應(yīng)用程序規(guī)模較大,DSP節(jié)點(diǎn)很多時(shí)(例如幾十個(gè)),底層硬件之間的互連通信和系統(tǒng)配置等細(xì)節(jié)都需要用戶(hù)具體負(fù)責(zé)和干預(yù),既繁瑣又容易出錯(cuò)。二是這種開(kāi)發(fā)靠基本靠人力編程,程序帶有明顯的個(gè)人風(fēng)格和一定的隨意性,欠缺模塊化、通用化,一個(gè)程序員開(kāi)發(fā)的代碼可能難以為別人所理解和接受;三是用戶(hù)要從事很多重復(fù)性的勞動(dòng),同一個(gè)應(yīng)用處理流程在不同的硬件映射和分配方式下都要把相關(guān)代碼重寫(xiě)一遍,這導(dǎo)致了系統(tǒng)開(kāi)發(fā)周期長(zhǎng),人力、物力消耗大。從長(zhǎng)遠(yuǎn)的意義來(lái)講,在多DSP平臺(tái)等嵌入式領(lǐng)域開(kāi)發(fā)和推廣自動(dòng)代碼生成方法有利于減少社會(huì)重復(fù)勞動(dòng)、縮短軟件開(kāi)發(fā)周期、提高勞動(dòng)生產(chǎn)率、促進(jìn)業(yè)界軟件開(kāi)發(fā)的標(biāo)準(zhǔn)化和通用化,能夠使得行業(yè)內(nèi)進(jìn)行更有效、更專(zhuān)業(yè)化的分工,信號(hào)處理人員可以專(zhuān)注于算法和功能的實(shí)現(xiàn),無(wú)需關(guān)注底層硬件細(xì)節(jié),從而從瑣碎復(fù)雜的傳統(tǒng)手工編程模式中徹底脫離出來(lái)。
發(fā)明內(nèi)容本發(fā)明的目的就是提供一種多DSP平臺(tái)上的自動(dòng)代碼生成方法,該方法分為三個(gè)步驟I)針對(duì)多DSP平臺(tái)上的具體代碼進(jìn)行分類(lèi)和特征提取,總結(jié)出一套通用代碼框架模板;2)利用XML描述文件對(duì)用戶(hù)開(kāi)發(fā)的具體算法流程進(jìn)行建模和描述,可以包括模塊列表、模塊屬性和模塊間互連關(guān)系;3)最后通過(guò)自動(dòng)代碼生成器提取出XML描述文件中的模塊列表、模塊屬性和模塊互連關(guān)系等必需信息,基于I)中的通用代碼框架模板生成最終的DSP源代碼。本發(fā)明具有以下有益效果及優(yōu)點(diǎn)1.縮短開(kāi)發(fā)周期,提高開(kāi)發(fā)效率。利用自動(dòng)代碼生成可以大大減少多DSP平臺(tái)開(kāi)發(fā)過(guò)程中很多重復(fù)和瑣碎的工作,用戶(hù)不需要給每個(gè)DSP節(jié)點(diǎn)手動(dòng)分配通信路由,也不用在修改程序時(shí)把所有代碼重寫(xiě)一遍。2.便于用戶(hù)進(jìn)行處理模式快速擴(kuò)展和重構(gòu)。XML語(yǔ)言簡(jiǎn)潔易讀、層次分明,采用XML文件的流程描述格式給用戶(hù)重建處理模型和映射方案提供了方便,用戶(hù)只要對(duì)XML文件進(jìn)行簡(jiǎn)單的編輯和改動(dòng)即可實(shí)現(xiàn)這一點(diǎn)。3.提高代碼開(kāi)發(fā)的可讀性和可靠性。只要大家都用同樣的標(biāo)準(zhǔn)代碼框架模板來(lái)進(jìn)行自動(dòng)代碼生成,那么生成的代碼風(fēng)格無(wú)疑是統(tǒng)一的,便于繼承和理解。此外,由自動(dòng)代碼生成器或者說(shuō)機(jī)器生成代碼無(wú)疑比人手工編寫(xiě)代碼具有更高的可靠性,很多人容易犯的低級(jí)錯(cuò)誤絕對(duì)不會(huì)在自動(dòng)生成的代碼中出現(xiàn)。4.促進(jìn)多DSP平臺(tái)開(kāi)發(fā)的可移植性。目前多DSP處理器業(yè)界的主流產(chǎn)品主要集中在ADI和TI公司的幾款型號(hào)上。產(chǎn)品不同,要設(shè)計(jì)的代碼框架模板和代碼生成器也就不同,但是同一家公司的產(chǎn)品之間區(qū)別不大。如果針對(duì)幾家主流公司分別開(kāi)發(fā)出統(tǒng)一的模板和代碼生成器(XML建模標(biāo)準(zhǔn)不用變),用戶(hù)就可以輕松實(shí)現(xiàn)自己的開(kāi)發(fā)工作在不同處理器平臺(tái)上的移植。圖1示出了根據(jù)本發(fā)明的一種基于多DSP平臺(tái)的自動(dòng)代碼生成流程的一個(gè)優(yōu)選實(shí)施例;圖2示出了由圖1所示的通用代碼框架模板的一個(gè)具體例子;圖3示出了由圖1所示的XML格式流程建模器生成的XML描述文件結(jié)構(gòu);圖4示出了由圖1所示的自動(dòng)代碼生成器的代碼生成過(guò)程的一個(gè)具體例子;具體實(shí)施例方式下面結(jié)合附圖和實(shí)施例對(duì)本發(fā)明裝置的使用方法做進(jìn)一步說(shuō)明。圖1示出了根據(jù)本發(fā)明的一種基于多DSP平臺(tái)的自動(dòng)代碼生成流程的一個(gè)優(yōu)選實(shí)施例。根據(jù)本發(fā)明的自動(dòng)代碼生成方法如圖1的3所示,自動(dòng)代碼生成方法3由通用代碼框架模板30,XML格式流程建模器31和自動(dòng)代碼生成器32組成。其中,通用代碼框架模板30根據(jù)特定多DSP硬件平臺(tái)I的源代碼文件類(lèi)型和格式制定;XML格式流程建模器31對(duì)用戶(hù)開(kāi)發(fā)的信號(hào)處理流程2進(jìn)行XML格式的建模和描述,并輸出XML格式的描述文件;自動(dòng)代碼生成器32根據(jù)通用代碼框架模板30和XML格式流程建模器31的輸出自動(dòng)生成DSP源代碼4,DSP源代碼4經(jīng)過(guò)編譯鏈接后即可加載到相應(yīng)的多DSP平臺(tái)5上執(zhí)行。根據(jù)圖1中的自動(dòng)代碼生成方法3,首先根據(jù)特定多DSP硬件平臺(tái)I的源代碼文件類(lèi)型和格式進(jìn)行分類(lèi)和特征提取,總結(jié)出一套通用代碼框架模板30。這里所謂的通用代碼框架模板指的是具有一定規(guī)范和格式要求,能夠進(jìn)行參數(shù)配置和擴(kuò)展,具備較好的實(shí)用性和通用性,能通過(guò)實(shí)例化轉(zhuǎn)換成實(shí)際DSP源代碼4的代碼文件。圖2示出了由圖1所示的通用代碼框架模板30的一個(gè)具體例子,該例子基于的多DSP硬件平臺(tái)是ADI公司的Ts201處理板。如圖2所示,通用代碼框架模板6由7個(gè)通用代碼框架文件組成,分別是流程控制代碼框架文件61、信號(hào)處理代碼框架文件62、通信代碼框架文件63、內(nèi)存分配代碼框架文件64、編譯/鏈接代碼框架文件65、加載代碼框架文件66和路由描述框架文件67。其中I)流程控制代碼框架文件61類(lèi)似于C/C++里的main函數(shù),主要實(shí)現(xiàn)對(duì)信號(hào)處理流程的控制,流程控制代碼框架實(shí)例化的結(jié)果就是一個(gè)實(shí)現(xiàn)信號(hào)處理流程控制的主程序,包括頭文件和相應(yīng)的c/cpp文件。流程控制代碼框架的內(nèi)容包括頭文件的聲明,計(jì)算、存儲(chǔ)、通信資源的配置和初始化,重要的宏定義和變量聲明,按照數(shù)據(jù)流模型設(shè)計(jì)的四步循環(huán)控制流程數(shù)據(jù)接收一數(shù)據(jù)處理一數(shù)據(jù)發(fā)送一狀態(tài)更新。多DSP平臺(tái)上的信號(hào)處理流程通常由多個(gè)功能模塊以一定的互連關(guān)系構(gòu)成,代碼生成時(shí)每個(gè)功能模塊都會(huì)實(shí)例化一個(gè)流程控制代碼框架文件以得到自己的主程序文件。2)信號(hào)處理代碼框架文件62類(lèi)似于C/C++里實(shí)現(xiàn)具體功能的函數(shù),不過(guò)針對(duì)信號(hào)處理的特點(diǎn),將其定義為C++語(yǔ)言中的一個(gè)“類(lèi)(Class)”。類(lèi)名稱(chēng)反映其功能名稱(chēng),類(lèi)成員主要包括構(gòu)造函數(shù)、析構(gòu)函數(shù)、執(zhí)行函數(shù)和模塊參數(shù),前面三個(gè)函數(shù)分別在類(lèi)的實(shí)例創(chuàng)建、刪除和執(zhí)行功能時(shí)被隱式或顯式地調(diào)用,最后的模塊參數(shù)作為類(lèi)的私有成員可根據(jù)用戶(hù)需要設(shè)置個(gè)數(shù)和名稱(chēng),用來(lái)描述模塊的可配置參數(shù)屬性。信號(hào)處理代碼框架文件實(shí)例化的結(jié)果就是包括信號(hào)處理模塊類(lèi)聲明的頭文件和包括信號(hào)處理模塊類(lèi)定義的c/cpp文件,這兩個(gè)文件被流程控制代碼框架文件所包含,相應(yīng)的信號(hào)處理模塊類(lèi)也在流程控制代碼框架文件中被實(shí)例化和調(diào)用。代碼生成后,每個(gè)功能模塊都將擁有自己的信號(hào)處理代碼文件。3)通信代碼框架文件63主要負(fù)責(zé)定義流程控制代碼框架中的數(shù)據(jù)接收和數(shù)據(jù)發(fā)送部分所涉及的通信函數(shù),在通信代碼框架文件中對(duì)多DSP平臺(tái)上常用的通信函數(shù)進(jìn)行了標(biāo)準(zhǔn)的接口封裝,包括延時(shí)函數(shù)、接收函數(shù)、發(fā)送函數(shù)、DMA傳輸函數(shù)等。通信代碼框架文件實(shí)例化的結(jié)果就是包括通信函數(shù)聲明的頭文件和包括通信函數(shù)功能定義的c/cpp文件。代碼生成后,所有功能模塊都共用引用這個(gè)通信函數(shù)文件。4)內(nèi)存分配代碼框架文件64負(fù)責(zé)對(duì)DSP的存儲(chǔ)資源進(jìn)行封裝,將內(nèi)存以若干個(gè)邏輯段的形式提供給用戶(hù)使用,以實(shí)現(xiàn)對(duì)流程控制代碼框架文件和信號(hào)處理代碼框架文件中存儲(chǔ)資源配置方面的支持。代碼生成后,每個(gè)功能模塊都將擁有自己的內(nèi)存分配描述文件。5)編譯/鏈接代碼框架文件65描述DSP代碼及工程生成后在編譯/鏈接過(guò)程中涉及的相關(guān)文件、編譯過(guò)程和編譯選項(xiàng)等,類(lèi)似makefile文件的格式。編譯/鏈接代碼框架文件實(shí)例化后即成為可用的makefile文件,根據(jù)不同多DSP平臺(tái)具體采用的編譯器對(duì)該文件進(jìn)行編譯鏈接,可生成最終的硬件下載文件,例如ADI公司的dxe/ldr文件、TI公司的out文件等。代碼生成后,每個(gè)功能模塊都將擁有自己的編譯/鏈接描述文件。6)加載代碼框架文件66在各個(gè)功能模塊生成的下載文件和實(shí)際多DSP硬件平臺(tái)的具體節(jié)點(diǎn)之間建立對(duì)應(yīng)關(guān)系,以進(jìn)行任務(wù)分配和映射。加載代碼框架文件以多行對(duì)照表的格式建立,即每行標(biāo)出一個(gè)下載文件名稱(chēng)和該文件要分配的DSP節(jié)點(diǎn)號(hào)(DSP節(jié)點(diǎn)可以全局編號(hào),也可以采取處理板號(hào)+板上DSP號(hào)的形式)。代碼生成后,一個(gè)工程項(xiàng)目組(可能包含多個(gè)功能模塊)將擁有一個(gè)程序加載分配描述文件。7)路由描述框架文件67描述的是多DSP平臺(tái)上各個(gè)DSP節(jié)點(diǎn)之間的硬件拓?fù)溥B接信息,同樣米用多行對(duì)照表的格式建立。例如米取全局編號(hào)的I號(hào)DSP和2號(hào)DSP之間通過(guò)3號(hào)鏈路口互連,則在對(duì)照表中的某行標(biāo)出該信息。路由描述框架文件用來(lái)實(shí)現(xiàn)自動(dòng)代碼生成中的自動(dòng)路由功能。代碼生成后,一個(gè)工程項(xiàng)目組(可能包含多個(gè)功能模塊)將擁有一個(gè)路由描述文件。根據(jù)圖1中的自動(dòng)代碼生成方法3,還要利用XML格式流程建模器31對(duì)用戶(hù)開(kāi)發(fā)的信號(hào)處理流程2進(jìn)行XML格式的建模和描述,包括模塊信息和模塊間互連關(guān)系等,并輸出XML格式的描述文件。圖3示出了由圖1所示的XML格式流程建模器31生成的XML描述文件結(jié)構(gòu)7。如圖3所示,XML描述文件結(jié)構(gòu)7包含了一系列針對(duì)多DSP平臺(tái)任務(wù)開(kāi)發(fā)特點(diǎn)提取和抽象出來(lái)的特征元素。各元素含義如下Drml元素,表示本次建模的版本信息、編碼格式。2)SyStem元素,表明本次建模的信號(hào)處理系統(tǒng)信息,作為系統(tǒng)的頂層元素,表示整個(gè)系統(tǒng)。3)application元素,用于描述信號(hào)處理流程的組成模塊和模塊間連接方式。4)actor元素,表示信號(hào)處理模塊。例如權(quán)利要求1.一種多DSP平臺(tái)上的自動(dòng)代碼生成方法,其特征是在于包括以下步驟1)針對(duì)多DSP平臺(tái)上的具體代碼進(jìn)行分類(lèi)和特征提取,總結(jié)出一套通用代碼框架模板;2)利用XML描述文件對(duì)用戶(hù)開(kāi)發(fā)的具體算法流程進(jìn)行建模和描述,其中包括模塊列表、模塊屬性和模塊間互連關(guān)系;3)最后通過(guò)自動(dòng)代碼生成器提取出XML描述文件中的模塊列表、模塊屬性和模塊互連關(guān)系信息,基于I)中的通用代碼框架模板生成最終的DSP源代碼。2.根據(jù)權(quán)利要求1中所述的自動(dòng)代碼生成方法,其特征在于,所設(shè)計(jì)的通用代碼框架模板具有一定規(guī)范和格式要求、能夠進(jìn)行參數(shù)配置和擴(kuò)展、能通過(guò)實(shí)例化轉(zhuǎn)換成實(shí)際DSP源代碼。3.根據(jù)權(quán)利要求1中所述的自動(dòng)代碼生成方法,其特征還在于,所設(shè)計(jì)的通用代碼框架模板包括流程控制代碼框架文件、信號(hào)處理代碼框架文件、通信代碼框架文件、內(nèi)存分配代碼框架文件、編譯/鏈接代碼框架文件、加載代碼框架文件和路由描述框架文件中的部分或全部。4.根據(jù)權(quán)利要求1中所述的自動(dòng)代碼生成方法,其特征在于,XML描述文件包含了一系列針對(duì)多DSP平臺(tái)任務(wù)開(kāi)發(fā)特點(diǎn)提取和抽象出來(lái)的特征元素,其中包括模塊列表、模塊屬性和模塊間互連關(guān)系。5.根據(jù)權(quán)利要求1或權(quán)利要求4中所述的自動(dòng)代碼生成方法,其特征還在于,XML描述文件包括rml兀素、system兀素、actor兀素、connect兀素、editable兀素、param兀素、port兀素、src_port兀素、dest_port兀素、src_actor兀素和dest_actor兀素中的部分或全部。6.根據(jù)權(quán)利要求1中所述的自動(dòng)代碼生成方法,其特征在于,所設(shè)計(jì)的自動(dòng)代碼生成器包含一個(gè)XML文件解析器,提取XML描述文件中的模塊信息和/或互連信息。7.根據(jù)權(quán)利要求1中所述的自動(dòng)代碼生成方法,其特征在于,所設(shè)計(jì)的自動(dòng)代碼生成器可以對(duì)通用代碼框架模板進(jìn)行實(shí)例化。8.根據(jù)權(quán)利要求1、權(quán)利要求6或權(quán)利要求7中所述的自動(dòng)代碼生成方法,其特征在于,所設(shè)計(jì)的自動(dòng)代碼生成器采用文件拷貝、關(guān)鍵詞替換、逐行生成方式中的一種或幾種對(duì)通用代碼框架模板進(jìn)行實(shí)例化。全文摘要一種多DSP平臺(tái)上的自動(dòng)代碼生成方法,其特征是主要步驟如下1)針對(duì)特定多DSP平臺(tái)上的具體代碼進(jìn)行分類(lèi)和特征提取,總結(jié)出一套通用代碼框架模板;2)利用XML描述文件對(duì)用戶(hù)開(kāi)發(fā)的具體算法流程進(jìn)行建模和描述,包括模塊列表、模塊屬性和模塊間互連關(guān)系;3)最后通過(guò)自動(dòng)代碼生成器提取出XML描述文件中的模塊列表、模塊屬性和模塊互連關(guān)系等必需信息,基于1)中的通用代碼框架模板生成最終的DSP源代碼。文檔編號(hào)G06F9/44GK103019742SQ20121059268公開(kāi)日2013年4月3日申請(qǐng)日期2012年12月31日優(yōu)先權(quán)日2012年12月31日發(fā)明者湯俊,湯小為,李寧,韋文,杜勁松,畢欣,余吉申請(qǐng)人:清華大學(xué)