999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

嵌入式圖像檢測系統的設計與應用

2012-04-20 09:31:32楊勇劉永俊
常熟理工學院學報 2012年4期
關鍵詞:嵌入式設備系統

楊勇,劉永俊

(常熟理工學院計算機科學與工程學院,江蘇常熟 215500)

嵌入式圖像檢測系統的設計與應用

楊勇,劉永俊

(常熟理工學院計算機科學與工程學院,江蘇常熟 215500)

基于Linux2.6內核下的最新標準Video For Linux 2(簡稱V4L2),介紹攝像頭的驅動程序快速開發方法.傳統的驅動開發很少能實現所有的接口功能,這嚴重影響到系統開發周期與維護工作,而且OmniVision公司的ov9650攝像頭在Linux下尚未得到驅動支持.本文選擇S3C2440開發板作為硬件平臺,在Linux2.6.30.4系統下基于OV9650傳感器芯片實現攝像頭驅動模塊的層次結構以及視頻采集模塊設計的開發工作,提出基于V4L2接口規范的驅動開發方案,從而實現低成本、低功耗、高效率的圖像檢測系統的應用.

V4L 2;驅動;ov 9650;Linux-2.6.30.4

嵌入式系統是一種完全嵌入到受控器件內部,為特定應用而設計的專用計算機系統.它的應用領域涵蓋了消費電子、智能家居、醫療設備、航空航天等[1].隨著物聯網的不斷發展,嵌入式產品層出不窮,例如基于嵌入式的圖像視頻監控系統的需求在不斷增加,而數字化視頻系統能夠充分利用嵌入式系統的特點對采集的圖像進行預處理、分析、存儲以及顯示.因此,充分利用linux2.6內核系統的特點,基于ARM920T平臺的視頻處理系統應運而生.

本文以三星公司生產的S3C2440芯片構建基于V4L2規范實現的圖像采集系統,詳細介紹V4L2標準提供的接口函數,以及視頻采集程序模塊的設計與實現[2-3].由于傳統的驅動程序的開發很少提供完整API接口函數,導致開發周期長的缺陷.本文提出基于V4L2規范的驅動程序開發[4],在保證圖像采集質量的前提下,能夠縮短開發周期,提高開發效率[5].

1 硬件體系架構介紹

1.1 S3 C2440 A處理器概述

三星公司的ARM920T處理器為嵌入式的產品提供了豐富的片上集成系統.比如:16/32位RISC體系結構,16位壓縮指令集Thumb與32位ARM指令集;增強的ARM體系結構MMU;同時支持高速總線模式和異步總線模式.外部接口主要有SDRAM控制器、LED控制器、4通道DMA、3通道UART、IIC總線等[6].本文采用ARM920T的camera功能模塊,如圖1.

1.2 OV9650傳感器芯片

由于CMOS芯片與CDD芯片相比具有低功耗、低成本、速度快、工藝簡單等優點,因此本文選用了CMOS攝像頭模塊,型號OV9650.該芯片的像素陣列大小1280*1024,130萬像素,支持SXVGA、VGA、QVGA、CIF等圖像輸出格式.通過S3C2440的IIC總線和串行SCCB總線接口相連,其飽和度、平衡度、曝光時間等參數均可通過芯片內部寄存器的讀寫來設置.

圖1 S3C2440的camera模塊框圖

2 Linux2.6操作系統下的攝像頭驅動開發與實現

圖2 硬件系統平臺框架圖

嵌入式系統上電啟動的過程依次是引導加載程序Bootloader、Linux內核、根文件系統、應用程序.本文在完成移植uboot、linux2.6內核與Yaffs文件系統的基礎上,利用V4L2接口規范編程,設計并實現OV9650驅動編碼、視頻采集、預處理、壓縮、傳輸等功能模塊,以及應用程序的測試工作[7].

2.1 V4 L2 接口規范

Video For Linux(V4L)提供了各種視頻圖像采集設備的API和數據結構,比如TV tuners和usb網絡攝像機等.1999年,V4l接口函數得到了發展,成為V4L2,這解決了在V4L中的bugs,而且支持了更加廣泛的設備.

常用的設備結構體在linux2.6內核目錄include/linux/videodev2.h中定義:

