基于嵌入式Linux與S3C2440雙USB接口的視頻存儲(chǔ)
整個(gè)模塊正常情況下主要由單片機(jī)系統(tǒng)提供電源。另外,外接一獨(dú)立直流電源裝置,以免在交通事故時(shí)汽車熄火斷電,影響系統(tǒng)工作。此模塊主要完成視頻的基于事件的存儲(chǔ)功能,判斷功能由單片機(jī)模塊提供,另外依據(jù)串口實(shí)時(shí)掃描特性可提供時(shí)分復(fù)用觸發(fā)功能。模塊間獨(dú)立性高,適合移植到其他場(chǎng)合推廣使用。
2.1.1 USB硬件連接
三星公司S3C2440芯片共有2路HOST USB:DP[1:0]及DN[1:0]口,一路DIVICE PDN0,PDP0 口,其中DP1,DN1分別與PDP0,PDN0接口復(fù)用,根據(jù)相關(guān)寄存器配置不同而具有不同功能。本課題中,將其配置為2路HOST使用,一路連接USB攝像頭,另一路連接USB接口的存儲(chǔ)設(shè)備(可以是優(yōu)盤或者USB移動(dòng)硬盤)。本文沒(méi)有用到芯片自帶的SD卡接口進(jìn)行存儲(chǔ)主要出于以下考慮:
a)速度:普通SD卡的數(shù)據(jù)傳輸速度約2 MB/s;高速SD卡數(shù)據(jù)傳輸速度約10 MB/s;極速SD數(shù)據(jù)傳輸速度約20 MB/s。而現(xiàn)在通用的USB2.0的全速傳輸速率是480 Mbps(60 MB/s),為普通SD卡傳輸速度的30倍。再者,USB3.0標(biāo)準(zhǔn)也已推出,速度可達(dá)5 Gbps,并向下兼容。USB已經(jīng)成了高速、方便的代名詞,本文選用USB也正出于其通用性和方便升級(jí)性考慮。
b)容量瓶頸:現(xiàn)有發(fā)行的嵌入式Linux2.4.X內(nèi)核對(duì)SD卡標(biāo)準(zhǔn)模式容量的支持絕大數(shù)為2 G以下(不包含2 G),要支持到更大容量需要對(duì)SD卡驅(qū)動(dòng)程序進(jìn)行大量修改,并且協(xié)議標(biāo)準(zhǔn)推出相對(duì)較晚,較新的嵌入式Linux 2.6.24內(nèi)核通過(guò)筆者實(shí)際驗(yàn)證可以支持到2 G容量,但要對(duì)驅(qū)動(dòng)進(jìn)行多處修改,后續(xù)升級(jí)復(fù)雜,穩(wěn)定性也需要進(jìn)一步驗(yàn)證。
鑒于以上兩點(diǎn),采用USB接口進(jìn)行視頻數(shù)據(jù)的采集和存儲(chǔ),兩路USB接口部分硬件連接如圖3所示。
2.1.2 Linux內(nèi)核配置修改
在Linux下,所有外設(shè)都被看成是一種特殊的文件,稱為設(shè)備文件。設(shè)備驅(qū)動(dòng)程序?yàn)閮?nèi)核和外設(shè)之間提供接口函數(shù),完成設(shè)備的初始化與釋放、對(duì)設(shè)備文件的各種操作及中斷處理等。這些接口函數(shù)為應(yīng)用程序屏蔽了外設(shè)硬件的細(xì)節(jié),使程序可以像普通文件一樣對(duì)外設(shè)進(jìn)行操作。Linux系統(tǒng)中子模塊Video4Linux向虛擬文件系統(tǒng)注冊(cè)視頻設(shè)備文件,為視頻應(yīng)用程序提供了一套統(tǒng)一的API,視頻應(yīng)用程序通過(guò)標(biāo)準(zhǔn)的系統(tǒng)調(diào)用即可操縱各種不同的視頻捕獲設(shè)備。
考慮到更好的推廣性,采用市面上常見(jiàn)的中星微301系列zc0301pl芯片攝像頭,此攝像頭支持JPEG格式的圖像采集。模塊中分別對(duì)USB OV511 Camera support,Device Drivers等菜單選項(xiàng)進(jìn)行適當(dāng)配置。除此之外,還需對(duì)USB的配置文件進(jìn)行修改,本文選用Linux 2.6.24內(nèi)核,主要修改的文件如下:
linux-2.6.24/driVers/usb/host/Kconfig,linux-2.6.24/drivers/usb/host/ohci-S3C2440.c和linux-2.6.24/drivers/usb/core/hub.c.其中主要涉及對(duì)MISCCR寄存器進(jìn)行正確設(shè)置。以修改ohci-s3c2440.c文件為例,部分需添加代碼:
評(píng)論