《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計應(yīng)用 > 基于嵌入式Linux與S3C2440雙USB接口的視頻存儲
基于嵌入式Linux與S3C2440雙USB接口的視頻存儲
摘要: 本方案主要利用單片機判別模塊采集車輛行駛過程中運動狀態(tài)信息(是否超速,,存在急剎車,、中途停車超時等),,并結(jié)合車門在車速為零時的開閉對長途客車在非正常??奎c超載上人進(jìn)行主動視頻監(jiān)控,,便于以后的責(zé)任追究和認(rèn)定,為監(jiān)控中心的管理提供輔助,。
Abstract:
Key words :

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

  1 系統(tǒng)總體結(jié)構(gòu)設(shè)計

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

系統(tǒng)總體結(jié)構(gòu)

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

模塊硬件平臺設(shè)計

  2 S3C2440視頻采集存儲模塊

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

  2.1 USB硬件連接及Linux內(nèi)核配置修改

  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接口的存儲設(shè)備(可以是優(yōu)盤或者USB移動硬盤),。本文沒有用到芯片自帶的SD卡接口進(jìn)行存儲主要出于以下考慮:

  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也正出于其通用性和方便升級性考慮,。

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

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

兩路USB接口部分硬件連接

  2.1.2 Linux內(nèi)核配置修改

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

  考慮到更好的推廣性,,采用市面上常見的中星微301系列zc0301pl芯片攝像頭,此攝像頭支持JPEG格式的圖像采集,。模塊中分別對USB OV511 Camera support,,Device Drivers等菜單選項進(jìn)行適當(dāng)配置。除此之外,,還需對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.其中主要涉及對MISCCR寄存器進(jìn)行正確設(shè)置,。以修改ohci-s3c2440.c文件為例,部分需添加代碼:

程序

  2.2 視頻采集存儲程序設(shè)計

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

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

程序

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

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

程序

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

程序總體流程圖

  3 試驗結(jié)果

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

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

駕駛員在岔道轉(zhuǎn)彎時刻因超速產(chǎn)生觸發(fā)條件

  4 結(jié)論

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

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載,。