摘要:宠物智能喂养体系是一种高效的长途喂养体系,能够经过WEB及移动终端(平板、手机)长途操控宠物的科学喂养和喂水。文中以S3C6 410为中心处理器、红外CCD摄像头为视频收集模块以及TVP5150为视频解码器,构建了高度集成的嵌入式实时视频收集渠道,在此基础上完结了宠物智能喂养体系的规划。该规划具有体积小、本钱低、功耗低、稳定性高、安全性好、操作便当等特色,极好地满意了智能科学喂养宠物的需求。文中提出了一种适用于该喂养体系的视频收集驱动规划计划,在Linux3.0.1版别内核下,以Linux下处理视频设备的最新规范-V4L2为基准完结驱动程序编写。经过试验证明该计划能成功完结视频数据的收集。
跟着我国社会经济的快速开展,城市化进程不断加快。我国国民生活水平不断得到进步,我国宠物业也得到了飞速的开展。因为城市生活的封闭性、个性化和人口老龄化等问题不断凸显出来。人民生活中休闲、消费和情感寄予办法也呈多样化的开展。家庭宠物的养殖现已成为了城市居民生活消遣的新办法。
宠物的喂养和关照往往是宠物主人最关怀的问题,现在宠物首要仍是依托人工进行喂养,宠物关照体系还停留在专人关照和宠物店保管的形式下。现有的宠物关照设备只处理了不让宠物饿肚子的简略层面,而没有处理主人不在家时,宠物和主人的互动要求。主人比较关怀的问题,比方宠物现在在做什么,有没有吃饭,宠物健康状况怎么样等,这些心思诉求的满意才是一套宠物关照体系要处理的问题。而现在的设备还不能满意这一需求。
现在的家庭宠物关照体系为数不多,算得上关照体系的产品功用单一,仅仅简略的丈量宠物环境和喂养,不能一起满意用户既能够长途喂养宠物又能够在线观看宠物进食状况和活动状况的需求。近年来跟着嵌入式技能敏捷的开展,嵌入式体系现已老练并得到广泛运用,把嵌入式体系与Web技能结合起来,将Web技能引进到测控体系,完结依据嵌入式Web服务器的长途测控体系,有杰出的运用远景。在嵌入式Linux渠道下运用Boa作为Web服务器的长途测控体系能够完结上述需求,搭载有高度集成的嵌入式实时视频收集渠道的宠物智能喂养体系能很好的满意客户的不同需求。经过嵌入式实时视频收集渠道上的红外CCD摄像头,宠物主人能够在白日或许晚上用智能手机、平板电脑、PC电脑等经过WEB操控宠物进食一起能够查看宠物进食和活动状况。
在本体系中,驱动程序用来完结用户和硬件的交互,是硬件设备正常作业的先决条件,充当着不行短少的人物。本文提出一种依据S3C64 10的Linux3.0.1内核版别下的视频收集体系驱动规划计划,并已成功用于宠物智能喂养体系中,收到杰出的作用。
1 硬件体系构架
宠物智能喂养体系首要由图画收集模块、视频解码模块、S3C6410、喂养模块、喂水模块和显现模块组成。红外CCD摄像头用于收集智能喂养体系作业状况中的宠物的进食和活动状况图画,因为S3C6410不能辨认收集到的PAL制式信号,因而需求做视频解码处理,这儿选用TI公司推出的Tvp5150解码器,用于将收集到的PAL制式信号转化成YCrCb格局。S3C6410是整个体系的中心部分,转化后的数字信号数据经编码DMA通道进入Camera单元的编码缩放器,经过高编码质量和压缩比的H264编码后保存到用户程序拓荒的缓存区中,然后传输到live555流媒体服务器接纳程序中,live555完结了对编码后视频流的流化和相关的处理,最终经过嵌入网页端的流媒体播放器VLC media player播放器实时显现。体系中的喂养模块能够完结宠物所需食物的定量投进,喂水模块能够完结主动喂水和长途喂水的功用。别的为了便利对图画进行相关处理,需求NAND FLASH用于存储截取的图画,一起,SDRAM、JTAG和供电部分等常用外围接口是开发进程中不行短少的部分。由此建立的高度集成的实时视频收集体系具有明显的小型化作用。体系全体结构如图1所示。
1.1 S3C6410开发渠道
S3C6410是依据16/32-bit RISC ARM1176JZF-S内核的低本钱、低功耗、高功用微处理器,具有高达533 MHz的主频,4 G ROM和512 M RAM,功用强壮,堪比当今干流智能手机。S3C6410内部集成了许多功用强壮的硬件加快器,像视频处理、移动图画处理、显现操控和图画缩放等,集成了Camera接口单元、体系办理器、LCD操控器、守时器、通用I/O端口、I2C总线接口等硬件外设,具有先进的OTG接口和能支撑SLC/MLC等干流的NAND FLASH。与本体系直接相关的Camera接口单元由7个模块组成:图形多路挑选器、捕获单元、预览缩放器、编码缩放器、预览DMA通道、编码DMA通道和SFR(特别功用寄存器)。体系中的两个DMA通道分别是:预览DMA通道和编码DMA通道,其间预览DMA通道用于液晶屏的显现,能够把YCbCr4:2:2格局的图画转化成RGB格局的数据,并存放于为预览DMA分配的内存中。编码通道用于图画的编解码处理,能够输出YCbCr4:2:0或YCbCr4:2:2格局到为编码DMA分配的内存中。
1.2 红外CCD摄像头和TVP5150视频解码器
体系中的红外CCD摄像头选用优质的1/3英寸SONYCCD芯片,优异的红外夜视功用,内置24颗红外灯,夜视间隔达5~10 m。其技能参数:DC 12 V 220 mA,红外灯翻开时DC 12 V 1 000 mA,420 TVL,像素频率27 MHz,输出PAL制式视频信号。
TVP5150是TI公司推出的一款超低功耗高功用视频解码器,能够对NTSC/PAL/SECAM各制式信号主动辨认、切换、设置相应的寄存器,TVP5150解码器优化的架构使其正常作业时功耗仅115 mW,广泛运用于便携、批量大、高功用和高质量的视频产品中。TVP5150解码器有一个模仿输入通道,能够承受1路S—VIDEO信号或2路复合视频信号(CVBS),红外CCD摄像头收集到的图画以每秒25帧的速度向TVP5150输出PAL制式的图画数据,TVP5150对输入的PAL制式信号进行主动辨认并进行A/D转化,转化为契合ITU—R BT.656规范的8位数字YCbCr4:2:2信号。ITU —R BT.656是ITU—R BT.601附件A中的数字接口规范,ITU-R BT.656输出8位Y:Cb:Cr=4:2:2的数据格局,同步信号内嵌于数据流中串行输出,也能够独自引脚与数据流并行输出。TVP5150能够输出8位4:2:2的ITU—R BT.656信号或8位4:2:2的ITU—R BT.601信号,这和S3C6410的Camera模块的输入信号格局共同,为视频格局转化节省了很多作业,TVP5150解码器内部含有多个特别功用寄存器,可被编程运用I2C串行接口,用户经过I2C总线设置外部视频解码芯片TVP5150的内部寄存器,然后设定作业状况。TVP5150芯片的原理图如图2所示。
2 驱动规划
本体系驱动首要包含两大部分:处理器S3C6410的Camera接口驱动和视频解码器TVP5150驱动。Camera接口驱动为上层的运用程序供给了底层支撑,遵从V4L2规范;视频解码器TVP5150驱动完结了I2C设备的注册,遵从I2C通讯协议,完结了读写内部寄存器的接口函数。
2.1 Camera接口驱动
V4L2(Video For TWO)是Linux内核中关于视频设备的API接口,首要用来对视频设备进行开关、收集、输出等操作。在嵌入式体系中多选用Linux作为其软件渠道,V4L2是Linux2.6选用的内核驱动模型,与之前版别的V4L存在很大不同。V4L2使在Linux下开发视频设备驱动程序具有共同的接口规范,这套规范给驱动程序开发供给了明晰的模型和接口。运用程序处于最上层,硬件设备处于最基层,这套规范就处于中间层。在Linux2.6发行版之前此类规范都是V4L,它将一切的视频设备驱动程序都放在其办理中,为编程人员减少了很多的作业。
本计划选用Linux为操作体系,内核版别为3.0.1,相对之前的linux2.6.28而言,内核版别进行了晋级,晋级之后的linux3.0.1版别兼容了更多的硬件,修正了之前体系中的bug和某些资源的抵触问题,体系安全功用得到了明显进步。Camera接口驱动正是依照V4L2规范来完结的。s3c_time_core.c文件完结了设备的注册和大部分体系调用,是驱动的中心,v4l2接口的ioctl体系调用依托s3c_time_v4l2.c来完结。
在Linux操作体系中,设备被映射为特别的文件,设备驱动程序为各种设备供给共同的拜访接口,运用程序经过调用open、close、rea d、write等函数去操作相应的设备文件来拜访设备。open()函数用来翻开视频文件设备;camera接口底层的读写用read()和write()完结;mmap()替代了曾经的copy_to_user()办法,用内存映射办法把设备内存映射到运用程序内存中,然后直接处理设备内存;当video_device装备结束,在s3c_time_probe()中经过video_register_device()函数完结注册。
2.2 TVP5150驱动
2.2.1 Linux下I2C驱动体系结构
I2C总线是由PHILIPS公司开发的微电子通讯操控范畴广泛选用的一种新式总线规范,用于衔接微操控器及其外围设备,其最首要的特色是简略性和有效性。Linux体系中把I2C设备当作一个一般的字符设备来处理,对I2C设备具有很好的支撑,Linux下的I2C体系结构分为3个组成部分:I2C中心、I2C总线驱动和I2C设备驱动。
I2C中心是内核用来保护和办理I2C的中心部分,供给了I2C总线驱动和设备驱动的注册,刊出办法,I2C总线驱动是对I2C硬件体系结构中适配器端的完结,首要包含了I2C适配器数据结构i2c_adapter、I2C适配器的algorithm数据结构i2c_algorithm和操控I2C适配器发生通讯信号的函数。I2C设备驱动是对I2C硬件体系结构中设备端的完结,设备一般挂接在受CPU操控的I2C适配器上,经过I2C适配器与CPU交流数据。I 2C设备驱动首要包含了数据结构i2c_driver和i2c_client,咱们需求依据具体设备完结其间的成员函数。Linux I2C体系结构图如图3所示。
2.2.2 TVP5150驱动完结
Linux3.0.1相对linux2.6.28而言驱动程序函数接口发生了一些改变,驱动程序进行了优化,TVP5150驱动具体完结如下:TVP5150驱动程序首要要完结对I2C core层的接口,用以挂接I2C adapter层来完结对I2C总线及I2C设备具体的拜访办法,首要包含需求编写TVP5150_ init()、TVP5150_probe()、TVP5150_remove()等接口函数。
tvp5150_init()初始化函数,首要调用i2C_add_driver(tvp5150_i2c_driver)增加设备驱动。
tvp5150_probe()在运用i2C_add_driver()注册时被调用,用来查看被发现的一切的I2C适配器是否契合I2C驱动的特定条件,假如契合相关条件则进行衔接,并通I2C适配器来完结对I2C总线及I2C设备的拜访。
tvp5150_remove()在删去Tvp5150时被调用,使Tvp5150解码器脱离I2C适配器,而且铲除描绘该设备相关数据结构。
本文的驱动程序首要完结以下环节:
首要增加了填充camera接口的结构体:static struct s3c_fimc_camera tvp5150_da-ta,结构体中首要描绘了摄像头的参数,比方图画尺度720×240,图画格局ITU_656_YCBCR422_8BIT,像素频率27 MHz等。这些数据在初始化camera接口时要用到。在tvp5150_probe(struct i2c_client*c,const structi2c_device_id*id)函数中增加了一个函数接口s-3c_fime_register_camera(tvp5150_data)用于把上面这个结构体填入struct s3c_fimc_config s3c_fimc这个全局变量中,其次界说tvp5150驱动装备参数的结构体tvp5150_i2c_driver,在tvp5150_in it()函数中调用i2c_add_driver(tvp5150_i2c_driver)增加驱动,之后tvp5150_probe()被调用时tvp5150_attach_adapter()会被调用,经过遍历体系中的一切I2C总线驱动来勘探Tvp5150,然后调用内核中现已注册的适配器来衔接Tvp5150。tvp5-150_attach_adapter()函数首要调用i2c_detect(adapter,driver)函数来勘探设备,勘探到方针设备之后创立一个strnct i2c_client结构来标识这个设备。
初始化Tvp5150内部特别功用寄存器的操作首要经过tvp5150_probe()函数来完结,函数中调用i2c_smbus_write_byte_data(c,TVP5150 _init_reg[i].subaddr,TVP5150_init_reg[i].value)来完结寄存器的设置,然后完结了初始化tvp5150的进程。其图画收集驱动流程图如图4所示。
3 驱动移植和相关试验成果
1)驱动程序编写好之后,在Kconfig-camera文件中增加与驱动相对应项目的编译装备选项:
config TVP5150
bool“TVP5150”
depends on VIDEO_FIMC
—help—
LYT TVP5150 camera module support
2)在Makefile文件中增加对驱动的编译条目:
obj-$(CONFIG_TVP5150)+=tvp5150.o
3)修正mach-smdk6410.c文件:
在i2c_board_info i2c_devs0[]_initdata结构体中{I2C_BOARD_INFO(“ov965x”,0x30),},句子后边增加{I2C_BOARD_INFO(“tvp51 50”,0x5c),},
4)进入linux-3.0.1内核目录,履行make menuconfig进行相关的装备:
其间External Camera(TVP5150)——>
ResetType(0=low,1=high)前面的挑选框里要挑选0
5)进入内核目录履行make zImage,重新编泽内核,生成内核文件,将新的内核烧写到开发板,运转测验程序即可测验到视频设备收集到的实时图画,如图5~7所示。
4 结束语
经过开发实例具体介绍了宠物智能喂养体系视频收集的驱动规划,完结了TI公司视频解码芯片TVP5150驱动程序的规划,并成功移植到开发板上,具有较高的性价比,可用于视频收集、长途监控等很多范畴,该体系视频监控的完结满意了长途实时观看宠物进食和活动状况的需求,对宠物关照体系的进一步完善供给了协助,在实践测验中,该体系测验成果令人满意,完结了对宠物长途守时定量的喂养,该体系本钱很低,具有很好的运用和推行价值。