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