2.2 Linux平臺下V4L2驅動的編碼

OV9650的CMOS傳感器在Linux2.6內核中是作為混雜設備來描述,其驅動程序給應用程序提供了一個流控制接口,讓用戶進程借助設備文件與硬件聯系,對設備文件的操作實質上就是系統調用.所以,系統調用與驅動關聯起來就要通過file_operations{}這一結構體來實現[8].系統工作流程如圖3所示.

在結構體miscdevice中定義了file_operations*fops,該文件結構體指針對應的操作如下:

這些操作需要在驅動程序中具體實現.

file_operations提供了基本的I/O操作接口open,read,write,close,ioctl等函數,實現了對中斷的處理,內存映射功能以及I/O通道的控制功能.在應用程序發出文件操作的相關命令時,內核根據這些指針調用相關函數.這樣就完成了驅動和內核之間的通信.

實際上,V4L2是一種兩層驅動系統模型,上層是videodev模塊.當初始化videodev模塊的時候,它被Linux內核注冊為主設備號為81的字符設備,,同時還注冊了一些字符設備的功能函數.而下層就是V4L2驅動程序,它相當于是videodev的客戶端,videodev通過V4L2提供的一套接口函數訪問這些驅動.每當初始化V4L2驅動的時候,它就會傳遞給videodev模塊的一個數據結構或文件節點.準確地說,通過V4L2方法實現的驅動模型與普通字符設備的不同是前者包含了一些特有的元素.

每當應用程序觸發一個驅動程序調用時,控制權會首先傳給videodev中的方法,它負責把應用程序傳遞過來的結構指針或文件節點轉換為對應的V4L2的數據結構指針,并調用V4L2驅動程序中的處理函數.

在初始化V4L2驅動程序的時候,videodev將會枚舉它要處理的設備函數,為每個設備填充一個struct v4l2_device結構,同時指向該結構體的指針傳給v4l_register_device()函數.它能夠保證次設備號可用,然后調用struct v4l2_device結構中的相關函數實現設備的初始化工作.如果初始化成功,那么設備注冊成功.如果要卸載設備驅動,調用v4l_unregister_device()取消注冊.

2.3 視頻驅動模塊設計

本文驅動程序的設計是圍繞著file_operations{}這個數據結構體展開,其主要功能是注冊相應的各個函數的功能,實現對攝像頭設備打開、設置控制項、設備buf映像、采集像素格式初始化、采集圖像、關閉攝像頭等功能.

在初始化函數s3c2440_ov9650_init(void)中設置GPIO-J引腳為camera的對應模式,通過函數re?quest_mem_region((unsigned long)S3C2440_PA_CAMIF,S3C2440_SZ_CAMIF,CARD_NAME)為camera申請I/O內存資源,然后使用函數ioremap_nocache((unsigned long)S3C2440_PA_CAMIF,S3C2440_SZ_CAMIF)進行內存映射.接著,初始化camera時鐘、設置ov9650寄存器等.下一步,使用misc_register(&misc)函數注冊到videodev層.

圖3 系統工作流程

此外,在驅動程序結構中必須要包含的兩個模塊函數分別為:模塊加載函數和模塊卸載函數.在安裝模塊時被系統自動調用的函數,通過module_init宏來指定;而卸載模塊時被系統自動調用的函數,通過module_exit宏來指定.

module_init是驅動程序的入口點,如果被用戶進程加載,它就會自動調用s3c24xx_ov9650_init函數,其實現的工作包括:配置相關寄存器,初始化OV9650攝像頭.

當驅動被用戶進程卸載時,module_exit(s3c24xx_ov9650_exit)會自動調用s3c24xx_ov9650_exit函數,其實現的工作包括:進程地址空間的釋放,中斷請求的關閉.

對于主機端設備驅動程序,接下來的工作就是把驅動程序嵌入到內核,這里采用模塊的形式編寫,因為模塊方式可以動態加載到Linux內核,而且利于程序調試.

2.4 基于V4L2的圖像采集模塊設計與實現

