本發(fā)明涉及信息處理
技術(shù)領(lǐng)域:
,具體涉及一種c6678多核dsp軟件加載映像的簡(jiǎn)化生成方法。
背景技術(shù):
:美國(guó)德州儀器(texasinstruments,簡(jiǎn)稱ti)公司的tms320c6678(簡(jiǎn)稱為c6678)是2014年后嵌入式高性能計(jì)算場(chǎng)合使用較廣泛的多核數(shù)字信號(hào)處理器(dsp)芯片。一片c6678中有8個(gè)c66x核(以下以0~7核表示),每個(gè)核有獨(dú)立的運(yùn)算單元、64kb內(nèi)部l1sram(靜態(tài)內(nèi)存)和512kb內(nèi)部l2sram;多個(gè)核共享4kbram以及片外的ddr3存儲(chǔ)器。在為這種多核dsp加載軟件時(shí),每個(gè)核是獨(dú)立的,需要分別為每個(gè)核把對(duì)應(yīng)的代碼和數(shù)據(jù)放到對(duì)應(yīng)的位置。在ti公司提供的codecomposestudio(簡(jiǎn)稱ccs)軟件集成開發(fā)環(huán)境中,dsp程序經(jīng)過編譯連接后生成.out可執(zhí)行文件,其中包含了字符表、代碼段、數(shù)據(jù)段等信息,可用于程序加載和調(diào)試。當(dāng)只用于程序加載時(shí),需要去掉.out文件中包含的大量調(diào)試用信息,轉(zhuǎn)換為簡(jiǎn)潔的.btbl加載表文件。ti公司提供了hex6x工具,可以把.out文件轉(zhuǎn)換為.btbl文件。比如為c6678的8個(gè)核加載程序,就需要把8個(gè).out文件轉(zhuǎn)換為8個(gè).btbl文件,再通過mergebtbl工具把加載表合成一個(gè)大的.btbl文件,如圖2所示。但是,按照以上方法,會(huì)帶來一些問題:1)用戶在編譯多核程序時(shí),必須為每個(gè)核配置不同的.cmd(連接用的存儲(chǔ)空間描述)文件,為每個(gè)核生成獨(dú)立的.out文件,否則多核的非共享地址沖突,會(huì)造成1~7加載失敗。這就復(fù)雜化了多核應(yīng)用開發(fā)的編譯過程,容易出錯(cuò)。2)當(dāng)多個(gè)核的程序使用相同源文件時(shí),可能出現(xiàn)大量的重復(fù)信息,比如在共享ddr3中初始化一個(gè)大數(shù)組,按此方法就會(huì)對(duì)同一存儲(chǔ)空間重復(fù)初始化8次,顯著延長(zhǎng)了dsp的加載時(shí)間。在一些極端場(chǎng)合,如使用慢速spi接口和應(yīng)用程序代碼量和初始化數(shù)據(jù)量較大的情況,會(huì)造成加載一片dsp耗時(shí)長(zhǎng)達(dá)數(shù)十秒的情況,超出允許范圍,可能嚴(yán)重影響系統(tǒng)性能。除了上述工具鏈外,ti公司另外提供了一種方法,稱之為mad(multicoreapplicationdeployment,多核應(yīng)用開發(fā)),但是需要使用python腳本語言和相應(yīng)的環(huán)境,使用起來也不方便。技術(shù)實(shí)現(xiàn)要素:為了解決上述問題,本發(fā)明提供了一種c6678多核dsp軟件加載映像的簡(jiǎn)化生成方法,通過修改ti公司c6678加載工具鏈中的多核環(huán)節(jié),去除轉(zhuǎn)換過程中產(chǎn)生的重復(fù)數(shù)據(jù)。采取的具體措施如下:1)確定每個(gè)核使用的.out文件;2)當(dāng)發(fā)現(xiàn)有多個(gè)核使用同一個(gè).out文件時(shí),保留共享區(qū)域的內(nèi)容,把非共享區(qū)域復(fù)制多份并修改為全局地址,生成.btbl文件。3)如有核使用不一樣的.out文件時(shí),調(diào)用mergebtbl工具合成。具體包括如下步驟:步驟一、確定多核dsp中的每個(gè)核中加載的可執(zhí)行文件,對(duì)不同的可執(zhí)行文件轉(zhuǎn)換為相應(yīng)的單核加載表文件,所述加載表文件中至少包括多核共享空間數(shù)據(jù)段以及非多核共享空間數(shù)據(jù)段;步驟二、對(duì)相同的可執(zhí)行文件,將所述對(duì)應(yīng)的單核加載表文件中的非多核共享空間數(shù)據(jù)段進(jìn)行復(fù)制,復(fù)制次數(shù)為相同可執(zhí)行文件數(shù)量減一,并將復(fù)制完成后的非多核共享空間數(shù)據(jù)段地址修改為每個(gè)核對(duì)應(yīng)的全局地址,形成多核加載表文件;步驟三、將經(jīng)過步驟二后生成的多個(gè)多核加載表文件,以及未經(jīng)過步驟二的剩余單核加載表文件,采用mergebtbl工具合成一個(gè)總加載表文件。優(yōu)選的是,所述步驟二中,將所述對(duì)應(yīng)的單核加載表文件中的多核共享空間數(shù)據(jù)段進(jìn)行復(fù)制的同時(shí),保留所述加載表文件中多核共享空間數(shù)據(jù)段。優(yōu)選的是,在步驟三之前,若僅存在一個(gè)多個(gè)加載表文件,則該加載表文件為總加載表文件本發(fā)明的優(yōu)點(diǎn):無需使用python腳本語言,快速生成沒有冗余數(shù)據(jù)的多核加載映像文件,簡(jiǎn)化轉(zhuǎn)換過程,顯著縮短軟件加載時(shí)間,保證系統(tǒng)性能。本發(fā)明可適用于使用tms320c6678dsp的嵌入式信息處理系統(tǒng)中,如航空、航天、船舶、通信、軟件無線電、人工智能等領(lǐng)域。附圖說明圖1為本發(fā)明c6678多核dsp軟件加載映像的簡(jiǎn)化生成方法的一優(yōu)選實(shí)施例的流程圖。圖2為現(xiàn)有技術(shù)中ti公司提供的加載表轉(zhuǎn)換過程。圖3為圖1所示實(shí)施例的加載映像簡(jiǎn)化生成示意圖。圖4為圖1所示實(shí)施例的指定每個(gè)核加載的程序示意圖。具體實(shí)施例為使本發(fā)明實(shí)施的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行更加詳細(xì)的描述。在附圖中,自始至終相同或類似的標(biāo)號(hào)表示相同或類似的元件或具有相同或類似功能的元件。所描述的實(shí)施例是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。下面通過參考附圖描述的實(shí)施例是示例性的,旨在用于解釋本發(fā)明,而不能理解為對(duì)本發(fā)明的限制?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。下面結(jié)合附圖對(duì)本發(fā)明的實(shí)施例進(jìn)行詳細(xì)說明。本發(fā)明的目的為:簡(jiǎn)化多核應(yīng)用的編譯過程,無需使用python腳本語言,使多核可以使用同一.out文件;降低多核dsp程序加載的時(shí)間,在代碼量和初始化數(shù)據(jù)量較大時(shí),仍能把加載耗時(shí)控制在一定范圍,避免對(duì)系統(tǒng)性能造成影響。圖1為本發(fā)明c6678多核dsp軟件加載映像的簡(jiǎn)化生成方法的一優(yōu)選實(shí)施例的流程圖,主要包括以下步驟:步驟一、確定多核dsp中的每個(gè)核中加載的可執(zhí)行文件,對(duì)不同的可執(zhí)行文件轉(zhuǎn)換為相應(yīng)的單核加載表文件,所述加載表文件中至少包括多核共享空間數(shù)據(jù)段以及非多核共享空間數(shù)據(jù)段;步驟二、對(duì)相同的可執(zhí)行文件,將所述對(duì)應(yīng)的單核加載表文件中的非多核共享空間數(shù)據(jù)段進(jìn)行復(fù)制,復(fù)制次數(shù)為相同可執(zhí)行文件數(shù)量減一,并將復(fù)制完成后的非多核共享空間數(shù)據(jù)段地址修改為每個(gè)核對(duì)應(yīng)的全局地址,形成多核加載表文件;步驟三、將經(jīng)過步驟二后生成的多個(gè)多核加載表文件,以及未經(jīng)過步驟二的剩余單核加載表文件,采用mergebtbl工具合成一個(gè)總加載表文件。需要說明的是,本實(shí)施例中,多核dsp中的每個(gè)核中加載的可執(zhí)行文件的數(shù)量一般小于多核dsp中的核數(shù)量,例如,對(duì)于8核c6678,實(shí)施例一給出了一個(gè)可執(zhí)行文件(.out文件)。首先如圖3所示,由css編譯生成的可執(zhí)行文件(.out)與用于指定hex6x的輸入?yún)?shù)一同生成加載表文件(.bubl),此時(shí)成為單核加載表文件,在該實(shí)施例中,如圖4所示,8核使用同一的.out文件,該圖4為指定每個(gè)核加載的程序。對(duì)于該實(shí)施例,按照步驟一的描述,將生成一個(gè)單核加載表文件,按照步驟二的描述,將對(duì)該加載表文件進(jìn)行7次復(fù)制,生成一個(gè)多核加載表文件,省去步驟三的具體操作,具體復(fù)制結(jié)果參考表1所示。如下表1所示,第五行及最后一行為多核共享空間數(shù)據(jù)段,在將單核.btbl轉(zhuǎn)換為多個(gè).btbl時(shí),該數(shù)據(jù)段進(jìn)行保留,第六行-第八行為單核.btbl加載表文件的非多核共享空間數(shù)據(jù)段,例如0核的三個(gè)sram地址空間,64kb內(nèi)部l1sram(靜態(tài)內(nèi)存,包括l1p及l(fā)1d)和512kb內(nèi)部l2sram,這三行非多核共享空間數(shù)據(jù)段地址進(jìn)行復(fù)制7遍,并修改為每個(gè)核對(duì)應(yīng)的全局地址,如表1所示,復(fù)制的7遍地址分別為:1核的l1psram、l1dsram、l2sram;2核的l1psram、l1dsram、l2sram;3核的l1psram、l1dsram、l2sram;4核的l1psram、l1dsram、l2sram;5核的l1psram、l1dsram、l2sram;6核的l1psram、l1dsram、l2sram;以及7核的l1psram、l1dsram、l2sram。表1c6678存儲(chǔ)器空間地址表起始地址結(jié)束地址用途共享/非共享008000000087ffff內(nèi)部地址,l2sram非共享00e0000000e07fff內(nèi)部地址,l1psram非共享00f0000000f07fff內(nèi)部地址,l1dsram非共享0c0000000c3fffff4mb共享內(nèi)存共享108000001087ffff全局地址,0核l2sram非共享10e0000010e07fff全局地址,0核l1psram非共享10f0000010f07fff全局地址,0核l1dsram非共享118000001187ffff全局地址,1核l2sram非共享11e0000011e07fff全局地址,1核l1psram非共享11f0000011f07fff全局地址,1核l1dsram非共享128000001287ffff全局地址,2核l2sram非共享12e0000012e07fff全局地址,2核l1psram非共享12f0000012f07fff全局地址,2核l1dsram非共享138000001387ffff全局地址,3核l2sram非共享13e0000013e07fff全局地址,3核l1psram非共享13f0000013f07fff全局地址,3核l1dsram非共享148000001487ffff全局地址,4核l2sram非共享14e0000014e07fff全局地址,4核l1psram非共享14f0000014f07fff全局地址,4核l1dsram非共享158000001587ffff全局地址,5核l2sram非共享15e0000015e07fff全局地址,5核l1psram非共享15f0000015f07fff全局地址,5核l1dsram非共享168000001687ffff全局地址,6核l2sram非共享16e0000016e07fff全局地址,6核l1psram非共享16f0000016f07fff全局地址,6核l1dsram非共享178000001787ffff全局地址,7核l2sram非共享17e0000017e07fff全局地址,7核l1psram非共享17f0000017f07fff全局地址,7核l1dsram非共享80000000ffffffffddr3共享修改的全局地址為:11800000-11f07fff;12800000-12f07fff;13800000-13f07fff;14800000-14f07fff;15800000-15f07fff;16800000-16f07fff;17800000-17f07fff。最終形成如上表所示的多核.btbl文件,即為最終的軟件加載映像文件。本發(fā)明提供的第二個(gè)實(shí)施例如下所示:包含可執(zhí)行文件.out1、可執(zhí)行文件.out2以及可執(zhí)行文件.out3,其中,第1-3核加載可執(zhí)行文件.out1,第4核加載可執(zhí)行文件.out2,第5-8核加載可執(zhí)行文件.out3。本實(shí)施例中,步驟一生成三個(gè)單核.btbl文件,分別為由可執(zhí)行文件.out1生成的單核加載表文件.btbl1,由可執(zhí)行文件.out2生成的單核加載表文件.btbl2,以及由可執(zhí)行文件.out3生成的單核加載表文件.btbl3;步驟二中,對(duì)單核加載表文件.btbl1復(fù)制兩遍,對(duì)單核加載表文件.btbl3復(fù)制三遍,即形成了三核加載表文件.btbl101及四核加載表文件.btbl301;步驟三中,將三核加載表文件.btbl101、四核加載表文件.btbl301以及單核加載表文件.btbl2通過mergebtbl工具合成一個(gè)總加載表文件,作為軟件加載映像。本發(fā)明無需使用python腳本語言,快速生成沒有冗余數(shù)據(jù)的多核加載映像文件,簡(jiǎn)化轉(zhuǎn)換過程,顯著縮短軟件加載時(shí)間,保證系統(tǒng)性能。本發(fā)明可適用于使用tms320c6678dsp的嵌入式信息處理系統(tǒng)中,如航空、航天、船舶、通信、軟件無線電、人工智能等領(lǐng)域。最后需要指出的是:以上實(shí)施例僅用以說明本發(fā)明的技術(shù)方案,而非對(duì)其限制。盡管參照前述實(shí)施例對(duì)本發(fā)明進(jìn)行了詳細(xì)的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其依然可以對(duì)前述各實(shí)施例所記載的技術(shù)方案進(jìn)行修改,或者對(duì)其中部分技術(shù)特征進(jìn)行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實(shí)施例技術(shù)方案的精神和范圍。當(dāng)前第1頁(yè)12