新闻中心

EEPW首页>嵌入式系统>设计应用> 基于OMAP5912远程视频监控系统的设计与实现

基于OMAP5912远程视频监控系统的设计与实现

作者:刘明兰 罗伟武汉理工大学自动化学院 时间:2009-05-19 来源:电子产品世界 收藏
  (5)挂载根文件系统
  在应用程序的开发过程中,一般通过网络以N FS方式来挂载在L inux主机上的文件系统, 这样就不必要每次有改动都要重新烧写文件系统的镜像文件。它的实现基于对主机进行相应的配置并启动N FS 服务, 向Linux 主机的/etc/exports文件添加下列一行:
  /home/luowei/montavista/filesys *(rw,no_root_squash,no_all_squash,sync)
  并运行下列命令使得设置生效:
  #exportfs –a
  #service nfs restart
  说明:/home/luowei/montavista/filesys为本人宿主机上的根文件系统,可以根据实际情况修改。
  (6)系统测试
  在/home/luowei/montavista/filesys/home建立一个hello.c文件,并使用如下命令编译成目标板可执行文件hello:
  /opt/montavista/previewkit/arm/v4t_le/bin/arm_v4t_le-gcc –o hello hello.c
  进入目标板上相同目录并执行./hello,若能正确运行,表明系统搭建成功。
  2)视频采集和编码
  (1)摄像头驱动程序设计
  驱动程序的作用在于把设备映射为一个特殊的设备文件, 用户程序可以像对其它文件一样对此设备文件进行操作[2]。系统的摄像头驱动程序包括摄像头打开模块Camera_Open()、摄像头控制模块(包括中断请求,摄像头初始化、启动、摄像头寄存器设置、DMA请求及启动)和摄像头关闭模块Camera_Release()。然后将驱动程序定义在struct file_operations中,供内核Video4Linux的API函数调用。考虑到Linux自带OV511的驱动程序,设计采用OV511芯片的网眼摄像头OV3000。
  (2)视频采集
  设计使用Video4Linux模块[5]提供的API函数进行视频采集,主要函数包括:
  ①dev?=?open(Camera_Open?,O_?RDWR);打开视频捕获设备。
  ②ioctl?(dev?,?VIDIOCGCAP?,?&vid_
  caps)?获取该视频设备的相关性能。
  ③ioctl?(dev?,?VIDIOCGCHAN?,?&vid_
  chnl);获取摄像头通道的相关参数。
  ④ioctl?(dev?,?VIDIOCGFBUF?,?&vid_
  buf)?;获取帧缓冲的属性。
  ⑤ioctl?(dev?,?VIDIOCGPICT?,?&vid_pi);获取图片采集的设置。
  ⑥ioctl?(dev?,?VIDIOCSPICT?,?&vid_pic);设置图片采集的相关参数,包括颜色深度、调色板类型、亮度、对比度等。
  ⑦ioctl?(dev?,?VIDIOCSWIN?,?&vid_win);设置图像采集的视区参数。
  ⑧fwrite?(m_buf?,1?,230400?,p)?;采集的数据存入。
  ⑨ioctl?(?dev?,?VIDIOCMCAPTURE?,?
  &vid_mmap);开始俘获一帧。
  设计中使用内存映射mmap()[3]方式截取视频帧,即先使用ioctl()函数获得摄像头存储缓冲区的帧信息,之后修改video_mmap中的设置,接着使用mmap()把摄像头对应设备文件映射到内存区,完成视频采集。
linux操作系统文章专题:linux操作系统详解(linux不再难懂)


评论


相关推荐

技术专区

关闭