




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、DSPLINK 幾乎是 DAVINCI 平臺最重要的一個底層系統(tǒng),它是 ARM+DSP平臺上特有的。 DAVINCI 之所以 能成為現(xiàn)在的 DAVINCI,有一大部分就是因為有 DSPLINK 把 GPP(General Purpose Processor, 即 DM6446中的 ARM 和 DSP 給連起來了。TI 期望大家使用的是它的 CODEC ENGINE,因為如果使用 CODEC ENGINE,很多底層的細節(jié)對開發(fā)者就 是透明的了。而為了更深入地了解 DAVINCI 系統(tǒng),為了不做“不明真相”的高層代碼開發(fā)者,或者只 是為了追求 GEEK的精神,我們應(yīng)該去了解 DSPLINK 的結(jié)構(gòu)
2、和原理。 BY THE WAY,這就是在學(xué)校里的 好處,不用去關(guān)心產(chǎn)品的上市時間,愛干什么干什么。不過,這篇文章只是“占座”性質(zhì)的文章。我還沒有深入地去看 DSPLINK 的源碼,在這里只是先把以 前理解到的東西總結(jié)一下先。以后認(rèn)真看了再補上。我想, DSPLINK 的結(jié)構(gòu)對于以后對異構(gòu)多核間的 通信是有借鑒意義的。要使用 DSPLINK 的話,有下面那么幾步:1. OF COURSE, 把環(huán)境給搭起來,重新編譯。2. OF COURSE, 把 DEMO 給跑起來。3. 理解 DSPLINK 的相關(guān)知識:內(nèi)存分配及其他。4. 分析 DEMO ,修改 DEMO 為已所用。5. 修改 DSPLIN
3、K ,為已所用。最高境界也 以下的內(nèi)容主要是關(guān)于 3,4兩步的。系統(tǒng)結(jié)構(gòu)先上圖:發(fā)現(xiàn)沒有,位于上層的幾個模塊都有 PROC, CHNL, MSGQ等幾個小模塊,所以 DSPLINK 的縱向(就是 從上層到下層是用這幾個線貫穿的。下面這是 dsplink 的目錄結(jié)構(gòu), 可以看到和上圖中的模塊是大致對應(yīng)的。 每一個模塊都放在一個文件 夾下。./pmgr./gen./osal./probe./api./ldrvAPIapi 文件夾里是暴露給外部用戶使用的接口,放在這里的接口才能被外界調(diào)用,所以說,要修改 DSPLINK 的源碼為已用,得把增加的接口放在這里。 DSPLINK USER GUIDE(在
4、 DSPLINK 的安裝目錄 里的 DOC 文件夾下給出的接口都在這個 api 文件夾下定義。 DSPLINK 的每一個模塊都會暴露一些接 口給它的 上一層, api 這一層就把接口暴露給用戶使用。Processor Managerpmgr 文件夾里就是 Processor Manager的代碼。 Processor Manager,顧名思義,提供對處理器的控 制。這是核心的一個模塊,其他模塊對它進行支持。比如通過 CHNL 傳送數(shù)據(jù)時, Processor Manager 作為一個上層的 “管理者” , Linux Driver 層對其進行底一層的驅(qū)動支持。 Generic Source M
5、odules(GEN對其進行一些常規(guī)的模塊的支持,比如要加載 COFF 格式的鏡像,就要使用 GEN 里對 COFF 的支持。Link DriverLink Driver的代碼在 ldrv 文件夾下。如上圖所示,主要完成的是通信的工作。通信有兩種:一是 CHNL , 這種通信的 DEMO 是 LOOP 。 這種通信是同步的, 有 ISSUE 和 RECLAIM 兩種操作。 流程大致 是這樣(摘自 USER GUIDE(dsplink 1.40的 Appendix, Issue reclaim model:The steps for data transfer with issue reclai
6、m model may be summarized below:1. Open a channel with defined buffer size & direction.2. Issue a buffer for IO on the specified channelEmpty buffer for receiving dataFilled buffer for sending data3. Attempt to reclaim the buffer. Reclaim will block until the IO operation completes or a timeout
7、occurs.This wait can be postponed to a later point in time for asynchronous IO.4. A client must reclaim all the buffers issued to a channel.二是 MSGQ ,也有個 DEMO 。這種通信是異步的。反正這兩種通信都要 driver 的支持。Link Driver 還要包括對 ZCPY 和 PCPY 兩種傳輸模式的支持。 ZCPY 就是 Zero Copy ,就是不 COPY ,只 傳指針。 PCPY 好像是 Processor Copy,反正是要 COPY
8、數(shù)據(jù)。 CHNL 和 MSGQ 都可以選是使用 ZCPY 還 是 PCPY 。Operating System Adaptation Layer (OSAL這是 DSPLINK 和 OS 的“國界”, DSPLINK 和操作系統(tǒng)之間的協(xié)作通過 OSAL 來進行。 OSAL 模塊使得 DSPLINK 具有可移植性。Probe還有一個文件夾叫 probe ,是用來在實際使用 DSPLINK 里來評估其性能的。內(nèi)存管理內(nèi)存管理是使用 DSPLINK 時一定要理解的一個東西。 這些內(nèi)存是怎么分配, 怎么用的, 在哪些地方管 理它的屬性。要了解了這些才能看懂 DEMO 的代碼,才能修改代碼為已所用。BU
9、FPOOL/SMAPOOL的結(jié)構(gòu)如圖所示。有一個 BUFPOOL 的結(jié)構(gòu)體,在其中可以設(shè)定有多少個 MPBUF ,每 一個 MPBUF 對應(yīng)一個 Buffer POOL,每一個 Buffer POOL有一些 BUFFER ,這些 BUFFER 的大小是相同 的。DSPLINK 中有一個結(jié)構(gòu)體是 SmaPoolAttrs , 這個結(jié)構(gòu)體用于指定上圖中結(jié)構(gòu)的屬性。 其中 numBufPools 指的是 number of buffer pools,即 Buffer POOL的個數(shù),上圖中可以看到的個數(shù)是 3。 bufSizes 是一個數(shù)組,每一個元素存儲的是上圖中淺色部分 BUFFER 的大小,如
10、 2,3指的是第一 個 Buffer POOL 中的 buffer 的大小為 2, 第二個 Buffer POOL 中的 buffer 大小為 3。 numBuffers 是指 number of buffers ,即一個 Buffer POOL中所含的 buffer 的個數(shù),如 numBuffers 的值為 6,8,那么第一個 Buffer POOL 中有 6個 buffer , 第二個 buffer POOL 中有 8個 buffer 。 還有一個屬性是 exactMatchReq , 如果此值為 true 的話,則實際分配內(nèi)存時,請求的內(nèi)存大小一定要和 buffer的大小一樣,即為 bu
11、fSizes ,不然的話不會分配;如果此值為 false ,那么系統(tǒng)就會去找大于所請求的大小的內(nèi)存。這 里有個規(guī)則的,我 忘了好像 DSPLINK 的安裝文件夾里的 POOL 或者 SMA POOL文檔中有寫。了解了結(jié)構(gòu)之后, Demo 中的關(guān)于內(nèi)存配置的宏就能看懂并修改了。這里 有 TI 給的 pool 的 overview.下面給出幾個使用 POOL 時的注意事項和 troubleshooting 。Troubleshooting1在 Demo Loop里,傳輸?shù)拇笮≈荒苁?128的倍數(shù),但 64, 129就不能傳,這是因為數(shù)據(jù)對齊的關(guān)系。 具體我也記不得是怎么樣了,可以看看源碼里 DSP
12、LINK_ALIGN這個宏的說明。2Demo Loop的 debug 版本在內(nèi)存分配時會有問題,不要使用 make 出來的 debug 版本的 loop 。3錯誤現(xiàn)象Encodedecode Debug: POOL0: Buffer Size of each Buffer = 691200.Encodedecode Debug: POOL0: Number of Buffers in a buffer Pool = 1POOL_Open ( failed. Status = 0x80008013解決方案:主要是 buffer 開得不夠大的問題4錯誤現(xiàn)象DEMO LOOP 中 DSP 端無法接收
13、 GPP 端發(fā)送來的數(shù)據(jù)原因loop.c 中將/* =* name NUMBUFS* desc Number of buffers in pool.* = */#define NUMBUFS 4改成了 1。Debug 過程及解決loop.absClean 將傳 691200的數(shù)據(jù)后,將 NUMBUFS 改成 1, 出現(xiàn)下面的錯誤。= Sample Application : LOOP =Entered LOOP_Create (Leaving LOOP_Create (Entered LOOP_Execute (Before CHNL_Issue( outBefore CHNL_Reclaim
14、( out即在 CHNL_Reclaim里停了下來將其改回 4后,可正常傳送。5錯誤現(xiàn)象root192.168.100.3:/opt/ttroot# ./loopgpp loop.out 691200 1= Sample Application : LOOP =Entered LOOP_Create (POOL_Open ( failed. Status = 0x80008013Leaving LOOP_Create (Entered LOOP_Delete (CHNL_FreeBuffer ( failed (output. Status = 0x80008000CHNL_Delete ( failed (input. Status = 0x80008000CHNL_Delete ( failed (output. Status = 0x80008000POOL_Close ( failed. S
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年6人股東合作協(xié)議書模板
- 五年級上冊數(shù)學(xué)教案-4.4 探索活動:三角形的面積(8)-北師大版
- 五年級下冊數(shù)學(xué)教案-3.2 2和5的倍數(shù)的特征丨蘇教版
- 8-數(shù)學(xué)廣角-搭配(二)-人教版三年級下冊數(shù)學(xué)單元測試卷(含答案和解析)-
- 《木蘭詩》歷年中考古詩欣賞試題匯編(截至2024年)
- Unit Six《 Lesson 17 Happy Chinese New Year to Our Family!》(教學(xué)設(shè)計)-2024-2025學(xué)年北京版(2024)英語一年級上冊
- 2024年磁粉離合器項目資金需求報告代可行性研究報告
- 2025年度個人與環(huán)??萍脊经h(huán)保項目提成合同
- 2025年度便利店加盟店合作協(xié)議
- 2025年度離職員工解除勞動合同保密協(xié)議書及保密承諾書
- 公司資產(chǎn)情況說明范文百度
- 醫(yī)療器械中有害殘留物檢驗技術(shù)
- 2015-2022年大慶醫(yī)學(xué)高等??茖W(xué)校高職單招語文/數(shù)學(xué)/英語筆試參考題庫含答案解析
- 產(chǎn)品過程特殊特性初始清單(示例)
- 兩篇古典英文版成語故事塞翁失馬
- 中國古代文學(xué)史 馬工程課件(中)13第五編 宋代文學(xué) 第一章 北宋初期文學(xué)
- GB/T 14643.4-2009工業(yè)循環(huán)冷卻水中菌藻的測定方法第4部分:土壤真菌的測定平皿計數(shù)法
- DL-T 5190.1-2022 電力建設(shè)施工技術(shù)規(guī)范 第1部分:土建結(jié)構(gòu)工程(附條文說明)
- GA/T 914-2010聽力障礙的法醫(yī)學(xué)評定
- GA/T 642-2020道路交通事故車輛安全技術(shù)檢驗鑒定
- 建筑工地生活區(qū)管理制度范本
評論
0/150
提交評論