軟件開(kāi)發(fā)總結(jié)_第1頁(yè)
軟件開(kāi)發(fā)總結(jié)_第2頁(yè)
軟件開(kāi)發(fā)總結(jié)_第3頁(yè)
軟件開(kāi)發(fā)總結(jié)_第4頁(yè)
軟件開(kāi)發(fā)總結(jié)_第5頁(yè)
已閱讀5頁(yè),還剩16頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、 內(nèi)部648軟件開(kāi)發(fā)介紹一 DM648介紹DM648屬于TI達(dá)芬奇系列,采用單核C64X+定點(diǎn)CPU,支持最高頻率1.1GHz,有兩個(gè)乘法器支持四個(gè)16bits*16bits(結(jié)果32bits)單個(gè)clock cycle或者八個(gè)8bits*8bits(結(jié)果16bits)單個(gè)clock cycle。還有6個(gè)ALU。648的片上存儲(chǔ)器有L1P(32KB),L1D(32KB),L2(512KB)648集成了五個(gè)視頻口VPORT,省去FPGA做FIFO,可以節(jié)省產(chǎn)品成本。648集成了豐富的外設(shè),包括edma(64個(gè)通道),SPI,I2C,UART,EMIF,DDR2,Ethernet,gpio(32個(gè)

2、),McASP,PCI。二 搭建軟件開(kāi)發(fā)環(huán)境2.1操作系統(tǒng)環(huán)境 Win7 32位或win-XP環(huán)境2.2軟件安裝和配置 需準(zhǔn)備的安裝軟件Ccs3.3 bios3.08 648dvsdk perlBios是TI針對(duì)DSP開(kāi)發(fā)的實(shí)時(shí)嵌入式操作系統(tǒng)。Dvsdk是基于BIOS系統(tǒng)的視頻開(kāi)發(fā)包。Perl是腳本工具,燒寫(xiě)程序時(shí)將out文件轉(zhuǎn)換為ais文件。建議所有軟件安裝到默認(rèn)目錄下,安裝完后配置操作系統(tǒng)環(huán)境變量修改BIOS_INSTALL_DIR變量為C:/CCStudio_v3.3/bios_5_31_08配置CCS的組件管理器,如圖2-1 點(diǎn)“開(kāi)始->所有程序->TI->compo

3、nent manager,修改Target Content(DSP/BIOS)->TMS320C64XX為當(dāng)前版本的DSP/BIOS 圖 2-12.3 DVSDK目錄文件介紹 默認(rèn)安裝到C:dvsdk_1_11_00_00_DM648目錄下,其中edma3_lld_1_05_00是edma3驅(qū)動(dòng)包examples 包含很多基于BIOS的示例應(yīng)用工程,我們參考video_preview示例程序作為框架,添加圖像處理算法和通訊驅(qū)動(dòng)。flashutil 包含flash燒寫(xiě)工程norwriter,bootloader程序ubl,ais文件生成腳本ndk_1_92_00_22_eval 網(wǎng)絡(luò)開(kāi)發(fā)軟

4、件包pspdrivers_1_10_00 包含了TI提供的很多基于BIOS系統(tǒng)的驅(qū)動(dòng),我們參考其中VPORT的驅(qū)動(dòng),將按幀采集修改為按場(chǎng)采集的功能xdc_2_95_02 xdc工具安裝路徑,xdc是ccs的子工具,是一個(gè)javascript編譯工具,用于編譯cfg文件,cfg文件在后面講。如圖2-2安裝XDC后,會(huì)在工程的編譯選項(xiàng)界面增加X(jué)DC選項(xiàng)。圖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集成了五個(gè)VPORT口,用于視頻輸入輸出,每個(gè)VPORT可以配置為capture或display模式。Capture模式又分為雙通道8bit BT656,單通道16 bit Y/C模式。Display模式又分為單通道8bit BT656, 單通道16 bit Y/C模式。目前,capture和display模式都采用8bit BT656子模式,PAL視頻編碼芯片和解碼芯片也設(shè)置為BT656模式。3.2 BT656標(biāo)準(zhǔn)簡(jiǎn)介 BT656標(biāo)準(zhǔn)將4:2:2格式Y(jié)CbCr數(shù)據(jù)統(tǒng)一封裝在一個(gè)數(shù)據(jù)流中,按照CbYCrY順序排列,Y的數(shù)據(jù)數(shù)量是Cb,Cr的2倍,。BT656數(shù)據(jù)流中,ffh和00h保留用于