視頻采集是通過操作系統調用V4L2接口與設備驅動程序來實現的.V4L2接口是內核里提供的一組支持影像設備的API函數,配合視頻采集模塊驅動程序實現圖像采集功能.在Linux中,可以把視頻設備當作普通的設備文件,采集圖像的程序就是通過調用V4L2接口規范中API函數對設備文件進行讀操作.整個采集流程圖如圖4所示.

主要用到的函數模型說明如下:

1)int open(devicename,mode):打開設備文件,采用非阻塞模式調用視頻設備,當沒有可用的視頻數據時不會阻塞而立即返回.

2)int ioctl(int__fd,unsigned long int__request,.../*args*/):在打開設備后,使用ioctl函數可以對設備的I/O通道進行管理,能夠設置該視頻設備的相關屬性以及采集方式,還能夠向驅動申請幀緩存獲取每個幀緩沖的信息后,映射到用戶空間.

3)void*mmap(void*start,size_t length,int prot,int flags,int fd,off_t offset);由于V4L2采集到的圖像數據是存放在內核空間,而應用程序無法訪問內核空間中的數據.我們利用mmap這個函數將內核地址映射到用戶空間.這樣程序就可以對緩沖區的數據進行操作,從而提高了效率.

4)int close(fd):關閉圖像采集設備.最后還要使用munmap方法來釋放設備申請的內存.

2.5 測試程序

圖4 圖像采集流程

本文中驅動程序的測試采用開源編碼庫—mjpg-streamer,在移植mjpg-streamer之前還需要移植SDL庫.mjpg-streamer使用的是V4L2接口,通過對源碼的相關修改以及移植來實現一個自己需要的視頻服務器,從而可以測試驅動程序開發與圖像采集模塊程序的編寫工作.

3 結論與展望

本文給出了在嵌入式系統中基于V4L2實現的驅動程序開發和圖像采集與傳輸設計方案.在Linux2.6內核中,視頻設備也是文件,可以像訪問普通文件一樣對其進行讀寫,攝像頭設備在/dev/video0目錄下. Video for Linux 2是Linux中有關視頻驅動的內核驅動,它為嵌入式驅動程序開發提供了統一規范,從而提高開發效率.基于S3C2440A硬件平臺,再加上適當的外圍器件與應用程序,可應用于圖像傳輸、視頻監控等領域.

[1]余輝.嵌入式Linux程序設計案例與實驗教程[M].北京:機械工業出版社,2009(4):191-195.

[2]S3C2440A User’s manual Revision1[Z].SUMSUNG,2004.Http://www.samsungsemi.com.

[3]OV9650_DS CameraChipTM Implementation Guide[Z].OmniVision Co.,2004(12).http://www.pdf-ic.com/datasheet_0V9650.html.

[4]曹占中,周余,王自強,等.基于s3c2440的Linux攝像頭驅動開發[J].電子測量技術,2009,32(2):108-111.

[5]周曉光,潘延濤.基于S3C2440A的嵌入式視頻系統設計[J].電子測量技術,2006,29(6):84-86.

[6]楊水清,張建,施云飛.ARM嵌入式Linux系統開發技術詳解[M].北京:電子工業出版社,2008:17-20.

[7]宋寶華.設備驅動開發詳解[M].第二版,北京:人民郵電出版社,2010:85-88.

[8]Jonathan Corbet,Alessandro Rubin,Greg Kroah-Hartman.Linux Device Drivers 3rd Edition[M].America:O'Reilly Media,2005: 108-112.

Design and Application of Embedded Image Detection System

YANG Yong,LIU Yong-jun
(School of Computer Science and Engineering,Changshu Institute of Technology,Changshu 215500,China)

Based on the latest standard Video for Linux 2(V4L2)in Linux kernel 2.6,this paper introduces the rap?id development method of driver programs.Traditional driver development is rarely able to realize all the interface functions,which seriously affects the system development cycle.The ov9650 camera driver of OmniVision Compa?ny has not been supported by Linux kernel.For this reason,under the condition of s3c2440 board hardware plat?form and Linux kernel 2.6.30.4,the authors of this paper achieve development work including camera driver mod?ule hierarchy and video capture module design,put forward the method of driver development based on V4L2 inter?face specification,and realize the application of low-cost,low-power,highly efficient image detection system.

V4L2;driver;ov9650;Linux-2.6.30.4

