版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
達(dá)芬奇(DaVinci)軟件開發(fā)達(dá)芬奇軟件架構(gòu)及開發(fā)流程(For_)課件一、達(dá)芬奇軟件架構(gòu)及開發(fā)流程二、Codec創(chuàng)建DSPServer三、CodecEngine概述一、達(dá)芬奇軟件架構(gòu)達(dá)芬奇(DaVinci)軟件開發(fā)---------------------------------------------------------------------------------------------------------------什么是達(dá)芬奇技術(shù)?TI
的
DaVinci?
技術(shù)是一組專門為高效和引人注目的數(shù)字視頻而設(shè)計(jì)的基于
DSP
的系統(tǒng)解決方案-----------------適用于數(shù)碼攝像機(jī)、視頻安全設(shè)備、高級(jí)醫(yī)療成像設(shè)備、便攜式視頻播放器或任何其它您能想象得到的視頻應(yīng)用。
成功實(shí)現(xiàn)數(shù)字視頻需要四大要素的最新進(jìn)步,即:處理器、開發(fā)工具、軟件以及系統(tǒng)專業(yè)技術(shù)。由于能夠在集成這四種要素的平臺(tái)中實(shí)現(xiàn)數(shù)字視頻、音頻、語音與話音技術(shù),因此達(dá)芬奇技術(shù)可以為數(shù)字視頻的當(dāng)前變革打下基礎(chǔ)。
達(dá)芬奇技術(shù)充分利用了
TI
25
年的數(shù)字信號(hào)處理與集成電路專業(yè)技術(shù)來提供系統(tǒng)級(jí)芯片(SoC),這種系統(tǒng)針對靈活的數(shù)字視頻實(shí)施而進(jìn)行了精心優(yōu)化,擁有業(yè)界領(lǐng)先的性能并集成了可編程數(shù)字信號(hào)處理器(DSP)內(nèi)核、ARM處理器以及視頻加速協(xié)處理器。憑借高效的處理能力、存儲(chǔ)器、I/O帶寬、平衡的內(nèi)部互連以及專用外設(shè)組合,基于達(dá)芬奇技術(shù)的SoC能夠以最低的成本為視頻應(yīng)用提供理想的核心動(dòng)力。處理器自身只能用作數(shù)字視頻解決方案的基礎(chǔ)。管理數(shù)字視頻系統(tǒng)的所有組件是極其復(fù)雜的工程難題。對于許多應(yīng)用來說,數(shù)字視頻只是更為龐雜的系統(tǒng)的眾多組件之一。工程師隨意地在自視為基礎(chǔ)技術(shù)方面投入大把時(shí)間和資金的好日子已經(jīng)一去不復(fù)返了。達(dá)芬奇(DaVinci)軟件開發(fā)達(dá)芬奇(DaVinci)軟件開發(fā)---------------------------------------------------------------------------------------------------------------
為了真正意義上地讓開發(fā)人員克服最初的障礙并且加快產(chǎn)品上市進(jìn)程,僅僅開發(fā)實(shí)施數(shù)字視頻的基礎(chǔ)芯片和軟件已經(jīng)遠(yuǎn)遠(yuǎn)不夠。開發(fā)人員不僅需要處理器,他們還需要能夠直接投入生產(chǎn)的理想代碼。換句話說,為了滿足其應(yīng)用的特定需求,開發(fā)人員還需要已經(jīng)集成到可配置或輕松編程的數(shù)字視頻子系統(tǒng)的硬件和軟件。
正像匯編語言向
C
語言的過渡使開發(fā)人員能夠全力開發(fā)更高級(jí)功能性那樣,達(dá)芬奇技術(shù)使開發(fā)人員能夠擺脫數(shù)字視頻的具體技術(shù)細(xì)節(jié)。現(xiàn)在,開發(fā)人員不再需要了解其視頻應(yīng)用中實(shí)施具體
CODEC
引擎(如:MPEG-2、H.263、WMA9)的細(xì)節(jié)。利用允許開發(fā)人員無需修改上層應(yīng)用代碼即可以使用理想
CODEC
的
API,我們可以顯著簡化視頻
CODEC
處理的具體低層次細(xì)節(jié)。
擺脫
CODEC
的困擾是數(shù)字視頻廣泛普及的重要一步。當(dāng)開發(fā)人員可以立足于以前開發(fā)的功能性,創(chuàng)新就已經(jīng)來到他們眼前。例如,在過去開發(fā)電子器件時(shí),即使是最基本的功能,工程師們也需要進(jìn)行柵極布局。許多年來,TI
等公司始終致力于在硅芯片中集成功能,為超越自身功能期望的器件打下了基礎(chǔ),同時(shí)也降低了實(shí)現(xiàn)預(yù)期目標(biāo)所需要的工程量。例如,由于提供了顯著加快信號(hào)處理任務(wù)的計(jì)算引擎,DSP
的問世已經(jīng)推動(dòng)了數(shù)十載的技術(shù)創(chuàng)新。利用達(dá)芬奇技術(shù),TI
可以再度實(shí)現(xiàn)全新的創(chuàng)新水平。正是
DSP
的問世帶來了計(jì)算加速,因此達(dá)芬奇技術(shù)會(huì)以
TI
的
DSP
為基礎(chǔ)來提供應(yīng)用加速。開發(fā)人員不再需要了解各種音頻、視頻、影像以及語音
CODEC
背后的機(jī)制。達(dá)芬奇(DaVinci)軟件開發(fā)一、達(dá)芬奇軟件架構(gòu)及開發(fā)流程達(dá)芬奇軟件架構(gòu)及開發(fā)流程(For_)課件Davinci軟件平臺(tái)概述用戶軟件用戶程序,框架,GUI設(shè)備驅(qū)動(dòng)CodecAPIsARM/DSP通信Linux操作系統(tǒng)ARMRISCVideoImageSpeechAudioSocketNodesDSPLinkDSP/BIOSDSP外設(shè)Davinci軟件平臺(tái)概述用戶軟件設(shè)備CodecAPIsCodecEngine2.30EngineAlgorithmAPIAlgorithmAPIA-NodeTaskS-NodeTaskDSKT2DMAN3ACPY3RMANCodec
EngineRemoteServerFramework
Components2.30xDM
APICodec/算法xDM
APICodec/算法OMAP-L137SoftwareArchitectureARM子系統(tǒng)DSP子系統(tǒng)Linux用戶空間Linux內(nèi)核空間TransportI/OI/OI/OUSB2.0DriverCMEMDriverMcASPDriverEMACDriverMMC/SDDriverSPIDriverLinuxAPIsLinkDriverUARTDriverDSP/BIOSLinkv1.6xDSP/BIOS5.3x應(yīng)用程序OSALServerCCS3.3/CGTMontaVistaPro5.0ToolchainLCDDriverI2CDriverGPIODriverPSLCodecEngine2.30EngineAlgoritCodecEngine2.30EngineAlgorithmAPIDMAN3Framework
Components2.30C6747SoftwareArchitectureDSP系統(tǒng)USB2.0DriverMcASPI2CDriverCMEMDriverEDMADriverGPIODriverEMACDriverMMC/SDDriverSPIDriverUARTDriver應(yīng)用程序ACPY3DSK2DMANDSP/BIOS5.32LCDDriverNANDDriverERTFSDriverCCS3.3/CGTxDM
APICodec/算法xDM
APICodec/算法功耗管理PowerManager(PWRM)PSLCodecEngine2.30EngineAlgorit達(dá)芬奇DMSoC軟件概述---------------------------------------------------------------------------------------------------------------
達(dá)芬奇DMSoC軟件概述
一般來講,軟件系統(tǒng)分為應(yīng)用層、信號(hào)處理層和I/O層三部分,TI提供的達(dá)芬奇參考軟件框架就是基于這樣的結(jié)構(gòu),如下圖所示。圖1達(dá)芬奇DMSoC軟件概述圖1達(dá)芬奇DMSoC軟件概述---------------------------------------------------------------------------------------------------------------應(yīng)用層:工程師可以在系統(tǒng)的用戶空間在系統(tǒng)功能性上添加和發(fā)揮自己的特色。信號(hào)處理層:通常都運(yùn)行在DSP一側(cè)負(fù)責(zé)信號(hào)處理,包括Video/Audio編解碼算法、CodecEngine、DSP的實(shí)時(shí)操作系統(tǒng)DSP/BIOS及和ARM通信的模塊。信號(hào)處理層(SPL)一方面通過VISAAPI接口與應(yīng)用層(APL)連接,另一方面則通過DSP/BIOS與底層內(nèi)核溝通。I/O層:就是我們通常所說的驅(qū)動(dòng),是針對Davinci外設(shè)模塊的驅(qū)動(dòng)程序。其中應(yīng)用層通過CodecEngine的VISAAPI來調(diào)用DSP側(cè)的算法,通過EPSI(EasyPeripheralSoftwareInterface)API來訪問和操作Davinci的外設(shè)。這三個(gè)部分通常對應(yīng)三個(gè)Davinci軟件開發(fā)小組。當(dāng)然還需要一個(gè)系統(tǒng)集成工程師把這三個(gè)部分集成起來,不過VISAAPI和EPSIAPI的存在已經(jīng)大大簡化了集成工作的復(fù)雜程度。
達(dá)芬奇DMSoC軟件概述應(yīng)用層:工程師可以在系統(tǒng)的用戶空間在CodecEngine概述---------------------------------------------------------------------------------------------------------------下圖給出了這種框架的結(jié)構(gòu)示意圖。共享DDR2存儲(chǔ)器----ARM與DSP之間共享內(nèi)存,進(jìn)行物理數(shù)據(jù)交換。DSPLink---------------雙核通信的基礎(chǔ)軟件,為開發(fā)人員提供通用的API,用于描述ARM與DSP之間通信的物理鏈路的特征。引擎功能層------------用于管理算法對象的實(shí)例,例如創(chuàng)建一個(gè)對象的具體過程等。VISA層-----------------面向引擎功能層的一個(gè)接口,用于定義創(chuàng)建、刪除和使用一個(gè)特定符合XDM標(biāo)準(zhǔn)的算法的進(jìn)程。由于CodecEngine的主要任務(wù)是為從ARM發(fā)起的VISA命令控制遠(yuǎn)程的XDM算法起到一個(gè)管道的作用,因此VISA層實(shí)際上就代表了XDM接口層。CodecEngine概述達(dá)芬奇軟件架構(gòu)及開發(fā)流程---------------------------------------------------------------------------------------------------------------下面就是一個(gè)完整的應(yīng)用程序開發(fā)步驟:xDMNon-xDM可發(fā)布使用的Codec包VISAStubDSP算法工程師運(yùn)行在DSP上的可執(zhí)行程序:.cfg,.tcf,main()CodecServer集成工程師可執(zhí)行應(yīng)用程序ARM應(yīng)用工程師各種引擎配置CodecEngine集成工程師*.cfgDSP/BIOS,FrameWorkComponent,DSPLink,xDCServer名稱,Codec列表各種不同的Codec包:*.x64P,*.cfg*.a64P即*.lib*.x64P即*.out達(dá)芬奇軟件架構(gòu)及開發(fā)流程xDMNon-xDM可發(fā)布使用的C達(dá)芬奇軟件架構(gòu)及開發(fā)流程---------------------------------------------------------------------------------------------------------------一個(gè)完整的應(yīng)用程序開發(fā)步驟:xDMNon-xDM可發(fā)布使用的Codec包VISAStubDSP算法工程師*.a64P第一步:需要基于DSP利用CCS開發(fā)自己的音視頻編解碼算法,編譯生成一個(gè)編解碼算法的庫文件*.lib(等同于Linux環(huán)境下的*.a64P,直接在Linux環(huán)境下修改文件后綴名即可)。由于需要確保算法可被CodecEngine使用和配置,所以要確保這些算法實(shí)現(xiàn)需要符合xDM(xDAIS(eXpressDSPAlgorithmInterfaceStandard)forDigitalMedia)標(biāo)準(zhǔn)。Codec主要完成音視頻的核心算法,應(yīng)用程序運(yùn)行時(shí)被調(diào)用,并不參與其他功能。如果算法與XDM標(biāo)準(zhǔn)兼容,則可不經(jīng)修改而直接被CodecEngine的VISAAPI遠(yuǎn)程執(zhí)行;如不兼容,則需為其提供CodecEngine的框架和終端接口(具體請參考spraae7.pdf)
。達(dá)芬奇軟件架構(gòu)及開發(fā)流程xDMNon-xDM可發(fā)布使用的C達(dá)芬奇軟件架構(gòu)及開發(fā)流程---------------------------------------------------------------------------------------------------------------一個(gè)完整的應(yīng)用程序開發(fā)步驟:第二步:將Codec集成到CodecEngine中。將第一步開發(fā)完成的Codec或已有的符合xDM的Codec集成到CodecEngine中,這一步需要配置兩個(gè)JavaScript的腳本文件:*.cfg----表明Codec的使用和配置信息,*.tcf-----描述Codec在達(dá)芬奇上的內(nèi)存分配的配置.配置好這兩個(gè)文件后,使用make命令即可生成CodecEngine,其文件名一般為*.X64P(即.out文件)
.*.x64P(即.out文件)DSP端可執(zhí)行程序,即DSPServer,可被ARM端的應(yīng)用程序直接調(diào)用。對達(dá)芬奇的軟件來說,DSPServer也叫CodecServer運(yùn)行在DSP上的可執(zhí)行程序:.cfg,.tcf,main()CodecServer集成工程師*.x64PDSP/BIOS,FrameWorkComponent,DSPLink,xDC達(dá)芬奇軟件架構(gòu)及開發(fā)流程第二步:運(yùn)行在DSP上的可執(zhí)行程序達(dá)芬奇軟件架構(gòu)及開發(fā)流程---------------------------------------------------------------------------------------------------------------一個(gè)完整的應(yīng)用程序開發(fā)步驟:由于在雙核環(huán)境中,CodecEngine是在DSP上執(zhí)行,而操作系統(tǒng)是由ARM通過VISAAPI控制CodecEngine,所以必須先在遠(yuǎn)程的DSP生成一個(gè)CodecServer。CodecServer是后綴為.x64P的文件,是一個(gè)集成了編解碼器、框架元件和系統(tǒng)代碼的二進(jìn)制庫。CodecServer包含了一個(gè)為相應(yīng)客戶端(ARM)生成編解碼器、提供系統(tǒng)運(yùn)行信息(包括指令和內(nèi)存使用情況)的DSP/BIOS任務(wù)線程;客戶端(ARM)的應(yīng)用程序通過使用VISAAPI與在遠(yuǎn)程DSP上的編解碼器聯(lián)系。運(yùn)行在DSP上的可執(zhí)行程序:.cfg,.tcf,main()CodecServer集成工程師*.x64PDSP/BIOS,FrameWorkComponent,DSPLink,xDC達(dá)芬奇軟件架構(gòu)及開發(fā)流程運(yùn)行在DSP上的可執(zhí)行程序:.cf達(dá)芬奇軟件架構(gòu)及開發(fā)流程---------------------------------------------------------------------------------------------------------------一個(gè)完整的應(yīng)用程序開發(fā)步驟:第三步:開發(fā)音視頻應(yīng)用程序(ARM),并在其中調(diào)用CodecEngine在Linux下開發(fā)音視頻應(yīng)用程序,包括用戶界面,音視頻的采集、播放、同步等,其中完成對CodecEngine的調(diào)用,應(yīng)用程序也要完成一個(gè)擴(kuò)展名為.cfg的腳本配置文件,以表明對CodecEngine的使用狀況.引擎配置(通過配置工具),寫入到.cfg文件
引擎配置的工作,包括引擎的名字、每個(gè)引擎中包含什么編解碼器、編解碼器是本地執(zhí)行還是遠(yuǎn)程執(zhí)行等,如果這些編解碼器在遠(yuǎn)程執(zhí)行的,則還需配置相應(yīng)的CodecServer。一般將所有的配置寫到一個(gè).cfg文件里面(具體說明,請參考sprue67.pdf的第5章IntegratinganEngine)
.各種引擎配置CodecEngine集成工程師Server名稱,Codec列表*.cfg達(dá)芬奇軟件架構(gòu)及開發(fā)流程第三步:各種引擎配置CodecE達(dá)芬奇軟件架構(gòu)及開發(fā)流程---------------------------------------------------------------------------------------------------------------一個(gè)完整的應(yīng)用程序開發(fā)步驟:第四步:
ARM應(yīng)用工程師利用CoedcEngine的應(yīng)用編程接口create/delete配置好的引擎實(shí)例,進(jìn)而create/delete和控制編解碼器。ARM應(yīng)用工程師收到不同的codec包、DSPServer和Engine配置文件*.cfg,把自己的應(yīng)用程序通過編譯、鏈接,最終生成ARM端可執(zhí)行代碼。ARM應(yīng)用工程師可使用以下資源:
a.從算法開發(fā)工程師得到的大量的編解碼器軟件包(*.lib);b.從服務(wù)集成工程師得到一個(gè)可以在DSP上運(yùn)行的CodecServer二進(jìn)制文件,一般為.x64P文件;
c.從引擎集成工程師得到一個(gè)引擎配置文件,一般為.cfg文件。
可執(zhí)行應(yīng)用程序ARM應(yīng)用工程師*.cfg*.lib,*.x64P,*.cfg達(dá)芬奇軟件架構(gòu)及開發(fā)流程第四步:可執(zhí)行應(yīng)用程序ARM應(yīng)用工達(dá)芬奇軟件架構(gòu)及開發(fā)流程---------------------------------------------------------------------------------------------------------------一個(gè)完整的應(yīng)用程序開發(fā)步驟:由于CodecEngine不參與任何的I/O操作,只是純粹的視頻編解碼算法處理,因此應(yīng)用工程師需要管理I/O,包括文件操作(文件的打開、讀寫與存儲(chǔ)等)和外設(shè)操作(外設(shè)的打開、關(guān)閉與控制等)。至此,即可加載DSPLINK和CMEM模塊,運(yùn)行應(yīng)用程序.可執(zhí)行應(yīng)用程序ARM應(yīng)用工程師*.cfg各種不同的Codec包:*.x64P,*.cfg
至此一個(gè)完整的達(dá)芬奇音視頻應(yīng)用程序就完成了,其中許多過程是通過腳本文件配置完成的,過程非常簡單易懂,下面我們需要在達(dá)芬奇上運(yùn)行它,首先要加載DSPLINK和CMEM兩個(gè)驅(qū)動(dòng)程序模塊,其中DSPLINK主要實(shí)現(xiàn)了ARM和DSP的底層通信,而CMEM則主要是完成在物理段上分配連續(xù)內(nèi)存的功能,加載完這兩個(gè)模塊,這樣便可直接運(yùn)行已完成的應(yīng)用程序。達(dá)芬奇軟件架構(gòu)及開發(fā)流程可執(zhí)行應(yīng)用程序ARM應(yīng)用工程師*.達(dá)芬奇(DaVinci)軟件開發(fā)---------------------------------------------------------------------------------------------------------------
一般的視頻應(yīng)用系統(tǒng)中,Davinci的ARM負(fù)責(zé)操作系統(tǒng)應(yīng)用,DSP負(fù)責(zé)運(yùn)行音視頻codec算法處理,ARM通過TI的CodecEngine機(jī)制調(diào)用DSP側(cè)的codec.達(dá)芬奇(DaVinci)軟件開發(fā)
三、
CodecEngine概述達(dá)芬奇軟件架構(gòu)及開發(fā)流程(For_)課件CodecEngine概述---------------------------------------------------------------------------------------------------------------CodecEngine概述前面我們提到,應(yīng)用工程師通過調(diào)用CodecEngine的API來調(diào)用和運(yùn)行符合xDAIS的算法(關(guān)于API的具體信息,請參考sprue67.pdf第4章)。達(dá)芬奇技術(shù)體系中引入了CodecEngine,并創(chuàng)建了一整套的應(yīng)用開發(fā)平臺(tái)。CodecEngine為通用處理器(GPP)上的開發(fā)者提供更為簡單的開發(fā)環(huán)境。在Davinci軟件中,符合xDAIS的音視頻編解碼算法(即xDM算法)的調(diào)用是通過CodecEngine的VISAAPI完成的。CodecEngine通過這套API為算法的執(zhí)行提供了一個(gè)標(biāo)準(zhǔn)的軟件架構(gòu)和接口,體現(xiàn)在以下幾個(gè)方面:通過CodecEngineAPI調(diào)用的算法可以運(yùn)行在本地(ARM側(cè))或者遠(yuǎn)端(DSP側(cè));2.CodecEngine可以基于ARM+DSP、DSP或ARM上運(yùn)行,GPP通過CodecEngine對其實(shí)行控制
;3.無論CodecEngine運(yùn)行在ARM還是DSP上,對應(yīng)的CodecEngineAPI都是完全一致的;4.對于所有支持的不同處理器、運(yùn)行方式及操作系統(tǒng),CodecEngine都有相同的API.Codec
Engine定義了4類編解碼器算法接口標(biāo)準(zhǔn),分別是Video、Image、Speech、Audio,簡稱VISA.
CodecEngine概述CodecEngine概述---------------------------------------------------------------------------------------------------------------CodecEngine概述圖1達(dá)芬奇軟件結(jié)構(gòu)框圖
CodecEngine是連接ARM和DSP或協(xié)處理器的橋梁,是介于應(yīng)用層(ARM側(cè)的應(yīng)用程序)和信號(hào)處理層(DSP側(cè)的算法)之間的軟件模塊。ARM應(yīng)用程序調(diào)用CodecEngine的VISA(Video,Image,Speech,Audio)API,如VIDENC_process(a,b,c)。CodecEngine的stub(ARM側(cè))會(huì)把參數(shù)a,b,c以及要調(diào)用DSP側(cè)process這個(gè)信息打包,通過消息隊(duì)列(messagequeue)傳遞到DSP。CodecEngine的skeleton(DSP側(cè))會(huì)解開這個(gè)參數(shù)包,把參數(shù)a,b,c轉(zhuǎn)換成DSP側(cè)對應(yīng)的參數(shù)x,y,z(比如ARM側(cè)傳遞的是虛擬地址,而DSP只能認(rèn)物理地址),DSP側(cè)的DSPserver(優(yōu)先級(jí)較低,負(fù)責(zé)和ARM通信的任務(wù))會(huì)根據(jù)process這一信息創(chuàng)建一個(gè)DSP側(cè)的process(x,y,x)任務(wù)最終實(shí)現(xiàn)VIDENC_process(a,b,c)的操作。CodecEngine概述圖1達(dá)芬奇軟件結(jié)構(gòu)框圖CodCodecEngine入門第一步
---------------------------------------------------------------------------------------------------------------CodecEngine入門第一步CodecEngine1.20根目錄下的release_notes_codec_engine_1_20.html。這個(gè)文檔就是你了解CodecEngine的開始,里面有關(guān)于該版本CodecEngine的介紹、相關(guān)文檔資料的鏈接、新的功能、支持哪些芯片、已知的bug、修正了哪些bug及例子等等的具體說明。具體如圖2藍(lán)色字體所示。瀏覽該文檔后,初學(xué)者至少可以知道哪里可以找到自己想要的文檔或例子。舉例來說,如果想找相關(guān)的文檔,點(diǎn)擊Documentation就可以看到這個(gè)CodecEngine文件包里的文檔的鏈接。圖2CodecEngine1.20ReleaseNotes截圖
CodecEngine入門第一步圖2CodecEngCodecEngine入門第二步
---------------------------------------------------------------------------------------------------------------CodecEngine入門第二步點(diǎn)擊CodecEngine的發(fā)布說明文檔(如圖2)的ValidationInfo,我們可以知道CodecEngine1.20需要和以下軟件模塊和工具配合使用:
FrameworkComponents1.20.02
xDAIS5.21
XDCTools2.93.01
DSP/BIOSLink1.40.05,configuredfortheDM6446EVM
C6xCodeGenerationToolsversion6.0.8
DSP/BIOS5.31.05
MontaVistaLinuxv4.0
RedHatEnterpriseLinux3(SMP)因此,我們需要在該CodecEngine安裝的DVSDK文件包下面檢查上面提到的軟件模塊和工具是否安裝,版本是否正確。否則,可能會(huì)編譯不過CodecEngine的例子。那么,什么是FrameworkComponents,什么是xDAIS,什么又是XDCTools呢?你可以分別到它們的根目錄下瀏覽它們各自的發(fā)布說明文檔,做一個(gè)總體的了解。這里我們簡單介紹一下,可以幫助大家盡快找到和自己相關(guān)的重點(diǎn)及資源。CodecEngine入門第二步CodecEngine入門第二步---------------------------------------------------------------------------------------------------------------1)FrameworkComponents
是TI提供的一個(gè)軟件模塊,負(fù)責(zé)DSP側(cè)的memory和DMA資源管理。
因此,DSP算法工程師需要了解這個(gè)軟件模塊。
/wiki/index.php?title=Framework_Components_FAQ2)xDAIS是一個(gè)標(biāo)準(zhǔn),它定義了TIDSP算法接口的標(biāo)準(zhǔn)。這樣大大提高了DSP算法軟件的通用性。
DSP算法工程師要寫出能被ARM通過CodecEngine調(diào)用的算法,必須保證自己的算法接口符合這個(gè)標(biāo)準(zhǔn)。
因此,DSP算法工程師也必須了解這個(gè)軟件模塊。
/wiki/index.php?title=Category:XDAISCodecEngine入門第二步CodecEngine入門第二步---------------------------------------------------------------------------------------------------------------3)XDCTools
和gmake類似,是一個(gè)工具。XDC根據(jù)用戶定義的一套build指令,通過調(diào)用用戶指定的ARM工具鏈(ToolChain)和DSP編譯器(C6xCodeGenerationTools)build出ARM側(cè)和DSP側(cè)的可執(zhí)行文件。
可以先不必細(xì)究這個(gè)工具,只需通過編CodecEngine的例子,知道如何設(shè)置build指令就可以了。4)DSP/BIOSLink是實(shí)現(xiàn)ARM和DSP之間通信的底層軟件,CodecEngine就是建立在此底層軟件之上。
在修改系統(tǒng)內(nèi)存分配(缺省是256MB的DDR2)時(shí),DSP/BIOSLink1.38版本的用戶需要修改DSP/BIOSLink的配置文件,并重新buildDSP/BIOSLink。而DSP/BIOSLink1.40版本以后的用戶就無需此操作。
/wiki/index.php?title=DSPLink_Overview
/index.php?title=Changing_the_DVEVM_memory_mapCodecEngine入門第二步CodecEngine入門第二步---------------------------------------------------------------------------------------------------------------5)C6xCodeGenerationTools
是Linux環(huán)境下C6000系列DSP的編譯器.我們用CCS開發(fā)DSP時(shí)都是用的Windows環(huán)境下的DSP編譯器。6)DSP/BIOS
是TI免費(fèi)提供的DSP實(shí)時(shí)操作系統(tǒng)。和上面C6xCodeGenerationTools一樣,這里的DSP/BIOS也是Linux環(huán)境下的版本。
DSP系統(tǒng)工程師需要了解這個(gè)操作系統(tǒng)。
/wiki/index.php?title=Category:DSPBIOSCodecEngine入門第二步CodecEngine入門第三步---------------------------------------------------------------------------------------------------------------CodecEngine入門第三步
開發(fā)ARM+DSP平臺(tái)需要三類工程師:ARM應(yīng)用程序工程師、DSP算法工程師和DSP系統(tǒng)工程師。而開發(fā)ARM+協(xié)處理器平臺(tái)只需要ARM應(yīng)用程序工程師。下面就讓我們針對這三類工程師做分別介紹。如果您使用的是TI或TI第三方的編解碼算法,就不需要關(guān)注DSP算法工程師的部分。如果使用ARM+協(xié)處理器平臺(tái),就只需關(guān)心ARM應(yīng)用工程師的部分。CodecEngine入門第三步達(dá)芬奇軟件架構(gòu)及開發(fā)流程(For_)課件CodecEngine入門第三步
---------------------------------------------------------------------------------------------------------------DSP算法工程師應(yīng)該如何著手?2)熟悉FrameworkComponentsFrameworkComponents主要包括兩個(gè)模塊DSKT2和DMAN3,它們分別負(fù)責(zé)DSP側(cè)的memory和EDMA資源管理。DSP算法使用的memory必須是先向DSKT2提出申請并由DSKT2分配得到的。同樣DSP算法使用的EDMA通道也是向DMAN3申請并由DMAN3分配得到的。而關(guān)于QDMA的操作,是通過ACPY3這個(gè)模塊實(shí)現(xiàn)的。這樣的好處是很容易對DSP側(cè)不同的算法做整合,不同算法之間不用擔(dān)心資源(Memory和EDMA)的沖突問題。在FrameworkComponents軟件包根目錄下的發(fā)布說明文檔里,可以很快找到相關(guān)文檔的鏈接。在FrameworkComponents安裝路徑下packages\ti\sdo\fc\dman3\examples有一個(gè)FastCopy的例子,可以幫您理解如何基于FrameworkComponents的ACPY3模塊實(shí)現(xiàn)QDMA的操作。另外,有些用戶DSP側(cè)的算法比較簡單,在確保不和ARM側(cè)EDMA資源沖突的前提下在算法里直接操作EDMA不使用DMAN3也是可以的。這樣做的弊端是和其它算法做整合時(shí)會(huì)遇到資源使用沖突的問題。CodecEngine入門第三步CodecEngine入門第三步
---------------------------------------------------------------------------------------------------------------DSP系統(tǒng)工程師應(yīng)該如何著手?通常DSP算法工程師都會(huì)把自己的符合xDM標(biāo)準(zhǔn)的算法編成一個(gè).lib文件(或
.a64P),供DSP系統(tǒng)工程師調(diào)用。DSP系統(tǒng)工程師最終build出一個(gè)DSPServer(也就是DSP的可執(zhí)行程序.x64P,和CCS下編譯生成的.out類似)。(參考/lit/ug/sprued5b/sprued5b.pdf,這個(gè)文檔會(huì)講到.xdc和.bld等文件,CodecEngine1.20及以上版本的用戶可以先不細(xì)究,后面介紹工具幫您自動(dòng)生成這些文件。)CodecEngine入門第三步CodecEngine入門第三步
---------------------------------------------------------------------------------------------------------------DSP系統(tǒng)工程師應(yīng)該如何著手?1)如果現(xiàn)在有一個(gè).lib文件(或.a64P)(算法必須符合xDM標(biāo)準(zhǔn)),如何生成自己的DSPServer呢?下面URL有詳細(xì)的關(guān)于RTSCCodecandServerPackageWizard工具介紹,教您如何把一個(gè).lib文件封裝成RTSCCodec包和RTSCDSPServer包,并最終build出DSP的可執(zhí)行程序.x64P。/index.php?title=RTSC_Codec_And_Server_Package_Wizards/index.php?title=I_just_want_my_video_codec_to_work_with_the_DVSDK2)如果您使用的是CodecEngine1.20以前的版本,請參考CodecEngine安裝路徑下examples/servers/video_copy這個(gè)例子。這時(shí)就需要搞清楚sprued6c.pdf和sprued5b.pdf中提到的.xdc和.xs等文件的功能,也可以在video_copy中的相關(guān)文件的基礎(chǔ)上修改手動(dòng)創(chuàng)建出自己的RTSCCodec包和RTSCDSPserver包。3)創(chuàng)建好RTSCCodec和RTSCDSPServer包之后,就是如何build出.x64P的問題了。點(diǎn)擊圖2所示的Examples,就可以找到buildCodecEngine例子的說明文檔的鏈接。按照這個(gè)文檔做一遍后,就可以對如何buildCodecServer有一個(gè)清楚的了解。其中關(guān)鍵是修改user.bld和xdcpaths.mak文件,設(shè)置CodecEngine依賴的其它軟件模塊和工具的正確路徑。[A]4)如果自己的硬件DDR2大小和例子中的256Mbytes不一致,需要修改DSP的.tcf文件和其他配置。還有些工程師不清楚如何分配memory及如何決定具體段,如:DDRALGHEAP和DDR的大小,以及如何配置./loadmodules里的參數(shù)都請參考:/index.php?title=Changing_the_DVEVM_memory_mapCodecEngine入門第三步CodecEngine入門第三步
---------------------------------------------------------------------------------------------------------------ARM應(yīng)用程序工程師應(yīng)該如何著手?ARM應(yīng)用工程師需要調(diào)用CodecEngine的VISAAPI,最終編出ARM側(cè)的可執(zhí)行程序,因此,必須根據(jù)自己的應(yīng)用學(xué)習(xí)相關(guān)的VISAAPI、如何創(chuàng)建ARM側(cè)CodecEngine的package及配置文件。參考/lit/ug/sprue67d/sprue67d.pdf,這個(gè)文檔也涉及到如何調(diào)試CodecEngine的內(nèi)容)。1)了解ARM應(yīng)用程序調(diào)用CodecEngine的流程、VISAAPI和其他CodecEngineAPI.
參考CodecEngine安裝路徑下examples/apps/video_copy的例子(較簡單)或者DVSDK安裝路徑下demos里的encode/decode/encodedecode例子(較復(fù)雜)./index.php?title=Configuring_Codec_Engine_in_Arm_apps_with_createFromServer2)了解ceapp.cfg文件.
sprue67d.pdf有相關(guān)介紹,可以先讀懂examples/apps/video_copy/ceapp.cfg.3)用[A]中提到的方法學(xué)習(xí)如何buildARM側(cè)的可執(zhí)行程序4)如何在多線程中調(diào)用codecengine,參考:/index.php?title=Multiple_Threads_using_Codec_Engine_HandleCodecEngine入門第三步CodecEngine入門第三步
---------------------------------------------------------------------------------------------------------------ARM應(yīng)用程序工程師應(yīng)該如何著手?5)還可以參考以下三個(gè)文檔了解更多TIdemo的ARM應(yīng)用程序的結(jié)構(gòu)、線程調(diào)度等具體的問題。
EncodeDecodeDemofortheDaVinciDVEVM/DVSDK1.2(Rev.A)(spraah0a.htm,8KB)27Jun2007Abstract
EncodeDemofortheDaVinciDVEVM/DVSDK1.2(Rev.A)(spraa96a.htm,8KB)27Jun2007Abstract
DecodeDemofortheDaVinciDVEVM/DVSDK1.2(Rev.A)(spraag9a.htm,8KB)27Jun2007AbstractCodecEngine入門第三步使用中常碰到的問題---------------------------------------------------------------------------------------------------------------1)如果遇到問題可以先訪問/index.php?title=Codec_Engine_FAQ2)有些工程師沒有DSP開發(fā)經(jīng)驗(yàn),或者暫時(shí)沒有仿真器通過JTAG調(diào)試DSP.可以參考下面網(wǎng)頁的內(nèi)容,先做一個(gè)“HelloWorld”的例程對ARM和DSP如何協(xié)同工作有個(gè)感性認(rèn)識(shí)。/index.php?title=How_to_build_an_ARM/DSP_Hello_World_program_on_the_DaVinci_EVM3)很多工程師都是參考video_copy的例子,在它的基礎(chǔ)上把自己的算法加進(jìn)去。因?yàn)橛性创a,這樣比較容易。但肯定要根據(jù)自己算法的需要修改ARM和DSP之間傳遞的buffer和參數(shù),重要的是先保證ARM側(cè)的應(yīng)用程序可以把buffer和參數(shù)正確傳遞到DSP,DSP可以把處理之后的buffer正確的傳到ARM側(cè)的應(yīng)用程序。把這個(gè)通路打通之后,就比較容易定位問題是出在ARM應(yīng)用程序還是DSP側(cè)的算法。另外,參考video_copy例子時(shí)注意代碼的注釋,以便清楚哪一句代碼可以刪掉哪一句必須要修改或保留。如果要擴(kuò)展xDM的數(shù)據(jù)結(jié)構(gòu)請參考:/index.php?title=Extending_data_structures_in_xDM4)CodecEngineDSP側(cè)會(huì)涉及到Cache一致性的問題。請參考:/index.php?title=Cache_Management使用中常碰到的問題使用中常碰到的問題---------------------------------------------------------------------------------------------------------------5)關(guān)于CodecEngine系統(tǒng)調(diào)試,有以下幾種方法:A.打開CodecEnginetrace,通過打印信息看問題出在什么地方。比如engine_open失敗,DSP側(cè)不能創(chuàng)建codec等等。
a)CodecEngine2.0及以上版本,請參考:/index.php?title=Easy_CE_Debugging_Feature_in_CE_2.0b)CodecEngine1.x版本,請參考:/index.php?title=TraceUtilB.ARM應(yīng)用程序跑起來后,用仿真器連上CCS調(diào)試DSP側(cè)程序,參考:/index.php?title=Debugging_the_DSP_side_of_a_CE_application_on_DaVinci_using_CCS
C.用SocAnalyzer可以做系統(tǒng)調(diào)試之外,還可以統(tǒng)計(jì)具體函數(shù)運(yùn)行(ARM和DSP側(cè))時(shí)間(benchmark)。請參考:/wiki/index.php?title=SoC_Analyzer使用中常碰到的問題使用中常碰到的問題---------------------------------------------------------------------------------------------------------------6)因?yàn)镃odecEngine是介于ARM應(yīng)用程序和編解碼算法中間的軟件模塊,很多工程師非常想知道它的開銷(overhead),請參考:/index.php?title=Codec_Engine_Overhead7)如何在Linux環(huán)境下編DSP的匯編或線性匯編程序?在CodecEngine安裝路徑下/packages/config.bld文件里varC6?P=xdc.useModule(‘ti.targets.C6?P’);之后添加:C6?P.extensions[“.sa”]={suf:“.sa”,typ:“asm:-fl”}或C6?P.extensions[“.asm”]={suf:“.asm”,typ:“asm:-fa”}使用中常碰到的問題使用中常碰到的問題---------------------------------------------------------------------------------------------------------------8)DSP側(cè)如何統(tǒng)計(jì)具體函數(shù)運(yùn)行時(shí)間?TIDSPC6?x+內(nèi)核有一個(gè)6?位的硬件定時(shí)器(TimeStampCounter),它的頻率和CPU頻率一致。最簡單的辦法是使用TSC的低32位TSCL。注意在DM6?4x中,TSCH用于ARM。#includevoidmain(){…TSCL=0;…t1=TSCL;my_code_to_benchmark();t2=TSCL;printf(“#cycles==%d\n”,(t2-t1));}6.結(jié)語以上針對如何上手TI的CodecEngine做了簡單的歸納,還有很多具體細(xì)節(jié)的問題沒有涉及到。還請各位工程師從自己要用的軟件模塊發(fā)布說明文檔開始找到相關(guān)的文檔并研究。經(jīng)常訪問TI的網(wǎng)頁,和/wiki找到最新的信息和資料。也非常歡迎您在wiki上提問。使用中常碰到的問題CodecEngine概述---------------------------------------------------------------------------------------------------------------CodecEngine框架分析
CodecEngine在解決達(dá)芬奇雙處理器架構(gòu)問題時(shí)首先引入了遠(yuǎn)程過程控制(RPC)的概念。RPC是指在另一個(gè)處理器上遠(yuǎn)程執(zhí)行一個(gè)命令或過程。RPC有客戶端和服務(wù)端,客戶端通過某種通信協(xié)議并最終通過物理鏈路向服務(wù)端發(fā)送一個(gè)命令,服務(wù)端執(zhí)行命令并通過相應(yīng)的通信方式將結(jié)果返回給客戶端。達(dá)芬奇芯片將ARM作為客戶端、DSP作為服務(wù)端,兩者之間的物理鏈路就是兩個(gè)處理器之間共享的DDR2存儲(chǔ)器,而將物理鏈路上的通信協(xié)議稱為DSPLink。CodecEngine概述CodecEngine概述---------------------------------------------------------------------------------------------------------------CodecEngine組件CE里面有幾個(gè)組件,或者我們叫做package,DSPLink是用來做應(yīng)用軟件和算法之間進(jìn)行信令通信用的,DSPLink的package里也有很多小模塊,可以運(yùn)行一個(gè)簡單的腳本進(jìn)行配置,然后再重新make出需要的dsplinkk.ko做為Linux模塊加載的驅(qū)動(dòng);CMEM是用來做共享內(nèi)存分配的,因?yàn)閼?yīng)用程序是運(yùn)行在MVistaLinux上的,在應(yīng)用程序里malloc到的buffer都是虛擬地址,實(shí)際的物理空間不一定連續(xù),當(dāng)把這個(gè)指針傳遞給算法的時(shí)候,問題就出現(xiàn)了,因?yàn)樗惴ㄊ沁\(yùn)行在DSP/BIOS上的,這是一個(gè)只有實(shí)地址的世界,為了解決這個(gè)問題,在共享緩存動(dòng)態(tài)申請空間的時(shí)候,就要調(diào)用CMEM提供的API;XDCtTools是一個(gè)TI提供的工具組件,也是一個(gè)最核心的組件,任何的編譯行為都是通過xdctools來解釋腳本內(nèi)容調(diào)用各種編譯器來完成的,CCS下和Linux下的工具鏈?zhǔn)且粯拥模梢钥吹桨惭b后CCS路徑下的東西,一個(gè)是DSPBios,一個(gè)是CC,這里面是交叉編譯器,還有一個(gè)就是XDCTools,在Linux下的CE也是如此,只不過還多了點(diǎn)料,譬如DSPLink和Cmem,所以,所有的組件package都可以在CCS下用,CGTools,這個(gè)就是DSP的交叉編譯器
DSP/BIOS--使用CE一定要用DSP/BIOS,客戶也可拋棄BIOS和CE,自己做雙核通信。CodecEngine概述CodecEngine概述---------------------------------------------------------------------------------------------------------------CodecEngine的工作原理CodecEngine是介于應(yīng)用程序和具體算法之間的軟件模塊,其中的VISAAPI通過stub和skeleton訪問EngineSPI最終調(diào)用具體的算法。因此,CodecEngine的工作是通過完成VISAAPI的任務(wù)來體現(xiàn)的。VISAAPI分為四部分VISAcreate/control/process/delete,我們以codec算法運(yùn)行在DSP為例,通過VISAAPI的執(zhí)行過程了解CodecEngine的工作原理。CodecEngine概述CodecEngine概述---------------------------------------------------------------------------------------------------------------CodecEngine的工作原理在調(diào)用VISAAPI之前需要在應(yīng)用程序中通過Engine_open()這個(gè)EngineAPI把DSP的可執(zhí)行程序加載到DSP的memory,同時(shí)把DSP從復(fù)位狀態(tài)釋放,這時(shí)DSP開始運(yùn)行DSPServer的初始化程序在DSP側(cè)創(chuàng)建一個(gè)優(yōu)先級(jí)最低的任務(wù)RMS(RemoteManagementServer),RMS負(fù)責(zé)管理和維護(hù)對應(yīng)到具體codec算法的Instances。應(yīng)用程序調(diào)用VISAcreateAPI,相應(yīng)的VISAcreate函數(shù)到EngineSPI中的Codectable中查到這個(gè)codec運(yùn)行在遠(yuǎn)端DSP側(cè)。接著EngineSPI通過OSAL(OperatingSystemAbstractionLayer)、DSPLink把VISAcreate的命令傳到DSP側(cè)的RMS。RMS通過DSP側(cè)EngineSPI的codectable找到要調(diào)用的codec算法后,就會(huì)在RMS中創(chuàng)建一個(gè)相應(yīng)的Instance(即一個(gè)DSP/BIOS系統(tǒng)中的任務(wù))。VISAcreate會(huì)返回一個(gè)Instance的Handle,以便于給這個(gè)Instance做后續(xù)的VISAcontrol/process/delete提供信息。VISAdelete和VISAcreate原理類似,只是RMS刪除掉相應(yīng)的codec算法的Instance和執(zhí)行codec算法的任務(wù)。CodecEngine概述CodecEngine概述---------------------------------------------------------------------------------------------------------------CodecEngine的工作原理概括來說,VISAcontrol用來動(dòng)態(tài)的修改codecinstance的屬性,VISAprocess用來對算法的輸入數(shù)據(jù)流做處理并返回一個(gè)輸出數(shù)據(jù)流。如下圖所示,應(yīng)用程序在調(diào)用VISAprocess/control時(shí)會(huì)通過xDMStub把傳遞給codec算法的參數(shù)收集起來,并且轉(zhuǎn)換成DSP可以識(shí)別的物理地址。Stub把這些參數(shù)和相關(guān)的命令通過EngineSPI、OSAL和DSPLink傳遞到DSP側(cè)Instance。Instance再通過Skeleton把傳遞過來的參數(shù)和命令解析出來,通過DSP側(cè)VISAcontrol/process對codec算法執(zhí)行。CodecEngine概述
四、Codec創(chuàng)建DSPServer(DSP端可執(zhí)行程序)
達(dá)芬奇軟件架構(gòu)及開發(fā)流程(For_)課件Codec創(chuàng)建DSPServer---------------------------------------------------------------------------------------------------------------對達(dá)芬奇的軟件來說,DSPServer也叫CodecServer。其中“codec”是一組算法。從圖3和4可以看到,除算法之外,DSPServer還集成了其他的軟件模塊(如DSP/BIOS、DSPLink、CodecEngine等)。圖4圖3Codec創(chuàng)建DSPServer圖4圖3Codec創(chuàng)建DSPServer---------------------------------------------------------------------------------------------------------------1.xDC簡介達(dá)芬奇的軟件開發(fā)環(huán)境中,有一個(gè)DSP工程師比較陌生的工具xDC(ExpressDSPComponent)。和gmake類似,xDC根據(jù)一套build指令build生成可執(zhí)行文件。xDC同時(shí)也會(huì)build依賴文件,并且可以一次build多個(gè)目標(biāo)對象的可執(zhí)行文件(如圖5中的hello.x64P是DSP的可執(zhí)行文件,hello.x470MV是ARM的可執(zhí)行文件)。xDC的源文件可以是C程序、C++程序、匯編程序和庫文件等。如下圖所示,xDC按照build指令,對DSPServer的源文件進(jìn)行build(類似于make)生成DSPServer.x64P(.out)文件。這個(gè)過程可以分為三部分:
創(chuàng)建DSPServer的源文件;設(shè)置xDC的配置文件;執(zhí)行“make”生成可執(zhí)行文件。圖5Codec創(chuàng)建DSPServer圖5Codec創(chuàng)建DSPServer---------------------------------------------------------------------------------------------------------------
2.DSPServer的源文件
以CodecEngine_1_02中的video_copy為例,如圖6我們可以看到video_copy的DSPServer中包括和圖5對應(yīng)的源文件main.c、video_copy.tcf和link.cmd。圖5中的packages是指圖3和圖4中的codecs、RMS、EngineSPI和OSAL。接下來,我們可以通過xDC的配置文件看到如何把packages添加到Server中。OMAP_L137的目錄為:CodecEngine_2_22/examples/ti/sdo/ce/examples/servers/video_copy/evmOMAPL137/
要構(gòu)建DSPServer首先就需要?jiǎng)?chuàng)建main.c和server的DSP/BIOS配置文件.tcf及l(fā)ink.cmd。我們提到engine_open會(huì)把DSP從復(fù)位狀態(tài)釋放,DSPServer程序開始運(yùn)行初始化等等。這個(gè)初始化就是DSPServermain.c(見圖7)中的CERuntime_init()。除此之外在main.c中還可以打開CodecEngine的trace功能,讀取或更改main函數(shù)的參數(shù)等。圖6Codec創(chuàng)建DSPServer圖6Codec創(chuàng)建DSPServer---------------------------------------------------------------------------------------------------------------
DSPBIOS的配置文件.tcf中定義DSP的memorymap、設(shè)置DSP的復(fù)位/中斷向量表并且創(chuàng)建和初始化BIOS程序需要的各種數(shù)據(jù)對象(如圖8的.tcf)。在.tcf中我們只能定義編譯器默認(rèn)的sections(如.text和.bss等)。但是,我們可以在link.cmd中定義自己的sections(如圖8link.cmd中.tables和.csl_vect等)。Codec創(chuàng)建DSPServerDSPBIOS的配置Codec創(chuàng)建DSPServer---------------------------------------------------------------------------------------------------------------
DSPBIOS的配置文件.tcf中定義DSP的memorymap、設(shè)置DSP的復(fù)位/中斷向量表并且創(chuàng)建和初始化BIOS程序需要的各種數(shù)據(jù)對象(如圖8的.tcf)。在.tcf中我們只能定義編譯器默認(rèn)的sections(如.text和.bss等)。但是,我們可以在link.cmd中定義自己的sections(如圖8link.cmd中.tables和.csl_vect等)。Codec創(chuàng)建DSPServerDSPBIOS的配置Codec創(chuàng)建DSPServer---------------------------------------------------------------------------------------------------------------3.xDC文件
在Linux中我們用make命令根據(jù)makefile來生成可執(zhí)行文件,xDC也有類似的生成腳本文件(我們統(tǒng)稱為xDC文件)。如圖6所示,其中package.bld、package.xdc和video_copy.cfg三個(gè)文件就是提供給xDCbuildDSPServer的xDC文件。在package.xdc中聲明DSPServer的名字、它的路徑及Server的依賴文件.Package.bld文件的功能類似于Linux中的makefile,它會(huì)告訴xDC怎么樣buildDSPServer的源文件。如圖9所示在package.bld中定義target是C64PDSP.要生成針對target的可執(zhí)行程序,其中配置腳本文件是video_copy.tcf(與圖8中的.tcf類似)、鏈接選項(xiàng)是鏈接link.cmd(與圖8中的link.cmd類似)文件,同時(shí)還要生成main.c的目標(biāo)代碼。Codec創(chuàng)建DSPServerCodec創(chuàng)建DSPServer---------------------------------------------------------------------------------------------------------------
xDC的強(qiáng)大之處還在于它提供給系統(tǒng)集成工程師一個(gè)強(qiáng)大的工具,這個(gè)工具可以用來把各種各樣的代碼模塊組合成自己的最終產(chǎn)品。其中xDC的配置文件就是DSPServer中的.cfg(例如圖5中的video_copy.cfg)負(fù)責(zé)系統(tǒng)級(jí)的管理。請注意這里的.cfg文件不同于第一章提到的CodecEngine的.cfg文件(例如CE_INSTALL_DIR/examples/apps/video_copy/dualcpu/ceapp.cfg),下文中提到的.cfg都是指DSPServer的.cfg文件。xDC會(huì)根據(jù)以上提到的配置文件生成package.mak(類似于makefile),并最終運(yùn)行它來生成圖5所示的包括可執(zhí)行文件的package。我們可以打開查看package.mak,但不能修改。因?yàn)橹匦逻\(yùn)行xDC之后會(huì)生成新的package.mak。Codec創(chuàng)建DSPServerCodec創(chuàng)建DSPServer---------------------------------------------------------------------------------------------------------------4.設(shè)置xDC的配置文件
既然.cfg文件負(fù)責(zé)系統(tǒng)級(jí)的管理,我們需要先了解什么需要管理?當(dāng)然是DSP的資源,無非就是CPUcycles、memory及DMA。針對Davinci上DSP的軟件開發(fā),TI提供了Framework
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年租賃合同變更條款
- 蓮藕配方做法課程設(shè)計(jì)
- 自媒體運(yùn)營基礎(chǔ)課程設(shè)計(jì)
- 瓦斯地質(zhì)課程設(shè)計(jì)
- 舞蹈工作室健身課程設(shè)計(jì)
- 網(wǎng)絡(luò)課程設(shè)計(jì)軟件
- 液壓元件課程設(shè)計(jì)
- 電信行業(yè)美工工作總結(jié)
- 倉儲(chǔ)物流衛(wèi)生安全控制
- 證券保管協(xié)議三篇
- (八省聯(lián)考)河南省2025年高考綜合改革適應(yīng)性演練 化學(xué)試卷(含答案)
- 2025中國電信山東青島分公司校園招聘高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025年八省聯(lián)考高考語文作文真題及參考范文
- 科研倫理與學(xué)術(shù)規(guī)范(研究生)期末試題庫及答案
- 美甲顧客檔案表Excel模板
- 公安警察工作總結(jié)匯報(bào)PPT模板
- 城市生活垃圾分選系統(tǒng)設(shè)計(jì)
- 外國文學(xué)專題作業(yè)答案
- 綠色施工管理體系與管理制度管理辦法(新版)
- 機(jī)動(dòng)車交通事故快速處理協(xié)議書(最新格式)
- 最新拉鏈廠安全操作規(guī)程
評(píng)論
0/150
提交評(píng)論