资源描述:
《嵌入式linux下cmos摄像头驱动的设计与实现》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、·68·工业仪表与自动化装置2010年第3期嵌入式Linux下CMOS摄像头驱动的设计与实现112樊国栋,石红瑞,张健(1.东华大学信息科学与技术学院,上海201620;2.泰安市华能城市燃气工程设计有限公司,山东泰安271000)摘要:为增强系统稳定性,基于Linux操作系统的摄像头驱动,需综合考虑内核模块的调用和任务的优先级。该文介绍了基于ARM9架构,采用CMOS图像传感器OV9650,在Linux操作系统2下摄像头驱动的设计与实现。使用IC总线配置摄像头控制寄存器,引入信号量机制,优化临界资源调度,编写及完善应用程序接口(API),实现了多任务多线程
2、处理。测试结果表明:多个进程同时运行时,驱动程序具有良好的稳定性,能够自动根据优先级,有序地完成图像采集工作。2关键词:嵌入式Linux;驱动;CMOS摄像头;信号量;IC中图分类号:TP368.1文献标志码:A文章编号:1000-0682(2010)03-0068-03DesignandimplementationofCMOScameradriverbasedonembeddedLinux112FANGuodong,SHIHongrui,ZHANGJian(1.CollegeofInformationScienceandTechnology,Donghua
3、University,Shanghai201620,China;2.TaianHuanengCityGasCompanyLtd.,ShandongTaian271000,China)Abstract:Aimingatobtaininghighstability,cameradriverbasedonLinuxoperatingsystemshouldconsiderkernelmodulecallandtaskpriority.BasedonARM9structure,thecameradriverforCMOSim22agesensorOV9650wasd
4、esignedandimplementedinLinuxenvironment.Meanwhile,byemployingICbusconfigurescameraregistersandintroducingthesemaphoremethod,thecriticalresourceallocationcouldbeoptimized.Throughthedesignandimprovementofapplicationprograminterface(API),itwouldrealizemulti-taskandmulti-threaded.Testi
5、ndicatesthat,whenseveralprocessesrunsimultaneously,thecameradrivercouldkeepinhighstabilitybyjudgingthepriorityautomatically.Further,itcouldac2complishimagecollectioninacertainorder.2Keywords:embeddedLinux;driver;CMOScamera;semaphore;IC承上启下的作用。0引言嵌入式Linux操作系统下的摄像头驱动需要考嵌入式图像处理的应用范围日益
6、广泛,作为图虑并发控制、任务的优先级以及中断处理等问[2]像采集的基础,摄像头驱动的性能显得尤为重要。题,还应该为上层的应用程序开发完善、友好的设备驱动程序是处理和操作硬件控制器的软件,是API(应用程序接口)。内核中具有最高优先级且能驻留内存的底层硬件处该文采用OmniVision公司的OV9650图像传感[1]理程序。操作系统通过驱动程序完成对摄像头器,编写了基于嵌入式Linux的摄像头驱动程序,所的控制,建立应用程序和摄像头之间的抽象接口,屏用Linux内核版本为2.6.25。首先描述系统硬件结蔽底层细节,简化图像处理程序的编写过程,起到了构,接着概述
7、驱动程序处理流程,详细说明每一模块的实现方法,最后调用应用程序验证驱动的整体性收稿日期:2009-10-10能,并对结果进行分析。作者简介:樊国栋(1984),男,硕士研究生,从事嵌入式图像处理研究。2010年第3期工业仪表与自动化装置·69·立OV9650.c、CAMERAIF.c和SCCB.c三个源文1系统硬件构成件。OV9650是主程序,负责设备初始化、与内核的以ARM9处理器为核心,构成图像采集系统。通信;CAMERAIF.c管理摄像头寄存器的配置;SC22图像采集系统的硬件结构如图1所示。CB.c用于IC数据传送。2.2分配设备位号[4]Linux
8、内核通过设备位号来寻找摄像头。在分配位号之前,首先发