UVC?即?usb?video?class。USB協(xié)議中,除了通用的軟硬件電氣接口規(guī)范等,還包含了各種各樣的Class協(xié)議,用來為不同的功能定義各自的標準接口和具體的總線上的數(shù)據(jù)交互格式和內容。這些Class協(xié)議的數(shù)量非常多,最常見的比如支持U盤功能的Mass?Storage?Class,以及通用的數(shù)據(jù)交換協(xié)議:CDC?class。此外還包括Video、Audio?Class,?Print?Class等等。正是由于這些Class協(xié)議,大大促進了USB設備的普及,比如說各個廠商生產(chǎn)的U盤都能通過操作系統(tǒng)自帶的驅動程序來使用。Video?Class顧名思義是作為USB接口的視頻設備的一個統(tǒng)一的數(shù)據(jù)交換規(guī)范。最初版本是在2003年9月才添加到USB?Class規(guī)范中的,1.1的版本更是在2005年才發(fā)布。雖然UVC?提出的較晚,基于UVC?的設備投入市場也較晚,但是無疑UVC?將是大勢所趨,支持UVC?的USB視頻設備將會越來越多,迅速普及。
?
UVC設備拓撲結構圖如圖所示:
在拓撲結構上Video?Class?將視頻設備抽象為幾個主要的硬件功能模塊:
輸入端點?Input?Terminal
輸出端點?Output?Terminal
camera端點?Camera?Terminal
選擇單元?Selector?Unit
處理單元?Processing?Unit
拓展單元?Extension?Unit
從sensor和另一個復合視頻設備得到的數(shù)據(jù)流由IT?和?CT輸入,經(jīng)SU選擇送PU處理,再由OT綁定到指定的USB端點。最后由USB端點與主機交互將數(shù)據(jù)發(fā)送到host端。在實際設備中,可能沒有其中的某些功能模塊,也可能其中的幾個模塊都是由同一硬件來完成的。
從Linux2.6?以后,Linux系統(tǒng)都包含了針對UVC的實現(xiàn)。本課題選用的USB攝像頭符合UVC標準,所以只要在嵌入式Linux操作系統(tǒng)上移植UVC的驅動就可以支持此攝像頭。
由于本課題選用的Linux2.6.30.4版本內核已經(jīng)包含了UVC驅動,只要在編譯內核時將此項選中并編譯到內核中,嵌入式Linux就能支持此USB攝像頭的視頻采集了。當USB攝像頭連到S3C2440上,Linux會建立設備文件/dev/video0?,則說明UVC驅動已經(jīng)正常的工作了。