历史上的今天
返回首页

历史上的今天

今天是:2026年02月01日(星期日)

正在发生

2023年02月01日 | 基于微处理器S3C2440和WinCE嵌入式实时操作系统的视频数据采集

2023-02-01 来源:elecfans

随着嵌入式技术的不断发展,各种嵌入式微处理器和控制器不断出现,并广泛应用于工控、通信、 PDA、安保等领域。基于ARM920t内核的嵌入式微处理器S3C2440,以其良好的数据处理能力、低功耗、小体积、支持多种嵌入式操作系统(如 WinCE、Linux)、集成多种外设(如I2C控制器、LCD控制器等)等优点,广泛应用于手持设备等。WinCE操作系统具有内核可剪裁、实时性好、支持多种通信、模块化设计、具有丰富的API等特点,广泛用于嵌入式实时操作系统。这里提出的嵌入式图像数据采集系统是某“纳米技术与微系统”实验室开发的“嵌入式传感测控系统”中实现图像采集功能的子系统,该系统是以S3C2440为硬件核心,以WinCE为软件平台,能实时、连续地采集清晰的视频数据。


1 系统结构框图及视频数据采集原理

视频数据采集系统结构如图1所示。

基于微处理器S3C2440和WinCE嵌入式实时操作系统的视频数据采集

从图1中可以看出。系统由嵌入式微处理器S3C2440、存储器(包括Nand Flash和SDRAM)、以太网接口、CMOS图像传感器0V9650、USB主/从口、SD卡、JTAG接口、电源与复位电路、LCD与触摸屏组成。其中,S3C2440为整个系统的硬件核心,负责采集来自图像传感器的数据,控制给各种外设等。Nand Flash存储器与SDRAM构成了系统的存储器,其中SDRAM具有掉电数据不保存的特点,只用作系统内存,用于运行主程序等,而Nand Flash则具有掉电保存数据的特点,用于存储操作系统内核,引导加载程序(Bootloader)、用户应用程序等。


CMOS图像传感器及其接口电路用于采集视频数据。LCD与触摸屏构成人机交互模块,起到数据交互的作用,相当于PC机的键盘和液晶。J- TAG接口用于系统硬件调试和下载Bootloader程序。USB主口不但可以用于外接U盘和移动硬盘等,还可外接带USB接口的鼠标。在触摸屏校正出现大的偏差无法校正时,用鼠标辅助校正。USB从口用于下载WinCE内核文件NK.bin。电源电路包括为微处理器与相关外设提供电压(如微处理器的 1.3 V内核电压、LCD的3.3 V背光电压),以及为摄像头供电。复位电路用于出现故障时系统重启。以太网接口用于扩展系统功能,在视频数据采集的基础上,通过以太网,可以编程实现视频数据的网络传输。


2 摄像头接口及其电源电路

摄像头接口电路如图2所示。本系统选用130万像素的CMOS摄像头0V9650,通过串行摄像头控制总线(Serial Camera Control Bus,SCCB)接口实现对其控制。OV9650支持SXGA、VGA、QVGA、CIF等格式,8位数据输出格式,可以是 YUV/YCbCr(4:2:2)、GRB(4:2:2)和Raw RGB 3种。

基于微处理器S3C2440和WinCE嵌入式实时操作系统的视频数据采集

OV9650内部主要包括1 300xl 028的图像传感器阵列、模拟信号处理器、ADC、DSP、数字视频端口、SCCB接口、定时信号发生器和输出格式器。数据输出位YO只在RAW RGB数据时用作LSB,而Y1只在RGB数据时用作MS,这里都不使用,而用到的主要引脚有:RESET为重置位,用于清空所有的寄存器并重置为默认的值,高电平有效:HREF为内部参考电压引脚,为器件提供参考电压:PWDN为关闭电源模式选择位,高电平有效,为0时是正常模式,为1时电源关闭模式;SIO_D为SCCB串行接口数据I/O,SIO_C为串行接口时钟输入引脚;Y[2:9]为数据输出位,共8位;VSYNC为垂直同步输出引脚:PCLK为像素时钟输出引脚,XCLKl为系统时钟输入引脚。