6、時(shí)序標(biāo)示。在視頻數(shù)據(jù)每行的開(kāi)頭和結(jié)尾有標(biāo)示SAV(start of video),EAV(end of video)。SAV和EAV的格式是ffh,00h,00h,XYh,前三個(gè)字節(jié)固定,第四個(gè)字節(jié)包含場(chǎng)標(biāo)示,場(chǎng)消隱狀態(tài)和行消隱狀態(tài),如圖3-1。 圖3-13.3 VPORT FIFO每個(gè)VPORT有一個(gè)FIFO存儲(chǔ)進(jìn)入的數(shù)據(jù)或者從FIFO輸出。BT656 capture模式中,F(xiàn)IFO分成A、B兩個(gè)通道,如圖3-2,A通道接收VDIN9-2管腳的數(shù)據(jù),B通道接收VDIN19-12管腳的數(shù)據(jù)。每個(gè)通道又分Y,Cb,Cr三個(gè)緩存,每個(gè)緩存區(qū)有獨(dú)立的讀寄存器。 圖3-2BT656 display模式

7、中,如圖3-3,只有一路輸出,F(xiàn)IFO分為Y,Cb,Cr三個(gè)緩存區(qū),每個(gè)緩存區(qū)有獨(dú)立的寫(xiě)寄存器。 圖3-3VPORT和EDMA配合在FIFO和外部或片上存儲(chǔ)器之間移數(shù)。我們可以編程FIFO的閾值寄存器,當(dāng)FIFO達(dá)到設(shè)置滿度(fullness)(對(duì)于捕獲模式)或者低于設(shè)置滿度(對(duì)于顯示模式)時(shí),生成EDMA事件,觸發(fā)相應(yīng)EDMA通道移數(shù)。每個(gè)VPORT對(duì)應(yīng)6個(gè)EDMA事件,分別是VPxYEVTA,VPxCbEVTA,VPxCrEVTA,VPxYEVTB,VPxCbEVTB,VPxCrEVTB例如,我們用VP0口的A通道做為BT656視頻輸入,VP1口做為BT656視頻輸出。設(shè)置VP0口A通道Y

8、,Cb,Cr三個(gè)緩存區(qū)的閾值為720,360,360。當(dāng)PAL圖像數(shù)據(jù)傳輸完一行后,三個(gè)緩存區(qū)都達(dá)到閾值,生成VP0YEVTA,VP0CbEVTA,VP0CrEVTA三個(gè)事件,觸發(fā)對(duì)應(yīng)的三個(gè)EDMA通道將三個(gè)FIFO緩存區(qū)的一行圖像數(shù)據(jù)移入DDR2緩存區(qū)。設(shè)置VP1口Y,Cb,Cr三個(gè)緩存區(qū)的閾值為720,360,360。當(dāng)三個(gè)緩存區(qū)數(shù)據(jù)數(shù)量低于閾值時(shí),生成VP1YEVTA,VP1CbEVTA,VP1CrEVTA三個(gè)事件,觸發(fā)對(duì)應(yīng)的三個(gè)EDMA通道將DDR2緩存區(qū)的一行圖像數(shù)據(jù)移入三個(gè)FIFO緩存區(qū)。四 應(yīng)用程序及驅(qū)動(dòng)解析4.1兩個(gè)重要文件 基于BIOS/DSP系統(tǒng)開(kāi)發(fā)軟件,有兩個(gè)重要工程文件

9、tcf和cfg文件,如圖4-1中紅圈1和2。 圖4-1 tcf文件包含了DSP/BIOS的配置信息。紅圈3的global settings設(shè)置DSP工作頻率,L1,L2 cache size,大小端,L2 cache 128kB。Memory section設(shè)置程序和數(shù)據(jù)各部分在存儲(chǔ)器中的段地址。紅圈4 HWI(hardware interrupt)處,添加硬件中斷處理函數(shù)紅圈5 添加BIOS/DSP的線程cfg文件包含了庫(kù)鏈接路徑信息,使用javascript語(yǔ)言,如圖紅圈6。使用XDC工具編譯cfg文件,生成庫(kù)鏈接信息,供C編譯器鏈接庫(kù)時(shí)使用。cfg文件常鏈接的庫(kù)有vport驅(qū)動(dòng),edma

