版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、 內部648軟件開發(fā)介紹一 DM648介紹DM648屬于TI達芬奇系列,采用單核C64X+定點CPU,支持最高頻率1.1GHz,有兩個乘法器支持四個16bits*16bits(結果32bits)單個clock cycle或者八個8bits*8bits(結果16bits)單個clock cycle。還有6個ALU。648的片上存儲器有L1P(32KB),L1D(32KB),L2(512KB)648集成了五個視頻口VPORT,省去FPGA做FIFO,可以節(jié)省產品成本。648集成了豐富的外設,包括edma(64個通道),SPI,I2C,UART,EMIF,DDR2,Ethernet,gpio(32個
2、),McASP,PCI。二 搭建軟件開發(fā)環(huán)境2.1操作系統(tǒng)環(huán)境 Win7 32位或win-XP環(huán)境2.2軟件安裝和配置 需準備的安裝軟件Ccs3.3 bios3.08 648dvsdk perlBios是TI針對DSP開發(fā)的實時嵌入式操作系統(tǒng)。Dvsdk是基于BIOS系統(tǒng)的視頻開發(fā)包。Perl是腳本工具,燒寫程序時將out文件轉換為ais文件。建議所有軟件安裝到默認目錄下,安裝完后配置操作系統(tǒng)環(huán)境變量修改BIOS_INSTALL_DIR變量為C:/CCStudio_v3.3/bios_5_31_08配置CCS的組件管理器,如圖2-1 點“開始->所有程序->TI->compo
3、nent manager,修改Target Content(DSP/BIOS)->TMS320C64XX為當前版本的DSP/BIOS 圖 2-12.3 DVSDK目錄文件介紹 默認安裝到C:dvsdk_1_11_00_00_DM648目錄下,其中edma3_lld_1_05_00是edma3驅動包examples 包含很多基于BIOS的示例應用工程,我們參考video_preview示例程序作為框架,添加圖像處理算法和通訊驅動。flashutil 包含flash燒寫工程norwriter,bootloader程序ubl,ais文件生成腳本ndk_1_92_00_22_eval 網絡開發(fā)軟
4、件包pspdrivers_1_10_00 包含了TI提供的很多基于BIOS系統(tǒng)的驅動,我們參考其中VPORT的驅動,將按幀采集修改為按場采集的功能xdc_2_95_02 xdc工具安裝路徑,xdc是ccs的子工具,是一個javascript編譯工具,用于編譯cfg文件,cfg文件在后面講。如圖2-2安裝XDC后,會在工程的編譯選項界面增加XDC選項。圖2-22.4仿真器 TDS560USB PLUS 在CCS setup界面選擇TDS560USB PLUS platform和C64x+ family的DM648。如圖2-3.圖2-3三 VPORT+EDMA工作原理3.1 VPORT介紹 DM6
5、48集成了五個VPORT口,用于視頻輸入輸出,每個VPORT可以配置為capture或display模式。Capture模式又分為雙通道8bit BT656,單通道16 bit Y/C模式。Display模式又分為單通道8bit BT656, 單通道16 bit Y/C模式。目前,capture和display模式都采用8bit BT656子模式,PAL視頻編碼芯片和解碼芯片也設置為BT656模式。3.2 BT656標準簡介 BT656標準將4:2:2格式YCbCr數(shù)據(jù)統(tǒng)一封裝在一個數(shù)據(jù)流中,按照CbYCrY順序排列,Y的數(shù)據(jù)數(shù)量是Cb,Cr的2倍,。BT656數(shù)據(jù)流中,ffh和00h保留用于
6、時序標示。在視頻數(shù)據(jù)每行的開頭和結尾有標示SAV(start of video),EAV(end of video)。SAV和EAV的格式是ffh,00h,00h,XYh,前三個字節(jié)固定,第四個字節(jié)包含場標示,場消隱狀態(tài)和行消隱狀態(tài),如圖3-1。 圖3-13.3 VPORT FIFO每個VPORT有一個FIFO存儲進入的數(shù)據(jù)或者從FIFO輸出。BT656 capture模式中,F(xiàn)IFO分成A、B兩個通道,如圖3-2,A通道接收VDIN9-2管腳的數(shù)據(jù),B通道接收VDIN19-12管腳的數(shù)據(jù)。每個通道又分Y,Cb,Cr三個緩存,每個緩存區(qū)有獨立的讀寄存器。 圖3-2BT656 display模式
7、中,如圖3-3,只有一路輸出,F(xiàn)IFO分為Y,Cb,Cr三個緩存區(qū),每個緩存區(qū)有獨立的寫寄存器。 圖3-3VPORT和EDMA配合在FIFO和外部或片上存儲器之間移數(shù)。我們可以編程FIFO的閾值寄存器,當FIFO達到設置滿度(fullness)(對于捕獲模式)或者低于設置滿度(對于顯示模式)時,生成EDMA事件,觸發(fā)相應EDMA通道移數(shù)。每個VPORT對應6個EDMA事件,分別是VPxYEVTA,VPxCbEVTA,VPxCrEVTA,VPxYEVTB,VPxCbEVTB,VPxCrEVTB例如,我們用VP0口的A通道做為BT656視頻輸入,VP1口做為BT656視頻輸出。設置VP0口A通道Y
8、,Cb,Cr三個緩存區(qū)的閾值為720,360,360。當PAL圖像數(shù)據(jù)傳輸完一行后,三個緩存區(qū)都達到閾值,生成VP0YEVTA,VP0CbEVTA,VP0CrEVTA三個事件,觸發(fā)對應的三個EDMA通道將三個FIFO緩存區(qū)的一行圖像數(shù)據(jù)移入DDR2緩存區(qū)。設置VP1口Y,Cb,Cr三個緩存區(qū)的閾值為720,360,360。當三個緩存區(qū)數(shù)據(jù)數(shù)量低于閾值時,生成VP1YEVTA,VP1CbEVTA,VP1CrEVTA三個事件,觸發(fā)對應的三個EDMA通道將DDR2緩存區(qū)的一行圖像數(shù)據(jù)移入三個FIFO緩存區(qū)。四 應用程序及驅動解析4.1兩個重要文件 基于BIOS/DSP系統(tǒng)開發(fā)軟件,有兩個重要工程文件
9、tcf和cfg文件,如圖4-1中紅圈1和2。 圖4-1 tcf文件包含了DSP/BIOS的配置信息。紅圈3的global settings設置DSP工作頻率,L1,L2 cache size,大小端,L2 cache 128kB。Memory section設置程序和數(shù)據(jù)各部分在存儲器中的段地址。紅圈4 HWI(hardware interrupt)處,添加硬件中斷處理函數(shù)紅圈5 添加BIOS/DSP的線程cfg文件包含了庫鏈接路徑信息,使用javascript語言,如圖紅圈6。使用XDC工具編譯cfg文件,生成庫鏈接信息,供C編譯器鏈接庫時使用。cfg文件常鏈接的庫有vport驅動,edma
10、驅動程序。4.2圖像緩存分配和管理 Edma在VPORT和SDRAM之間搬數(shù),CPU要訪問SDRAM最新的圖像數(shù)據(jù),程序采用多個圖像緩存區(qū)循環(huán)的方式將這兩個過程并行化。應用層創(chuàng)建捕獲或顯示通道時,調用驅動層程序在DDR2分配存放圖像數(shù)據(jù)的緩存區(qū)。分配之前,驅動根據(jù)通道的配置參數(shù)計算每個緩存區(qū)的大小。例如,vp0按場采集,vp1按幀顯示。Vp0的每個緩存區(qū)的大小是720*288*2,vp1的每個緩存區(qū)的大小是720*576*2。應用程序使用FVID_dequeue()出隊函數(shù)和FVID_queue()入隊函數(shù)或FVID_exchange()交換函數(shù),在應用程序和驅動程序之間交換圖像緩存區(qū)。捕獲和
11、顯示驅動的緩存管理方法不同,如下面兩圖4-2和4-3:圖中藍塊表示應用程序的圖像緩存區(qū),白塊表示驅動程序的圖像緩存區(qū)。圖像捕獲緩存區(qū),初始時所有的緩存區(qū)都在捕獲隊列里,捕獲驅動程序以循環(huán)的方式填充每個緩存區(qū)。當應用程序調用FVID_dequeue()函數(shù)時,將放有最新圖像數(shù)據(jù)的緩存區(qū)出隊并返回給應用程序,驅動在余下的隊列里循環(huán)填充,如(a)到(b)和(b)到(e)。當應用程序調用FVID_queue()函數(shù)時,將一個空的緩存區(qū)交給驅動程序并加入隊列,如圖(b)到(a)和(e)到(b)。當應用程序調用FVID_exchange()函數(shù)時,應用程序交給驅動一個空的緩存區(qū),驅動交給應用程序放有最新圖
12、像的緩存區(qū),相當于同時調用FVID_dequeue()和FVID_queue()兩個函數(shù),如圖(b)到(c)和(c)到(d)。 圖4-2 圖像顯示緩存區(qū),初始時只有一個緩沖區(qū)用于顯示,其它緩存區(qū)等待出隊,如圖(a),黃塊表示顯示驅動隊列里準備出隊的緩存區(qū)。顯示驅動程序重復顯示一個緩存區(qū)的圖像。當應用程序調用FVID_dequeue()函數(shù)時,從驅動獲得一個緩存區(qū),應用程序向它填充顯示數(shù)據(jù),同時驅動仍然顯示之前的緩存區(qū),如圖(b) 和(d)。當應用程序調用FVID_queue()函數(shù)時,應用程序給驅動程序一個準備顯示的緩存區(qū),同時驅動將它設置為當前的緩存區(qū),如圖(b)到(c)到(d)。當應用程序
13、調用FVID_exchange()函數(shù)時,應用程序給驅動一個準備顯示的緩存區(qū),從驅動得到一個空的緩存區(qū),相當于同時調用FVID_dequeue()和FVID_queue()函數(shù),如圖(d)到(e)。 圖4-34.3 應用程序框架介紹基于dvsdk_install_dir/example目錄下的video_preview示例程序,做為項目軟件框架應用程序主要包含三部分: Main函數(shù) Video_preview線程 自添加的中斷處理函數(shù)許多實時DSP應用都需要同時執(zhí)行很多不相關的功能,這些功能一般是對外部事件的響應,這些功能就加線程。DSP/BIOS支持4種線程:(1) 硬件中斷(HWI):頻率
14、可達200KHz(5us)(2) 軟件中斷(SWI):SWI允許HWI將一些非關鍵處理在低優(yōu)先級上延遲執(zhí)行,這樣可以減少在中斷服務程序中的駐留時間。(3) 任務(TSK):任務與中斷不同點在于,任務在執(zhí)行過程中可以被掛起。(4) 后臺線程(IDL):空閑循環(huán),運行那些沒有執(zhí)行時間限制的函數(shù)。 上電加載完操作系統(tǒng)內核后,首先執(zhí)行main函數(shù)。 Main函數(shù)執(zhí)行完后,啟動video_preview線程,線程生命期直到執(zhí)行結束后。此線程主要功能有圖像采集,處理,字符疊加,顯示。 Video_preview線程第一步調用FVID_create()函數(shù)為vp0口創(chuàng)建捕獲通道對象capChan,初始化vp
15、0寄存器,為vp1口創(chuàng)建顯示通道對象disChan,初始化vp1寄存器。第二步調用FVID_allocBuffer() 為capChan和disChan分別分配三個圖像緩存區(qū),然后調用FVID_queue()將三個緩存區(qū)組成隊列,同時為capChan和disChan分配edma通道,設置edma參數(shù)表。第三步調用FVID_control()函數(shù)使能vp0,vp1口,vp0開始捕獲,vp1開始輸出顯示。第四步調用FVID_dequeue()從capChan和disChan的緩存隊列中各出一個緩存。第五步 進入while(1)循環(huán),在循環(huán)中執(zhí)行兩次FVID_exchange()。FVID_exch
16、ange(capChan,pImg1)捕獲新的一場圖像數(shù)據(jù),F(xiàn)VID_exchange(disChan,pImg)顯示新的一幀圖像。捕獲兩次,顯示一次。 FVID_exchange(capChan,pImg1)后面添加圖像處理算法和疊加字符。 4.4添加圖像處理算法 在FVID_exchange(capChan,img)函數(shù)捕獲圖像后添加圖像處理算法。為了減少CPU訪問圖像數(shù)據(jù)時間,將圖像數(shù)據(jù)和訪問頻率高的中間數(shù)組放在L2 RAM里。DM648 L2的大小512KB,其中128KB用于cache,剩余384KB可用于應用程序存放圖像數(shù)據(jù)。4.5 VPORT驅動調試方法 VPORT驅動采用BIO
17、S的兩層驅動模型class/mini-driver,BIOS現(xiàn)在抽象定義了三種class驅動,PIP/PIO,SIO/DIO,GIO,應用程序通過這三類BIOS API接口與mini driver通訊,在一個應用工程中可以同時使用這三種API 接口。Mini層通過CSL層訪問外圍硬件的寄存器,存儲器,中斷資源,如圖4-6。 圖4-6Video_preview應用工程中使用了BIOS GIO接口API,如圖4-7是GIO和mini diver層包含的API,F(xiàn)VID函數(shù)是GIO API的宏定義,如下:#define FVID_create(name, mode, status, optArgs,
18、 attrs) GIO_create(name, mode, status, optArgs, attrs)#define FVID_exchange(gioChan, bufp) GIO_submit(gioChan, FVID_EXCHANGE, bufp, NULL, NULL)#define FVID_control(gioChan, cmd, args) GIO_control(gioChan, cmd, args) 圖4-7VPORT的mini driver層實現(xiàn)工程vport_bios_dm648_drv_lib.pjt在dvsdk_install_dir/pspdriver目錄下,將其設置為video_preview_PAL.pjt的依賴工程(Dependent Projects),如圖4-8,這樣應用工程重新編譯之后就可
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度房屋買賣合同補充協(xié)議(包含房屋買賣合同糾紛調解)3篇
- 二零二五年度圖書館圖書借閱積分兌換與購銷協(xié)議3篇
- 2025年度協(xié)議離婚訴訟全程指導及法律知識3篇
- 二零二五年度夫妻共有公司經營權離婚協(xié)議3篇
- 綜合課程設計的原則是
- 二零二五年度新能源車輛質押借款擔保合同2篇
- 2025年度水利項目合同終止及水資源利用協(xié)議3篇
- 海南醫(yī)學院《數(shù)字電子技術實驗》2023-2024學年第一學期期末試卷
- 海南體育職業(yè)技術學院《身邊的力學》2023-2024學年第一學期期末試卷
- 二零二五年度夫妻財產保全不離婚協(xié)議執(zhí)行細則2篇
- 售后服務人員培訓資料課件
- 2024-2030年中國薯條行業(yè)發(fā)展趨勢及投資盈利預測報告
- 生命智能學習通超星期末考試答案章節(jié)答案2024年
- 專項14-因式分解-專題訓練(50道)
- 中華傳統(tǒng)文化之戲曲瑰寶學習通超星期末考試答案章節(jié)答案2024年
- 公路工程利用鋰渣技術規(guī)范 第一部分:路基工程-編制說明
- 裝飾裝修設備表
- 2023年國家公務員錄用考試《行測》行政執(zhí)法卷-解析
- 電動葫蘆安裝施工技術方案
- 房地產銷售崗位招聘筆試題及解答(某大型國企)2024年
- 中標結果質疑函
評論
0/150
提交評論