OV9650的核心供电电压为1.8 V.模拟输入的供电电压为2.45~2.8 V,I/O口的供电电压可以为2.5~3.3 V。本系统设计中,摄像头供电电路如图3所示。采用电源转换器ASlll7为摄像头提供1.8 V和2.8 V电压,其中2.8 V电压是通过可调压器件分压得到。

基于微处理器S3C2440和WinCE嵌入式实时操作系统的视频数据采集

3 系统软件设计

系统的软件设计应当包括两部分:BSP的开发与应用程序的开发。本文分别从这两个方面简单论述,BSP的开发主要介绍Bootloader程序设计及OV9650驱动程序开发。


3.1 Bootloader的开发

BSP的开发一般包括3个方面的内容:Bootloader程序设计、OAL层及驱动程序开发。Bootloader是操作系统内核运行之前运行的一段小程序,用于初始化系统的硬件设备,如初始化MMU、屏蔽所有中断、初始化NandFlash等,建立系统的内存空间映射。从而将系统的软硬件环境带到一个已知的状态,为操作系统内核的最终调用准备正确的环境。最后Bootloader把操作系统内核映像加载到RAM中,并将系统的控制权传递于它,其作用类似于基于X86的PC中的BIOS。


本系统设计的Bootloader,采用Eboot+Nboot的形式,支持USB从机下载通信手段和Nand flash存储介质。NandFlash不支持xip,故必须有一个可执行的程序将烧写在其中的Eboot搬到SDRAM中。Nboot一般配合 Eboot一起使用。Eboot与Nboot同样为启动代码,但是Eboot的大小远超过4 KB,故不能直接将Eboot存放在block0中。Nboot的作用是初始化Flash等硬件,将Eboot搬到SDRAM运行。而Eboot则负责内存地址的映射以及其余设备的初始化、加载NK.bin内核文件等。Nboot与Eboot在其中的位置如图4所示。


3.2 0V9650驱动程序的开发

WinCE的驱动程序按不同的分类方式分为:本机驱动和流驱动。而OV9650驱动程序则属于流驱动程序。流接口驱动程序由Device.exe统一加载和管理;用户编写的应用程序通过使用WinCE操作系统的文件API函数如 CloseHandler()函数、CreateFile()函数等与流接口进行通信,达到应用程序访问驱动程序最终操作硬件的目的。流接口驱动程序具有固定的入口点函数,WinCE的文件系统通过这些入口点函数与流接口驱动进行通信。OV9650流接口驱动程序的入口点函数包括:CIS_Init,CIS_Deinit,CIS_Open,CIS_Close,CIS_IOControl,CIS_Read,CIS_Write,CIS_PowerUp,CIS_PowerDown 等,CIS前缀表示设备的名称。


驱动程序首先调用Virtual_Alloc()函数来完成将物理地址映射到虚拟空间内,以申请摄像头I2C寄存器地址对应的虚拟地址,随后初始化I2C,通过下列语句打开I2C,并设定其访问权限。


接着调用Cam_Init()函数,该函数主要负责摄像头的一些硬件初始化工作,包括:摄像头与S3C2440连接的GPI0的初始化、时钟的初始化等。随后调用IniTInterruptThread()函数,初始化中断线程,通知系统注册中断;调用CreateEven()函数创建一个CameraEvent事件,在CameraCapturerTbread()函数中,调用 WaitForSingle()biect()函数来等待CameraEvent事件的发生。


这里重点说明CIS_IOControl()函数。该函数主要用于向设备发送一个命令。应用程序使用DeviceIOControl()函数来通知WinCE调用这个函数,通过参数dwCode通知驱动程序要执行的操作。该函数通过switch()语句为用户提供能操作的语义,以下给出实现播放采集的MPEG4视频数据和退出驱动、停止采集功能的关键代码,“……”表示省略部分代码。


