<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 基于嵌入式Linux與ARM雙USB接口的視頻存儲

基于嵌入式Linux與ARM雙USB接口的視頻存儲

作者: 時(shí)間:2009-12-08 來(lái)源:網(wǎng)絡(luò ) 收藏
針對長(cháng)途客車(chē)“三超”(中途超載上人,超時(shí),超速)以及在非正常??空舅阶酝\?chē)上人導致的客車(chē)超載,同時(shí)目前市面上視頻監控設備由于體積大、成本高等,使其難以推廣應用在車(chē)輛中等問(wèn)題,整合USB攝像頭低成本、USB存儲介質(zhì)較SD(Secure Digital Memory Card)卡存儲速度更快、支持更大容量等優(yōu)點(diǎn),提出了基于嵌入式。平臺的雙uSB接口車(chē)載方案。本方案主要利用單片機判別模塊采集車(chē)輛行駛過(guò)程中運動(dòng)狀態(tài)信息(是否超速,存在急剎車(chē)、中途停車(chē)超時(shí)等),并結合車(chē)門(mén)在車(chē)速為零時(shí)的開(kāi)閉對長(cháng)途客車(chē)在非正常??奎c(diǎn)超載上人進(jìn)行主動(dòng)視頻監控,便于以后的責任追究和認定,為監控中心的管理提供輔助。

1 系統總體結構設計

為方便系統擴展,本文將其劃分為單片機判別模塊和視頻采集存儲模塊兩部分。單片機判別模塊采用C8051F040處理器,利用其充足的接口資源,對車(chē)輛是否超速、急停、超載等情況做出判斷。本模塊完成將力傳感器信號、車(chē)速脈沖信號調理后供單片機處理并與存儲模塊通信。采用測周法測量車(chē)輛變速箱輸出脈沖周期,進(jìn)而可以得到車(chē)速、加速度等信息,配合力傳感器測量結果為判定車(chē)輛是否超速、急停、超載等提供判斷依據。單片機對以上情況進(jìn)行編碼,通過(guò)串口將不同信息編碼發(fā)送給ARM模塊,供其作出不同存儲策略。系統總體結構如圖1所示。

模塊根據接收到單片機發(fā)出的串口信息,對后續行為做出判斷,如是否存儲、存儲時(shí)間、存儲位置等。模塊硬件平臺設計如圖2所示:中央處理器選用三星公司ARM9架構處理器(可以穩定工作在400 MHz,保證采集存儲過(guò)程流暢);選用64 MSDRAM內存及64 MBFLASH作為系統程序存儲設備。接口資源包括:2個(gè)USB口(均配置為HOST模式)、100 M以太網(wǎng)口、2個(gè)串口、音頻口等。

2 視頻采集存儲模塊

整個(gè)模塊正常情況下主要由單片機系統提供電源。另外,外接一獨立直流電源裝置,以免在交通事故時(shí)汽車(chē)熄火斷電,影響系統工作。此模塊主要完成視頻的基于事件的存儲功能,判斷功能由單片機模塊提供,另外依據串口實(shí)時(shí)掃描特性可提供時(shí)分復用觸發(fā)功能。模塊間獨立性高,適合移植到其他場(chǎng)合推廣使用。

2.1 USB硬件連接及內核配置修改

2.1.1 USB硬件連接

三星公司S3C2440芯片共有2路HOST USB:DP[1:0]及DN[1:0]口,一路DIVICE PDN0,PDP0 口,其中DP1,DN1分別與PDP0,PDN0接口復用,根據相關(guān)寄存器配置不同而具有不同功能。本課題中,將其配置為2路HOST使用,一路連接USB攝像頭,另一路連接的存儲設備(可以是優(yōu)盤(pán)或者USB移動(dòng)硬盤(pán))。本文沒(méi)有用到芯片自帶的SD卡接口進(jìn)行存儲主要出于以下考慮:

a)速度:普通SD卡的數據傳輸速度約2 MB/s;高速SD卡數據傳輸速度約10 MB/s;極速SD數據傳輸速度約20 MB/s。而現在通用的USB2.0的全速傳輸速率是480 Mbps(60 MB/s),為普通SD卡傳輸速度的30倍。再者,USB3.0標準也已推出,速度可達5 Gbps,并向下兼容。USB已經(jīng)成了高速、方便的代名詞,本文選用USB也正出于其通用性和方便升級性考慮。

b)容量瓶頸:現有發(fā)行的嵌入式2.4.X內核對SD卡標準模式容量的支持絕大數為2 G以下(不包含2 G),要支持到更大容量需要對SD卡驅動(dòng)程序進(jìn)行大量修改,并且協(xié)議標準推出相對較晚,較新的嵌入式Linux 2.6.24內核通過(guò)筆者實(shí)際驗證可以支持到2 G容量,但要對驅動(dòng)進(jìn)行多處修改,后續升級復雜,穩定性也需要進(jìn)一步驗證。

