基于Video4Linux的攝像頭驅(qū)動設(shè)計
3.2.2 DMA配置
本系統(tǒng)采用二維DMA來提高數(shù)據(jù)的傳輸速度,采用16位傳輸,且傳輸完一場視頻數(shù)據(jù)后產(chǎn)生中斷。dma_x_count=720(相當(dāng)于每行數(shù)據(jù)需傳輸?shù)拇螖?shù),每行720個像素點(diǎn),每個像素點(diǎn)2個字節(jié)。每行要傳720×2個字節(jié),而dma是16位傳輸,所以x_count=720)。 dma_x_modify=2(相鄰兩次傳輸數(shù)據(jù)的偏移地址,以字節(jié)為單位,因?yàn)槭?6位傳輸,所以為2)。
由于PAL制視頻數(shù)據(jù)是隔行掃描,每幀分為奇偶兩場,兩場在時域上是分開的,但是在數(shù)據(jù)處理時需要將兩場合成一幀進(jìn)行處理,因此為了減少CPU的處理時間,可以利用DMA直接進(jìn)行場合成。在一場的傳輸中,DMA在傳輸完一行數(shù)據(jù)后,預(yù)留下一行的存儲空間,將數(shù)據(jù)存放到第三行的地址。在一場數(shù)據(jù)傳輸完后,下一場的數(shù)據(jù)就填充上一場預(yù)留的存儲空間,也是隔行存儲,這樣兩場數(shù)據(jù)就合成一幀數(shù)據(jù)了。所以,dma_y_modify=1442(一行720像素點(diǎn),占720×2字節(jié)。而一行末地址到下一行首地址還需2字節(jié)。所以720×2+2=1442)。同時,兩場數(shù)據(jù)存放的起始地址的設(shè)置間隔也是1442字節(jié)。
3.3 中斷服務(wù)子程序
本系統(tǒng)的中斷服務(wù)子程序主要是一場數(shù)據(jù)采集完后,產(chǎn)生中斷,并根據(jù)數(shù)據(jù)的奇偶場做出相應(yīng)的處理。其流程如圖2所示。本文引用地址:http://www.ex-cimer.com/article/166878.htm
4 結(jié)束語
本文介紹了在Blackfin DSP和Linux的平臺下,攝像頭驅(qū)動的體系結(jié)構(gòu)和具體實(shí)現(xiàn)。此驅(qū)動由測試程序測試,可以正常工作。此驅(qū)動尚存在不足之處,那就是在驅(qū)動的抓幀過程中沒有采用乒乓操作,但是采用了兩個幀緩存來存取數(shù)據(jù),因此乒乓操作可以在上層應(yīng)用中完成。
評論