基于嵌入式Linux与S3C2410平台的视频采集

时间:2022-03-15来源:佚名

随着计算机技术和网络技术的发展,在单片机领域也发生着日新月异的改变,如高速信号处理器、SoC片上系统等新技术、新应用如雨后春笋般蓬勃发展起来。在现实生活中经常会遇到这样一些问题:比如如何对机房的温湿度进行远程监控;如何一手掌握家里的安全状况,这都需要应用一种耗电量小、24小时不间断工作,体积小的远程视频监控系统。

针对网络视频监控设备的实际应用需求,结合图像采集压缩编码、嵌入式系统和网络技术等几方面的新技术,设计了一套嵌入式网络视频监控系统,用以实现视频数据的采集、压缩与网络传输。该系统基于S3C2410的ARM920T芯片和嵌入式Linux操作系统,采用USB摄像头捕捉视频,经MPG440芯片压缩编码,系统直接与网络相连,用户使用标准的网络浏览器和流媒体播放程序即可查看远程视频影像。

1 系统总体设计

系统总体设计包括硬件设计和软件设计2部分。硬件设计模块主要包括微控制器模块、压缩编码模块、网络接口模块3部分。微控制器模块主要由主控芯片、DATAFLASH和SDRAM组成。其中,主控芯片是整个控制系统的核心,它负责整个系统的调度工作。DATAFLASH中固化了嵌入式Linux内核及其文件系统、应用软件和系统配置文件。SDRAM作为内存供系统运行使用。压缩编码模块由视频数据采集芯片、MPEG-4压缩编码芯片、SDRAM组成,负责将视频流转化为MPEG-4码流。网络接口模块主要是配合主控芯片传送MPEG-4码流。当系统启动时,微控制器将Linux内核调入SDRAM中,系统从SDRAM中启动。系统启动后,微控制器控制MPEG-4编码模块进行工作。软件设计部分主要包括嵌入式Linux移植、视频采集与MPEG-4压缩编码模块、JRTPLIB网络传输模块和MPEG-4解码程序4部分。嵌入式Lin-ux系统存放到由S3C2410控制的DATAFLASH中,它负责整个系统软件的调度工作。MPEG-4压缩编码模块主要负责将采集到的视频流压缩为MPEG-4数据流。JRTPLIB网络传输模块主要负责MPEG-4视频流传输与控制的相关设置。MPEG-4解码程序主要负责对通过网络得到的MPEG-4数据流进行解码工作。

2 硬件系统设计

系统的硬件平台采用Samsung公司的处理器S3C2410。该处理器内部集成了ARM公司ARM920T处理器核的32位微控制器,资源丰富:带独立的16kB指令Cache和16kB数据Cache,还有LCD控制器、RAM控制器、NAND闪存控制器、3路UART、4路DMA、4路带PWM的Timer、并行I/O口、8路10位ADC、TouchScreen接口、I2C接口、I2S接口、2个USB接口控制器、2路SPI,主频最高可达203MHz。在处理器丰富资源的基础上,还进行了相关的配置和扩展,平台配置了16MB,16位的FLASH和64MB,32位的SDRAM。通过以太网控制器芯片DM9000扩展了一个网口,另外引出了一个HOST、USB接口,通过在USB接口上外接一个带USB接口的摄像头。硬件系统结构如图1所示。

3 软件系统设计

Linux具有内核小,效率高,源代码开放,内核直接提供网络支持等优点。但嵌入式系统的硬件资源毕竟有限,因此不能直接把Linux作为操作系统,要针对具体的应用通过配置内核、裁减shell和嵌入式C库对系统进行定制,使整个系统能够存放到容量较小的FLASH中。Linux的动态模块加载,使Linux的裁减极为方便,高度模块化的部件使添加非常容易。嵌入式Linux系统主要由4个部分组成:引导内核启动的文件(bootloader)、Linux内核文件(kernel)、虚拟磁盘文件(ramdisk)、用户空间文件(user)。它们分别被放在DATAFLASH内的4个分区模块中。根据不同模块的具体功能采用不同的文件系统,如:bootloader,kernel,ramdisk等,移植完成后不需要动态改变,使用较节省空间的ROM-FS只读文件系统;user模块内放置一些可以动态更新的配置文件等,需要进行较多的读写操作,所以使用支持动态擦写保存的JFFS2文件系统。基于Linux的上述优点,实现的平台使用操作系统μclinux。通常嵌入式系统软件的开发采用交叉编译调试方式。宿主机通常为Intel处理器,而目标板如图1所示为S3C2410,因此程序需要使用针对处理器特点的编译器才能生成在相应平台上可运行的代码。对于嵌入式Linux,宿主机PC上应安装Linux系统,之后在宿主机上建立交叉编译调试的开发环境。采用移植性很强的C语言在宿主机上编写视频采集程序,再利用交叉编译调试工具编译链接生成可执行代码,最后向目标平台移植。