鑒于以上兩點(diǎn),采用進(jìn)行視頻數據的采集和存儲,兩路部分硬件連接如圖3所示。

2.1.2 Linux內核配置修改

在Linux下,所有外設都被看成是一種特殊的文件,稱(chēng)為設備文件。設備驅動(dòng)程序為內核和外設之間提供接口函數,完成設備的初始化與釋放、對設備文件的各種操作及中斷處理等。這些接口函數為應用程序屏蔽了外設硬件的細節,使程序可以像普通文件一樣對外設進(jìn)行操作。Linux系統中子模塊Video4Linux向虛擬文件系統注冊視頻設備文件,為視頻應用程序提供了一套統一的API,視頻應用程序通過(guò)標準的系統調用即可操縱各種不同的視頻捕獲設備。

考慮到更好的推廣性,采用市面上常見(jiàn)的中星微301系列zc0301pl芯片攝像頭,此攝像頭支持JPEG格式的圖像采集。模塊中分別對USB OV511 Camera support,Device Drivers等菜單選項進(jìn)行適當配置。除此之外,還需對USB的配置文件進(jìn)行修改,本文選用Linux 2.6.24內核,主要修改的文件如下:

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.其中主要涉及對MISCCR寄存器進(jìn)行正確設置。以修改ohci-s3c2440.c文件為例,部分需添加代碼:

2.2 視頻采集存儲程序設計

Vide04Linux設備驅動(dòng)程序只提供了在系統層面上訪(fǎng)問(wèn)硬件設備的一系列讀、寫(xiě)等函數的接口,要實(shí)現存儲,還需再編寫(xiě)一個(gè)對視頻流采集的應用程序,總體上創(chuàng )建兩個(gè)進(jìn)程:進(jìn)程一實(shí)時(shí)掃描串口接收到的信息,通過(guò)讀取命名管道內容將編碼信息發(fā)送給進(jìn)程二;進(jìn)程二根據接收到的編碼做出判斷,區別各種不規范駕駛行為,設定定時(shí)器不同時(shí)長(cháng)以控制存儲時(shí)間,并將視頻分類(lèi)存儲到不同目錄中。

Video4Linux設備驅動(dòng)程序支持兩種捕獲圖像的方式:內存影射mmap方式和直接讀取read方式。mmap方式采用共享內存方式,數據采集速度快,但這種采集方式需攝像頭硬件支持。結合本文中使用的攝像頭,在圖像采集過(guò)程中,采用read方式直接讀取設備文件,將獲得的一幀數據保存到緩沖區中,通過(guò)convertframe()函數將pFramebuffer中的數據轉換成完整的JPEG格式的數據存儲到ptframe中,然后調用fWrite()函數將緩沖區中的JPEG格式的數據寫(xiě)到指定文件中,從而得到一副JPEG格式原始數據塊。部分程序如下:


對于存儲的控制,本文采用“命名管道”方式,這是一種簡(jiǎn)單的進(jìn)程間通信機制,在同一計算機的不同進(jìn)程之間,支持可靠的,單向或雙向的數據通信。

命名管道由視頻存儲進(jìn)程利用函數int mkfifo(constchar*pathname,mode_t mode)創(chuàng )建,負責讀取由串口掃描接收進(jìn)程接收到的控制信息。部分程序如下:


程序總體流程圖如圖4所示。

3 試驗結果

嵌入式內核采用較新的Linux2.6.24版本,配置成功后將編譯生成的鏡像文件下載到目標機。應用程序可執行文件通過(guò)宿主機上交叉編譯器arm-linux-gcc4.4.1生成,向目標機移植成功后便可以在目標機上運行。本文中攝像頭采用中星微301系列zc0301p1芯片,存貯器選用臺電存儲之星U盤(pán),容量為4 G。

視頻采集存儲模塊根據接收到的不同違章信息,在執行文件當前所在目錄位置分別建立DOCn(n=1,2,…)文件夾,將視頻信息分類(lèi)保存在相應目錄下。圖5為駕駛員在岔道轉彎時(shí)刻因超速產(chǎn)生觸發(fā)條件,進(jìn)而觸發(fā)視頻采集存儲視頻中的一副圖片。另外,在系統運行時(shí),還可以根據需要設置錄制時(shí)間的長(cháng)短,以滿(mǎn)足不同的需求和存貯器容量的限制。

4 結論

本系統中單片機模塊根據運算結果產(chǎn)生觸發(fā)條件,通過(guò)串口發(fā)送不同編碼信息來(lái)區別超速、緊急剎車(chē)、超載等情形。實(shí)驗結果表明整個(gè)系統安裝簡(jiǎn)便,成本低廉,工作穩定可靠。另外通過(guò)修改單片機模塊觸發(fā)條件,可擴展用于工廠(chǎng)、銀行及小區等場(chǎng)合下基于事件觸發(fā)的智能監控。

linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)

linux相關(guān)文章:linux教程


攝像頭相關(guān)文章:攝像頭原理


關(guān)鍵詞: Linux S3C2440 USB接口 視頻存儲

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>