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

发布时间:2023-02-01  

随着嵌入式技术的不断发展,各种嵌入式微处理器和控制器不断出现,并广泛应用于工控、通信、 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等,通过以太网实现视频数据的网络传输,实现视频远程监控功能。


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>