Linux移植技术已经成熟,在此不做详细阐述,主要介绍USB摄像头驱动、基于V4L设计的视频采集模块和JRTPLIB网络传输模块的程序设计。

3.1 USB摄像头驱动

搭建好嵌入式Linux的开发环境后,第一步工作就是USB摄像头的安装与驱动。

在Linux下,设备驱动程序可以看成是Linux内核与外部设备之间的接口。设备驱动程序向应用程序屏蔽了硬件实现的细节,使得应用程序可以像操作普通文件一样来操作外部设备,可以使用并操作文件中相同的、标准的系统调用接口函数来完成对硬件设备的打开、关闭、读/写和I/O控制操作,而驱动程序的主要任务也就是要实现这些系统的调用函数。

Video4Linux(V4L)是Linux中关于视频设备的内核驱动,它是针对视频设备应用程序编程提供的一系列接口函数。对于USB口摄像头,其驱动程序中需要提供基本的I/O操作接口函数open,read,write,close来实现。当应用程序对设备文件进行系统调用操作时,Linux内核将通过file-operations结构访问驱动程序提供的函数,在系统平台上对USB口数码摄像头进行驱动,首先把USB控制器驱动模块静态编译进内核,使平台中支持USB接口,再在需要使用摄像头采集时,使用insmode动态加载其驱动模块,这样摄像头就可正常工作。

确定USB摄像头被正常驱动后,下一步就是使用Video4Linux提供的API函数集来编写视频采集程序。

    相关阅读

    城市亮化工程如何设计才能具有层次感?

    城市亮化工程 的主要目地是为夜间带来一体化照明,考虑基础的视觉识别规定,自然环境照明的光层级与光线总数的多少相关,假如空间中的自然环境照明比工作照明低许多 ,在工作...
    2022-10-11
    城市亮化工程如何设计才能具有层次感?

    城市道路照明工程主要有哪些?

    在城市建设中,道路照明 是必不可少的基础设施,也是城市夜景的重要组成部分。在某种程度上,它还反映了城市的经济实力,社会进步和现代化的标志。它为夜间在城市中的车辆和行...
    2022-07-12
    城市道路照明工程主要有哪些?

    安全出口指示标志灯为什么是绿色而不是红色?

    对于安全出口指示标志灯相信大家都不陌生,我们在日常生活中在任何公众场所的紧急疏散的安全出口都可以看到这个安全出口指示标志灯,大家有没有想过安全出口的指示标志为什么...
    2022-05-21
    安全出口指示标志灯为什么是绿色而不是红色?

    路灯照明合理的布置方式

    路灯的布置方式主要有单侧布置、双侧交错布置、双侧对称布置、中心对称布置、横向悬索布置五种形式,随着城市道路的不断拓宽,平交路口转弯半径越来越大,根据《城市道路亮化...
    2022-07-15

    泛光照明工程是什么?应用范围有哪些?

    很多人提及 泛光照明工程 会有一些生疏,不理解泛光照明包含哪些,也不知道 泛光照明工程 跟普通照明工程有哪些不一样。 实际上泛光照明工程便是归属于城市景观照明工程或环境...
    2022-10-17
    泛光照明工程是什么?应用范围有哪些?

    消防应急灯的寿命有多长?一般可以使用多长时间?

    对于消防应急灯的使用寿命相信很多人都想了解这个问题,因为消防应急灯安装了就不需要时时刻刻盯着,这需要定时检查就可以了,但是很多人都不知道消防应急灯的寿命有多长,不...
    2022-05-21
    消防应急灯的寿命有多长?一般可以使用多长时间?

    快投派智能无线投屏器,让无线互联更加简单便捷

    没有WiFi的情况下可以进行无线投屏吗? 长期使用投屏功能的人,或多或少都知道自己的手机可以通过【无线投屏】【屏幕镜像】功能,直接连接到智能电视或无线投屏器,下意识地认...
    2022-05-11
    快投派智能无线投屏器,让无线互联更加简单便捷

    广场照明的设计技巧

    广场照明设计 主要包括休闲广场、集会活动广场、商业广场的照明设计。 1)休闲广场。主要是为人们提供休息、社交和举行小型文化娱乐活动的地方,由于人们活动方式不同,有些区...
    2022-07-15

    网站栏目