【正文】
這樣,在枚舉函數(shù)將控制權(quán)返還給系統(tǒng)后,因?yàn)閮?nèi)核不銷毀保留內(nèi)存,所以驅(qū)動仍。在這塊內(nèi)存中,保存著本驅(qū)動、本設(shè)備的相關(guān)初始化信息。這樣,就完成了驅(qū)動和核心之間的通信。即首先在驅(qū)動中聲明一個(gè) video_device 結(jié)構(gòu),并為其指定文件操作函數(shù)指針數(shù)組. fops,向系統(tǒng)注冊。目前的 V4L 涵蓋了視、音頻流捕捉及處理等內(nèi)容, USB 攝像頭也屬于它支持的范疇。在目前的 Linux 核心中,視頻部分的標(biāo)準(zhǔn)是VideoforLinux(簡稱 V4L)。 Linux系統(tǒng)中的 USB 攝像頭驅(qū)動程序 USB 設(shè)備驅(qū)動程序完全符合通用設(shè)備驅(qū)動的準(zhǔn)則,不同的是內(nèi)核提供了一些特別的 API 函數(shù),方便驅(qū)動注冊、銷毀自己,例如 usb_reSister()和usb_dereSister(); 2. 4版的內(nèi)核還提供了對于 hotplug 的支持。但是如果使用現(xiàn)有的符 合 VideoforLinux 標(biāo)準(zhǔn)的驅(qū)動程序配合通用應(yīng)用程序,難以充分利用 USB 帶寬,幀速不高,不易滿足實(shí)時(shí)監(jiān)控等要求。 Linux 設(shè)備驅(qū)動 USB 攝像頭 VideoforLinux 不間斷采集 USB攝像頭以其良好的性能和低廉的價(jià)格得到廣泛應(yīng)用。 ◆ video_mmap 用于內(nèi)存映射; ◆ video_mbuf 利用 mmap 進(jìn)行映 射的幀信息,實(shí)際上是輸入到攝像頭存儲緩沖中的幀信息,包括 size(幀的大小 )、 frames(最多支持的幀數(shù) )、 offsets(每幀相對基址的偏移 )。 struct video_mbuf grab_vm。 struct video_picture grab_pic。在傳輸?shù)?pc host 中是要用到 urb( usb請求塊)和 usb 設(shè)備進(jìn)行通信。 打 開 視 頻 采 集 設(shè) 備設(shè) 置 視 頻 采 集 的 格 式在 內(nèi) 核 中 請 求 圖 像 緩 沖 區(qū) , 并 通過 內(nèi) 存 機(jī) 制 將 其 映 射 到 用 戶 空 間將 申 請 的 內(nèi) 存 加 入 到視 頻 采 集 隊(duì) 列啟 動 視 頻 采 集將 采 集 到 的 視 頻 圖 像 從 內(nèi) 核 轉(zhuǎn) 移到 閾 值 有 映 射 關(guān) 系 的 用 戶 空 間采 集 視 頻停 止 采 集 圖 視頻采集流程圖 usb 攝像頭驅(qū)動,需要 usb 驅(qū)動( host 端的 usb 驅(qū)動)的支持,也就是說,要先安裝 usb 驅(qū)動,然后安裝攝像頭驅(qū)動,好在新版本的 linux 內(nèi)核都已經(jīng)支持usb 設(shè)備了,在 makemenu 的時(shí)候,選中進(jìn)行配置。顯示模塊的流程與之類似,只是操作對象變成了視頻顯示設(shè)備,主要 有 2 處不同:首先,需要設(shè)置輸出圖像的裁剪范圍,因?yàn)檩敵?LCD 的大小可能和需要顯示的圖像的大小不一致,需要將待顯示的圖像裁剪成 LCD 的大?。黄浯?,需要設(shè)置一幀圖像在 LCD 上顯示時(shí)間。整 體架構(gòu)如圖 所示, V4L2 通過調(diào)用 CSI、 I2C、預(yù)前處理器 PrP、后處理器 PP 和 LCDC 等硬件模塊驅(qū)動,為上層應(yīng)用提供了視頻捕獲和視頻顯示的編程接口。 視頻采集和顯示模塊 視頻采集和顯示模塊基于 Linux 的 V4L2(Video 4 for Linux 2,一種 Linux 視頻編程接口 )架構(gòu)實(shí)現(xiàn),包括采集和顯示兩個(gè)子模塊。前者包括四個(gè)軟件模塊:視頻采集和顯示模塊、視頻編解碼模塊、音頻采集和播放模塊和網(wǎng)絡(luò)實(shí)時(shí)傳輸模塊,它們?yōu)閼?yīng)用層軟件提供了音視頻處理和收發(fā)網(wǎng)絡(luò)數(shù)據(jù)包的函數(shù)接口;后者即為主程序設(shè)計(jì),實(shí)現(xiàn)了視頻采集編碼后發(fā)送、視頻接收解碼后顯示、音頻采集和發(fā)送以及音頻接收和播放四個(gè)任務(wù)的并發(fā)執(zhí)行,滿足了可視 IP 電話終端一邊采集己方 音視頻從網(wǎng)絡(luò)發(fā)送,一邊從網(wǎng)絡(luò)接收對方音視頻播放和顯示的需求。本章主要闡述中間件和應(yīng)用層軟件的設(shè)計(jì)與實(shí)現(xiàn)。 基于上述原理,筆者選用的以 太網(wǎng)接口如下: 12R 801 ( 1% )12R 807100R ( 1% )X 801 H Z1 2D 802 G R E E N1 2R 80412C 801560pF1 2D 801 G R E E N1 2R 802 1K1 2R 8058R ( 1% )1 2R 803 1K1 2R 8068R ( 1% )AVSS01nELCS2EECS3EESK4EEDATAOUT5EEDATAIN6nCHIPSEL7DVSS18DVDD19DVSS1A10DMARQ211nDMACK212DMARQ113nDMACK114DMARQ015nDMACK016nCSOUT17SD1518SD1419SD1320SD1221DVDD222DVSS223SD1124SD1025S D 926S D 827nM E M W28nM E M R29I N T R Q 230I N T R Q 131I N T R Q 032nI O C S 1633nM E M C S 1634I N T R Q 335nS B H E36S A 037S A 138S A 239S A 340S A 441S A 542S A 643S A 744S A 845S A 946S A 1047S A 1148nR E F R E S H49S A 1250SA1351SA1452SA1553SA1654DVSS355DVDD356DVSS3A57SA1758SA1859SA1960nIOR61nIOW62AEN63IOCHRDY64SD065SD166SD267SD368DVDD469DVSS470SD471SD572SD673SD774RESET75nT E S T76nS L E E P77nB S T A T / nH C 178D I +79D I 80C I +81C I 82DO+83DO84AVDD285A V S S 286T X D +87T X D 88A V S S 189AVDD190R X D +91R X D 92R E S93A V S S 394AVDD395A V S S 496X T A L 197X T A L 298nL I N K E D / nH C 099nL A N L E D100U 803C S 8900A C Q 3V D D 33V D D 33V D D 33V D D 33V D D 33V D D 33LINKLAN(10BT_RD)(10BT_RD+)(10BT_TD)(10BT_TD+)nW A I TnG C S 3R E S E TL nW B E 1E I N T 9L A D D R 0L A D D R 1L A D D R 2L A D D R 3L A D D R 4L A D D R 5L A D D R 6L A D D R 7L A D D R 8L A D D R 9L A D D R 10L A D D R 11L A D D R 12L A D D R 13L A D D R 14L A D D R 15L A D D R 16L A D D R 17L A D D R 18L A D D R 19LDATA0LDATA1LDATA2LDATA3LDATA4LDATA5LDATA6LDATA7L D A T A 8L D A T A 9LDATA10LDATA11LDATA12LDATA13LDATA14LDATA15T D +1T D 2C T T3C H S G N D4C H S G N D5C T R6R D +7R D 8C O N 801R J 45nM E M RnM E M WT D +T D R D +R D nI O R _PnI O W _PV e r s io n 1 .0 βE T H E R N E T9 / 1 4 圖 以太網(wǎng)接口 30 第四章 S3C2440 的 IP 可視電話軟件設(shè)計(jì) 第二章給出的軟件設(shè)計(jì)方案中將整個(gè)軟件自頂向下地設(shè)計(jì)成三個(gè)部分:應(yīng)用層、中間件和底層,使軟件結(jié)構(gòu)清晰、層次分明、易于理解。非目的節(jié)點(diǎn)的主機(jī)雖然收到該數(shù)據(jù)幀但不做處理。 廣播域:網(wǎng)絡(luò)中能接收任何一設(shè)備發(fā)出的廣播幀的所有設(shè)備的集合。通常的辦法是使用 網(wǎng)橋 和交換機(jī)將網(wǎng) 絡(luò)分段,將一個(gè)大的沖突域劃分為若干小沖突域。此外,諸如數(shù)據(jù)分組的長度(以太網(wǎng)的最大幀長度為 1518 字節(jié))、網(wǎng)絡(luò)的直徑等因素也會影響沖突的產(chǎn)生。 影響沖突產(chǎn)生的因素:沖突是影響以太網(wǎng)性能的重要因素,由于沖突的存在 29 使得傳統(tǒng)的以太網(wǎng)在負(fù)載超過 40%時(shí),效率將明顯下降。當(dāng)沖突發(fā)生時(shí),物理網(wǎng)段上的數(shù)據(jù)都不再有效。雖然幀頭和幀尾所用的字節(jié)數(shù)是固定不變的,但依被封裝的數(shù)據(jù)包大小的不同,以太網(wǎng)的長度也在 變化 ,其范圍是 64~1518 字節(jié)(不算 8 字節(jié)的前導(dǎo)字)。 注意:每臺計(jì)算機(jī)一次只允許發(fā)送一個(gè)包,一個(gè)擁塞序列,以警告所有的節(jié)點(diǎn)) 若未發(fā)現(xiàn)沖突則發(fā) 送 成功 ,所有計(jì)算機(jī)在試圖再一次發(fā)送數(shù)據(jù)之前,必須在最近一次發(fā)送后等待 微秒(以 10Mbps 運(yùn)行)。如果有的話,表明信道處于忙狀態(tài),就繼續(xù)監(jiān)聽,直到信道空閑為止。以太網(wǎng)中節(jié)點(diǎn)都可以看到在網(wǎng)絡(luò)中發(fā)送的所有信息,因此 ,我們說以太網(wǎng)是一種廣播網(wǎng)絡(luò)。標(biāo) 28 準(zhǔn)以太網(wǎng)的傳輸效率可達(dá)到 50%~ 60%的帶寬,雙全工在兩個(gè)方向上都提供100%的效率。例如在上例的車站間又加了一條并行的鐵軌,同時(shí)可有兩列火車雙向通行。當(dāng)兩個(gè)方向的數(shù)據(jù)同時(shí)傳輸時(shí),就會產(chǎn)生沖突,這會降 低以太網(wǎng)的效率。 半雙工:半雙工傳輸模式實(shí)現(xiàn)以太網(wǎng)載波監(jiān)聽多路訪問沖突檢測。 3 系列標(biāo)準(zhǔn)相類似。 以太網(wǎng)絡(luò)使用 CSMA/CD(載波監(jiān)聽多路訪問及沖突檢測技術(shù) )技術(shù),并以 10M/S 的速率運(yùn)行在多種類型的電纜上。 D A C )28U 4 0 1 U D A 1 3 4 1 T SV D D 33A V D D 33I2S LR C KI2S S C LKC D C LKI2S S D OI2S S D IL3 M OD EL3 C LO C KL3 D A T AR P 210KC 4 0 1 1 0 u F / 1 0 VC 4 0 2 1 0 u F / 1 0 VC 4 0 31 0 u F / 1 0 VC 4 0 4104R 4 0 2 100RR 4 0 1 100R5T4N3N2R1SC O N 4 0 1P H O N E ( G R E E N )5T4N3N2R1SC O N 4 0 2M I C ( R E D )C 4 0 51 0 u F / 1 0 V 圖 UDA1341電路 圖 以太網(wǎng)接口電路 以太網(wǎng) (Ether)指的是由 Xerox公司創(chuàng)建 并由 Xerox,Intel和 DEC公司聯(lián)合開發(fā)的基帶局域網(wǎng)規(guī)范。另外,選擇通道 2 還可以通過 PGA 對從 MIC 輸入的信號進(jìn)行片內(nèi)放大。設(shè)計(jì)硬件電路時(shí)選用第 27 二組 輸入音頻信號,這樣可以通過軟件的方法實(shí)現(xiàn)對系統(tǒng)輸入音量大小的調(diào)節(jié)。 UDA1341 對外提供 2 組音頻信號輸入接口,每組包括左右 2 個(gè)聲道。 L3 接口的引腳 L3MODE、 L3DATA、L3CLOCK 分別連接到 S3C2410 的 3 個(gè) GPIO 來控制。 UDA1341 提供兩個(gè)音頻通道,分別用于輸入和輸出,對應(yīng)的引腳連接: IIS 總線的音頻輸出IISSDO 對應(yīng)于 UDA1341 的音頻輸入; IIS 總線的音頻輸入 IISSDI 對應(yīng)于UDA1341 的音頻輸出。 LCD 和 LQ043T3DX02 接口電路如圖 所示,其中,R0R4, G0G5,B0B4 為 RGB565 顯示模式下對應(yīng)的 16 根數(shù)據(jù)線, VCC_5V、 和 DGND 為 L