在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<s id="cmphk"><label id="cmphk"></label></s>
    <span id="cmphk"><var id="cmphk"></var></span>
    <dfn id="cmphk"><var id="cmphk"></var></dfn>
    <menu id="cmphk"><thead id="cmphk"></thead></menu>

    <address id="cmphk"></address>

      <dfn id="cmphk"></dfn>
      
      
      <span id="cmphk"></span>

      <object id="cmphk"><tt id="cmphk"></tt></object>
      1. 新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 雙核處理器ARM+DSP如何實(shí)現(xiàn)協(xié)同工作

        雙核處理器ARM+DSP如何實(shí)現(xiàn)協(xié)同工作

        作者: 時(shí)間:2016-11-27 來源:網(wǎng)絡(luò) 收藏
        針對當(dāng)前應(yīng)用的復(fù)雜性,SOC芯片更好能能滿足應(yīng)用和媒體的需求,集成眾多接口,用ARM做為應(yīng)用處理器進(jìn)行多樣化的應(yīng)用開發(fā)和用戶界面和接口,利用DSP進(jìn)行算法加速,特別是媒體的編解碼算法加速,既能夠保持算法的靈活性,又能提供強(qiáng)大的處理能力。德州儀器(TI)繼第一系列Davinci芯片DM644x之后,又陸續(xù)推出了DM643x,DM35x/36x,DM6467,OMAP35x,OMAPLx等一系列ARM+DSP或ARM+視頻協(xié)處理器的多媒體處理器平臺(tái)。眾多有很強(qiáng)DSP開發(fā)經(jīng)驗(yàn)的工程師,以及應(yīng)用處理開發(fā)經(jīng)驗(yàn)的工程師都轉(zhuǎn)到使用達(dá)芬奇或OMAP平臺(tái)上開發(fā)視頻監(jiān)控、視頻會(huì)議及便攜式多媒體終端等產(chǎn)品。基于ARM+DSP的芯片架構(gòu),如何進(jìn)行開發(fā)實(shí)現(xiàn)做期望的嵌入式應(yīng)用呢?
        傳統(tǒng)的芯片,基本是一個(gè)處理器內(nèi)核,或者是通用處理器如ARM,或者是DSP。對于控制和用戶接口,一般用通用處理器實(shí)現(xiàn),算法處理或者媒體處理則依賴于DSP或者硬件芯片,很多系統(tǒng)都是雙芯片的架構(gòu)。開發(fā)模式也比較單純,比如ARM芯片,有ARM的的仿真工具,基于OS之上進(jìn)行應(yīng)用開發(fā);DSP有DSP的開發(fā)工具,如TI的CCS以及510、560的仿真器,可以進(jìn)行算法的移植、優(yōu)化、跟蹤、調(diào)試等。這時(shí),所需要的經(jīng)驗(yàn)也比較單一。

        基于ARM+DSP的雙核架構(gòu),很多工程師不知道如何入手進(jìn)行開發(fā),提出了很多的疑問,比如對ARM工程師,很困惑的是如何使用DSP的資源?如何進(jìn)行數(shù)據(jù)的交互?如何保持雙核之間的同步?對DSP工程師,則問到如何進(jìn)行ARM調(diào)試?如何啟動(dòng)DSP?如果進(jìn)行媒體加速,如何操作外設(shè)獲取或發(fā)送數(shù)據(jù)等?;诓煌拈_發(fā)經(jīng)驗(yàn)和基礎(chǔ),ARM工程師和DSP工程師會(huì)從完全不同的角度來看SOC的芯片,以至于拿到SOC的芯片根本不知道如何入手,這里就本人的經(jīng)驗(yàn)與大家分享一下。

        本文引用地址:http://www.biyoush.com/article/201611/322348.htm

        首先ARM+DSP的芯片,他是一個(gè)雙核的,對應(yīng)ARM和DSP分別是不同的指令集和編譯器,可以把SOC的芯片看成是兩個(gè)單芯片的合成,需要兩套不同的開發(fā)工具,CCS3.3可以進(jìn)行芯片級的調(diào)試和仿真,但是對應(yīng)ARM和DSP需要選擇不同的平臺(tái)。一般來說,ARM上面跑操作系統(tǒng),比如Linux,Wince等,在ARM上的開發(fā),除了bootloader以外,基本都是基于OS的開發(fā),比如驅(qū)動(dòng),內(nèi)核裁減,以及上層應(yīng)用等,需要的調(diào)試和仿真主要靠log或者OS提供的調(diào)試器,如KGDB,Platform Builder等?;贒SP核的開發(fā)和傳統(tǒng)單核DSP一樣,需要用CCS+仿真器來進(jìn)行開發(fā)調(diào)試。

        其次,對于芯片的外設(shè)接口,ARM核和DSP核都可以訪問,典型的情況是ARM控制所有的外設(shè),通過OS上的驅(qū)動(dòng)去控制和管理,這部分和傳統(tǒng)的ARM芯片類似;DSP主要是進(jìn)行算法加速,只是和memory打交道,為了保持芯片的資源管理的一致性,盡量避免由DSP去訪問外設(shè)。當(dāng)然,根據(jù)具體的應(yīng)用需求,DSP也是可以控制外設(shè)接口進(jìn)行數(shù)據(jù)的收發(fā),這時(shí),需要做好系統(tǒng)的管理,避免雙核操作的沖突。

        對memory的使用,非易失的存儲(chǔ)空間,比如NAND、NOR Flash,基本也是由ARM訪問,DSP的算法代碼作為ARM端OS文件系統(tǒng)的一個(gè)文件存在,通過應(yīng)用程序進(jìn)行DSP程序的下載和DSP芯片的控制。外部RAM空間,即DDR存儲(chǔ)區(qū),是ARM和DSP共享存在的,但是在系統(tǒng)設(shè)計(jì)的時(shí)候,需要把ARM和DSP使用的內(nèi)存嚴(yán)格物理地址分開,以及預(yù)留出一部分用來交互的內(nèi)存空間。一般情況,ARM是用低端地址,DSP通過CMD文件分配高端地址,中間預(yù)留部分空間用來做數(shù)據(jù)交互,比如在OMAP3的Linux下的DVSDK中,128MB的DDR空間被分成三部分,低端地址從0x8000000到0x85800000-1的88MB空間給Linux內(nèi)核使用;從0x85800000到0x86800000-1的16MB給CMEM的驅(qū)動(dòng),用來做ARM和DSP的大塊數(shù)據(jù)交互,從0x86800000到0x88000000-1的24MB是DSP的代碼和數(shù)據(jù)空間。

        芯片的啟動(dòng)也是需要重點(diǎn)考慮的問題,一般情況下,是ARM啟動(dòng),和傳統(tǒng)的單核ARM一樣,支持不同的啟動(dòng)方式,比如可以支持NAND,NOR,UART,SPI,USB,PCI等接口啟動(dòng)。DSP默認(rèn)處于復(fù)位狀態(tài),只有通過ARM的應(yīng)用下載代碼并且解除復(fù)位以后,DSP才能跑起來。有些應(yīng)用場景,需要DSP直接從外部上電就自啟動(dòng),有些芯片也是支持這種模式的。

        最后,關(guān)于芯片的通信和同步,這個(gè)是困擾很多工程師的問題,為了便于客戶的開發(fā)和使用,TI提供了DSPLINK,CODEC ENGINE的DVSDK開發(fā)套件,基于DVSDK可以很方便的進(jìn)行ARM+DSP的應(yīng)用開發(fā),下面對DVSDK的軟件架構(gòu),各個(gè)軟件模塊的功能等做簡要介紹。

        DVSDK是多個(gè)軟件模塊的集成,包括純DSP端的軟件模塊,ARM的軟件模塊和雙核交互的軟件模塊。DVSDK的軟件包都是基于實(shí)時(shí)軟件模塊(Real-Time-Software-Component:RTSC)的,還需要安裝RTSC的工具XDC,XDC是TI開源的一個(gè)工具,可以支持跨平臺(tái)的開發(fā),能夠最大程度的代碼重用;如果需要進(jìn)行純ARM的開發(fā),還需要ARM的編譯工具以及Linux內(nèi)核或者Wince的BSP;如果需要進(jìn)行DSP的算法開發(fā)或者DSP端開執(zhí)行代碼生成,還需要安裝DSP的編譯器cgtools和DSP/BIOS;為了便于配置生成DSP端的可執(zhí)行代碼,通過向?qū)蒀odec的RTSC包和可執(zhí)行代碼,還可以選裝ceutils和cg_xml。

        DVSDK的核心是Codec Engine,所有的其他軟件模塊基本都是圍繞Codec Engine的。Codec Engine是連接ARM和DSP的橋梁,是介于應(yīng)用層(ARM側(cè)的應(yīng)用程序)和信號(hào)處理層(DSP側(cè)的算法)之間的軟件模塊,在編譯DSP端可執(zhí)行代碼和ARM端應(yīng)用程序時(shí),都需要Codec Engine的支持。Codec Engine主要有兩部分:
        ? ARM端應(yīng)用適配層,提供了精簡的API和對應(yīng)的庫給應(yīng)用層使用。
        ? DSP的算法調(diào)用層,提供了DSP算法的接口封裝規(guī)范,是的所有的算法通過簡單的配置就可以編譯到DSP的可執(zhí)行程序中。
        最終的應(yīng)用程序需要通過Codec Engine的API接口來下載DSP代碼,調(diào)用DSP端的封裝好的算法,以及進(jìn)行ARM和DSP的通信。

        關(guān)于Codec Engine的介紹,可以參考《幫您快速入門Codec Engine》。

        Codec Engine底層ARM和DSP的通信是建立在DSP/BIOS Link之上的,DSP/BIOS Link真正實(shí)現(xiàn)ARM和DSP交互的軟件模塊。由于DSP/BIOS Link是跨平臺(tái)的,也是有ARM部分和DSP部分組成,其中在ARM端,包括基于OS的驅(qū)動(dòng)和供應(yīng)用調(diào)用的庫文件,DSP端,必須要用DSP/BIOS,DSP的可執(zhí)行代碼需要包含DSP/BIOS Link的庫文件。DSP/BIOS

        Link常用的主要有如下幾部分的軟件模塊:
        ? PROC相關(guān)的,主要是用來做DSP芯片的控制,比如啟動(dòng),停止等,下載DSP的可執(zhí)行代碼,以及直接讀寫DSP端的memory空間等
        ? MSGQ相關(guān),ARM和DSP的通信是基于MSGQ的,MSGQ有輪詢等待的方式或者中斷的方式,MSG是基于共享內(nèi)存池的方式。Codec Engine通過MSGQ交互一些關(guān)鍵數(shù)據(jù),比如控制,和一些大塊數(shù)據(jù)的地址指針等。大量的數(shù)據(jù)交互需要通過cmem實(shí)現(xiàn)。

        在ARM端,配合Codec Engine使用的軟件模塊有LinuxUtils或者WinceUtils,包含cmem,SDMA等,cmem是用來在OS之外分配連續(xù)物理內(nèi)存空間,進(jìn)行物理地址到虛地址,以及虛地址到物理地址空間轉(zhuǎn)化的。為了避免數(shù)據(jù)的多次復(fù)制,需要開辟一塊ARM和DSP共享的數(shù)據(jù)空間,ARM和DSP都可以直接訪問,這部分空間需要通過CMEM管理。對ARM來說,CMEM是OS上的一個(gè)驅(qū)動(dòng)程序,需要通過IOCTL來實(shí)現(xiàn)內(nèi)存分配或者地址空間轉(zhuǎn)化。由于DSP可以訪問任何物理地址空間,通過ARM傳給DSP的指針必須是物理地址。

        為了適配一些播放器的接口,DVSDK還提供了DMAI(Digital Media Application Interface),DMAI提供了更為精簡的媒體接口和基于OS的音視頻捕捉、回放等接口,在Linux下的gstreamer和Wince下的dshow filter都是基于DMAI的。并且DMAI也提供了最基本的測試應(yīng)用例子,可以很方便的進(jìn)行修改和測試。

        如果只是調(diào)用現(xiàn)成的或者第三方的算法庫,可以只了解ARM端的軟件模塊,Codec Engine或者DMAI已經(jīng)提供了豐富的應(yīng)用接口,DSP可以認(rèn)為是個(gè)單純的媒體加速器,把ARM+DSP的芯片當(dāng)作ASIC一樣使用。如果要充分發(fā)揮DSP的性能,就需要對DSP進(jìn)行開發(fā)了。Codec Engine對DSP的算法只是規(guī)范了接口,以便于和Codec Engine一起生成DSP的可執(zhí)行程序。



        評論


        技術(shù)專區(qū)

        關(guān)閉