驱动程序编写完成后,通过DEF与Sources文件的编写、流驱动的编译以及加载该驱动进入WinCE内核,则直接可以通过应用程序调用该驱动。


3.3 应用程序开发

应用程序开发在可视化集成开发环境Embedded VisualC++++中完成,主要基于MFC编程用C++语言实现。通过给“打开”按钮添加单击事件代码,实现对驱动程序的打开操作。打开驱动程序通过以下语句实现。if语句用于判断m_hFile的初始值是否为1,为1则关闭摄像头驱动,重新赋值为1。CreateFile()函数用于打开驱动,并将结果返回给操作句柄。


给“返回”按钮添加单击时间响应函数代码。通过调用CIS_IOControl()函数中的CAM_IOCTL_MOVIE_STOP,实现对驱动程序的关闭。其实现方式跟“打开”按钮基本一样,这里不再赘述。当然,返回按钮还应添加CDialog∷OnCancel()语句来返回到系统主界面。


4 视频数据采集实验结果

应用程序开发完成后,单击“打开”按钮,弹出“打开CISl成功”对话框,如图5所示,表明摄像头驱动打开成功。单击“显示”按钮,在右边的视频显示区,能实时显示动态的视频数据,如图6所示。实验证明,摄像头驱动工作良好。实时数据采集的“纳米技术与微系统”墙面上的展板画面比较清晰,达到了预期效果。单击“返回”按钮,视频显示画面顺利关闭,返回主界面成功。


5 结束语

以嵌入式微处理器S3C2440为硬件核心,以WinCE嵌入式实时操作系统为软件开发平台,以EVC为集成开发环境,完成系统的硬件设计,B-SP的开发和应用程序设计。在开发平台上能顺利打开驱动程序,顺利采集到实验室的展板图像并实时连续播放视频数据,表明OV9650驱动程序工作正常,软硬件设计合理。下一步工作主要是采取合适的视频编码算法如H.264、M-JPEG等,通过以太网实现视频数据的网络传输,实现视频远程监控功能。


推荐阅读

史海拾趣

启攀微(CHIPHOM)公司的发展小趣事

在快速发展的过程中,启攀微电子(CHIPHOM)始终注重与产业链上下游企业的合作。公司与多家知名芯片制造商、封装测试厂商和终端产品厂商建立了紧密的合作关系,共同推动产品的研发和市场推广。通过合作共赢的模式,启攀微电子(CHIPHOM)不仅提升了自身的技术水平和市场竞争力,还为整个电子行业的发展做出了积极贡献。

飞翼科技(FEIYI)公司的发展小趣事

作为一家具有社会责任感的企业,启攀微电子(CHIPHOM)始终关注环境保护和社会公益事业。公司积极响应国家节能减排的号召,采用环保材料和节能技术生产产品。同时,公司还积极参与社会公益活动,捐款捐物支持灾区重建、资助贫困学生等。通过践行社会责任,启攀微电子(CHIPHOM)不仅提升了企业的社会形象,也为社会进步做出了积极贡献。

以上5个故事仅代表启攀微电子(CHIPHOM)在电子行业中发展起来的一些可能情景和方面,实际情况可能有所不同。如需更多准确信息,请查阅相关官方资料或联系公司相关人员。

Advanced Photonix公司的发展小趣事

在电子行业的早期,Advanced Photonix以其卓越的光学技术脱颖而出。公司创始团队由一群富有远见的科学家和工程师组成,他们专注于研发高速光电子和高性能的光纤测试产品。经过无数次的实验和试错,团队终于成功开发出一种具有创新性的光纤传感技术,这一技术为电信行业提供了前所未有的分布式光纤传感解决方案。这一技术突破不仅为Advanced Photonix赢得了市场声誉,也奠定了公司在电子行业的重要地位。