10、驅(qū)動(dòng)程序。4.2圖像緩存分配和管理 Edma在VPORT和SDRAM之間搬數(shù),CPU要訪問(wèn)SDRAM最新的圖像數(shù)據(jù),程序采用多個(gè)圖像緩存區(qū)循環(huán)的方式將這兩個(gè)過(guò)程并行化。應(yīng)用層創(chuàng)建捕獲或顯示通道時(shí),調(diào)用驅(qū)動(dòng)層程序在DDR2分配存放圖像數(shù)據(jù)的緩存區(qū)。分配之前,驅(qū)動(dòng)根據(jù)通道的配置參數(shù)計(jì)算每個(gè)緩存區(qū)的大小。例如,vp0按場(chǎng)采集,vp1按幀顯示。Vp0的每個(gè)緩存區(qū)的大小是720*288*2,vp1的每個(gè)緩存區(qū)的大小是720*576*2。應(yīng)用程序使用FVID_dequeue()出隊(duì)函數(shù)和FVID_queue()入隊(duì)函數(shù)或FVID_exchange()交換函數(shù),在應(yīng)用程序和驅(qū)動(dòng)程序之間交換圖像緩存區(qū)。捕獲和

11、顯示驅(qū)動(dòng)的緩存管理方法不同,如下面兩圖4-2和4-3:圖中藍(lán)塊表示應(yīng)用程序的圖像緩存區(qū),白塊表示驅(qū)動(dòng)程序的圖像緩存區(qū)。圖像捕獲緩存區(qū),初始時(shí)所有的緩存區(qū)都在捕獲隊(duì)列里,捕獲驅(qū)動(dòng)程序以循環(huán)的方式填充每個(gè)緩存區(qū)。當(dāng)應(yīng)用程序調(diào)用FVID_dequeue()函數(shù)時(shí),將放有最新圖像數(shù)據(jù)的緩存區(qū)出隊(duì)并返回給應(yīng)用程序,驅(qū)動(dòng)在余下的隊(duì)列里循環(huán)填充,如(a)到(b)和(b)到(e)。當(dāng)應(yīng)用程序調(diào)用FVID_queue()函數(shù)時(shí),將一個(gè)空的緩存區(qū)交給驅(qū)動(dòng)程序并加入隊(duì)列,如圖(b)到(a)和(e)到(b)。當(dāng)應(yīng)用程序調(diào)用FVID_exchange()函數(shù)時(shí),應(yīng)用程序交給驅(qū)動(dòng)一個(gè)空的緩存區(qū),驅(qū)動(dòng)交給應(yīng)用程序放有最新圖

12、像的緩存區(qū),相當(dāng)于同時(shí)調(diào)用FVID_dequeue()和FVID_queue()兩個(gè)函數(shù),如圖(b)到(c)和(c)到(d)。 圖4-2 圖像顯示緩存區(qū),初始時(shí)只有一個(gè)緩沖區(qū)用于顯示,其它緩存區(qū)等待出隊(duì),如圖(a),黃塊表示顯示驅(qū)動(dòng)隊(duì)列里準(zhǔn)備出隊(duì)的緩存區(qū)。顯示驅(qū)動(dòng)程序重復(fù)顯示一個(gè)緩存區(qū)的圖像。當(dāng)應(yīng)用程序調(diào)用FVID_dequeue()函數(shù)時(shí),從驅(qū)動(dòng)獲得一個(gè)緩存區(qū),應(yīng)用程序向它填充顯示數(shù)據(jù),同時(shí)驅(qū)動(dòng)仍然顯示之前的緩存區(qū),如圖(b) 和(d)。當(dāng)應(yīng)用程序調(diào)用FVID_queue()函數(shù)時(shí),應(yīng)用程序給驅(qū)動(dòng)程序一個(gè)準(zhǔn)備顯示的緩存區(qū),同時(shí)驅(qū)動(dòng)將它設(shè)置為當(dāng)前的緩存區(qū),如圖(b)到(c)到(d)。當(dāng)應(yīng)用程序