TP316.81

B

1008-2794(2012)04-0105-05

2012-03-01

江蘇省高校自然科學基金“基于投影分析理論與算法的圖像特征抽取及分類技術研究”(05KJB520152);常熟理工學院科研創新項目基金“基于arm的便攜式人臉識別系統”(KY2012116)

楊勇(1989—),男,江蘇宿遷人,常熟理工學院計算機科學與工程學院學生.

劉永俊(1981—),男,山東青島人,講師,碩士,研究方向:人工智能與智能系統,模式識別理論與應用,人臉識別,E-mail:yongjun1981@126.com.

猜你喜歡
嵌入式設備系統
諧響應分析在設備減振中的應用
Smartflower POP 一體式光伏系統
工業設計(2022年8期)2022-09-09 07:43:20
WJ-700無人機系統
ZC系列無人機遙感系統
北京測繪(2020年12期)2020-12-29 01:33:58
基于MPU6050簡單控制設備
電子制作(2018年11期)2018-08-04 03:26:08
搭建基于Qt的嵌入式開發平臺
連通與提升系統的最后一塊拼圖 Audiolab 傲立 M-DAC mini
嵌入式軟PLC在電鍍生產流程控制系統中的應用
電鍍與環保(2016年3期)2017-01-20 08:15:32
500kV輸變電設備運行維護探討
工業設計(2016年12期)2016-04-16 02:52:00
原來他們都是可穿戴設備
消費者報道(2014年7期)2014-07-31 11:23:57
主站蜘蛛池模板: 黄色网站不卡无码| 美女无遮挡免费网站| 在线国产毛片| 国产SUV精品一区二区| 伊人久久婷婷| 中文字幕日韩丝袜一区| 伊人久久精品无码麻豆精品| 中文字幕久久波多野结衣| 青草视频久久| 国产在线精彩视频二区| 精品国产黑色丝袜高跟鞋 | 欧美精品啪啪一区二区三区| 尤物午夜福利视频| 国产精品久久久久久久久| 国产成人无码AV在线播放动漫 | 99视频在线免费观看| 国产成人精品在线| 国产美女精品一区二区| 制服丝袜无码每日更新| 国产丝袜啪啪| 在线日韩一区二区| 国产福利小视频在线播放观看| 四虎成人在线视频| 国产青青操| 成人国产一区二区三区| 最新加勒比隔壁人妻| 一区二区无码在线视频| 五月婷婷伊人网| 亚洲成年人网| 欧美激情第一欧美在线| 波多野结衣一区二区三视频 | 欧美亚洲一二三区| 日韩123欧美字幕| 久久青草精品一区二区三区| 国内毛片视频| 国产成年女人特黄特色毛片免| 亚洲国产成人精品无码区性色| 亚洲制服中文字幕一区二区| 国产精品不卡片视频免费观看| 99er这里只有精品| 国产女人水多毛片18| 福利视频一区| 亚洲欧洲自拍拍偷午夜色| 国产伦片中文免费观看| 一级毛片在线免费视频| 欧美日韩精品综合在线一区| 欧美中日韩在线| 青青青伊人色综合久久| 香蕉久久国产超碰青草| 亚洲二区视频| 毛片大全免费观看| 欧美亚洲另类在线观看| 国产簧片免费在线播放| 亚洲A∨无码精品午夜在线观看| 国产成人亚洲毛片| 色屁屁一区二区三区视频国产| 四虎AV麻豆| 欧美亚洲一区二区三区导航| 91网址在线播放| 一本色道久久88| 亚洲 欧美 日韩综合一区| 成年免费在线观看| 亚洲色图狠狠干| 色婷婷色丁香| 国产成人精品2021欧美日韩| 亚洲中文无码h在线观看| www中文字幕在线观看| 久久亚洲国产一区二区| 99ri精品视频在线观看播放| 伊人AV天堂| 亚洲视频二| yjizz视频最新网站在线| 国产特级毛片| 精品国产自| 欧美啪啪网| 国产在线一区视频| 亚洲国产系列| 国产女人在线视频| 狠狠色丁香婷婷| 免费国产小视频在线观看| 四虎国产精品永久一区| 国产一区二区丝袜高跟鞋|