Decawave公司的发展小趣事

Decawave公司成立于2007年,总部位于爱尔兰都柏林。成立之初,公司就专注于超宽带(UWB)技术的研发。在初创阶段,Decawave面临着技术难度大、资金紧张等挑战。然而,凭借对UWB技术的深入理解和研究,公司成功开发出了具有高精度定位能力的UWB芯片,这一技术突破为Decawave在电子行业中赢得了声誉。

台湾致强(FORT)公司的发展小趣事

致强科技自2005年成立以来,便专注于高功率、低阻值且低TCR(温度系数)的电阻产品研发与生产。团队由一群具有机电整合、金属材料加工及冶金制程丰富经验的专家组成,他们独立研发出全合金材料的电阻生产制程,这一创新不仅区别于业界常见的厚膜或厚膜贴合金制程,还大幅提升了电阻的性能与稳定性。通过不断的技术迭代,致强科技成功推出了一系列高精度、高功率的合金电阻产品,广泛应用于各类电子产品中,满足了市场对高质量电流检知电阻的迫切需求。

Bogen Communications Inc公司的发展小趣事

Bogen Communications Inc公司起初只是一个小型的电子设备制造商,但公司高层看到了市场的巨大潜力,决心进行市场拓展。通过精准的市场定位和有效的营销策略,公司成功地将产品打入多个国家和地区。同时,公司还注重品牌建设,通过提升产品质量、优化客户服务等方式,逐渐树立了良好的品牌形象。

问答坊 | AI 解惑

人民币找人做东西

我想用一台电脑去控制另一台电脑的键盘和鼠标事件。用电脑A控制电脑B,电脑A就象电脑B的键盘和鼠标一样。在电脑A上发出指令通过您做的这个单片机发到电脑B上去执行。电脑A上可以装任何软件。但电脑B上不行任何软件。在电脑A 上我是用我做VB做的一个 ...…

查看全部问答>

初学嵌入式开发ARM的学习方法(转载)

这个题目很大,给人一种感觉我好像很成功,其实不然。实际上自己水平不高,甚至很低,但是做过了一些曲折的学习道路,同时把自己真实的学习历程表达出来,希望对后来者有借鉴的意义,甚幸!     工作三年、几成废人!      我2000年毕业 ...…

查看全部问答>

TFT彩图显示法 详细资料

这是一份 TFT彩图显示法 很详细资料 足够可以让你玩弄手机液晶屏…

查看全部问答>

推荐几款可用在2410的gprs模块

要求提供的动态链接库、源代码可以在evc上执行, 就是说它可以支持arm的嵌入式系统,arm的操作系统wince。 价钱、型号,最好有网站介绍。 …

查看全部问答>

要学习51,是买学习板还是自己焊比较好呢?

要学习51,是买学习板还是自己焊比较好呢?自己焊是在万用板上焊的吧?…

查看全部问答>

Wince 5.0 上编写的程序如何打包?用C#写的?

有两个,一个是Program Files 文件夹,一个是应用程序文件夹。 分别代表什么什么意思,可以可以给我讲一下…

查看全部问答>

求助:关于pxa270实现4级灰度控制的驱动程序

我们使用PXA270平台,wince 5.0操作系统。客户提供了一片单色LCD,4bit输入,每1个bit代表1个点,每个点都有ON/OFF两种状态。分辨率640*480。LCD中内置了一颗Max5484来控制灰度。客户要求我们做到4bpp,16级灰度。 但是Max5484这个芯片只能调整整 ...…

查看全部问答>

浏览器的思想

各位高手:     我最近要写一个浏览器(c语言,gtk ,linux),有没有写过的阿,给个提示呀 …

查看全部问答>

帮忙啊

有哪位好心人把windows live id号码借我用一下啊,我要下载个wdk,最近注册了好几次都没有成功,是不是不开放注册了?…

查看全部问答>