13、調(diào)用FVID_exchange()函數(shù)時(shí),應(yīng)用程序給驅(qū)動(dòng)一個(gè)準(zhǔn)備顯示的緩存區(qū),從驅(qū)動(dòng)得到一個(gè)空的緩存區(qū),相當(dāng)于同時(shí)調(diào)用FVID_dequeue()和FVID_queue()函數(shù),如圖(d)到(e)。 圖4-34.3 應(yīng)用程序框架介紹基于dvsdk_install_dir/example目錄下的video_preview示例程序,做為項(xiàng)目軟件框架應(yīng)用程序主要包含三部分: Main函數(shù) Video_preview線程 自添加的中斷處理函數(shù)許多實(shí)時(shí)DSP應(yīng)用都需要同時(shí)執(zhí)行很多不相關(guān)的功能,這些功能一般是對(duì)外部事件的響應(yīng),這些功能就加線程。DSP/BIOS支持4種線程:(1) 硬件中斷(HWI):頻率

14、可達(dá)200KHz(5us)(2) 軟件中斷(SWI):SWI允許HWI將一些非關(guān)鍵處理在低優(yōu)先級(jí)上延遲執(zhí)行,這樣可以減少在中斷服務(wù)程序中的駐留時(shí)間。(3) 任務(wù)(TSK):任務(wù)與中斷不同點(diǎn)在于,任務(wù)在執(zhí)行過(guò)程中可以被掛起。(4) 后臺(tái)線程(IDL):空閑循環(huán),運(yùn)行那些沒(méi)有執(zhí)行時(shí)間限制的函數(shù)。 上電加載完操作系統(tǒng)內(nèi)核后,首先執(zhí)行main函數(shù)。 Main函數(shù)執(zhí)行完后,啟動(dòng)video_preview線程,線程生命期直到執(zhí)行結(jié)束后。此線程主要功能有圖像采集,處理,字符疊加,顯示。 Video_preview線程第一步調(diào)用FVID_create()函數(shù)為vp0口創(chuàng)建捕獲通道對(duì)象capChan,初始化vp

15、0寄存器,為vp1口創(chuàng)建顯示通道對(duì)象disChan,初始化vp1寄存器。第二步調(diào)用FVID_allocBuffer() 為capChan和disChan分別分配三個(gè)圖像緩存區(qū),然后調(diào)用FVID_queue()將三個(gè)緩存區(qū)組成隊(duì)列,同時(shí)為capChan和disChan分配edma通道,設(shè)置edma參數(shù)表。第三步調(diào)用FVID_control()函數(shù)使能vp0,vp1口,vp0開(kāi)始捕獲,vp1開(kāi)始輸出顯示。第四步調(diào)用FVID_dequeue()從capChan和disChan的緩存隊(duì)列中各出一個(gè)緩存。第五步 進(jìn)入while(1)循環(huán),在循環(huán)中執(zhí)行兩次FVID_exchange()。FVID_exch

16、ange(capChan,pImg1)捕獲新的一場(chǎng)圖像數(shù)據(jù),F(xiàn)VID_exchange(disChan,pImg)顯示新的一幀圖像。捕獲兩次,顯示一次。 FVID_exchange(capChan,pImg1)后面添加圖像處理算法和疊加字符。 4.4添加圖像處理算法 在FVID_exchange(capChan,img)函數(shù)捕獲圖像后添加圖像處理算法。為了減少CPU訪問(wèn)圖像數(shù)據(jù)時(shí)間,將圖像數(shù)據(jù)和訪問(wèn)頻率高的中間數(shù)組放在L2 RAM里。DM648 L2的大小512KB,其中128KB用于cache,剩余384KB可用于應(yīng)用程序存放圖像數(shù)據(jù)。4.5 VPORT驅(qū)動(dòng)調(diào)試方法 VPORT驅(qū)動(dòng)采用BIO

17、S的兩層驅(qū)動(dòng)模型class/mini-driver,BIOS現(xiàn)在抽象定義了三種class驅(qū)動(dòng),PIP/PIO,SIO/DIO,GIO,應(yīng)用程序通過(guò)這三類(lèi)BIOS API接口與mini driver通訊,在一個(gè)應(yīng)用工程中可以同時(shí)使用這三種API 接口。Mini層通過(guò)CSL層訪問(wèn)外圍硬件的寄存器,存儲(chǔ)器,中斷資源,如圖4-6。 圖4-6Video_preview應(yīng)用工程中使用了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層實(shí)現(xiàn)工程vport_bios_dm648_drv_lib.pjt在dvsdk_install_dir/pspdriver目錄下,將其設(shè)置為video_preview_PAL.pjt的依賴工程(Dependent Projects),如圖4-8,這樣應(yīng)用工程重新編譯之后就可

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論