基于ARM嵌入式IPCamera的设计与实现

发布者:科技飞翔最新更新时间:2012-07-11 来源: 21ic 关键字:ARM  嵌入式  IPCamera 手机看文章 扫描二维码
随时随地手机看文章

0 前言

随着社会的发展,人们对安全防范工作日益重视,监控产品也从以前只在重要单位使用发展到各个领域都在应用。监控产品的技术也从模拟向数字和网络技术发展。网络监控产品使用较多的是硬盘录像机,但价格比较高。有些场合对监控的要求并不高,也不需要录像,但有时又要在远程了解一下当地的画面,这时就希望使用一种低价的,又能实现远程操作的监控产品。所以就计划设计IPCamera(网络照相机),它能够接受网络或手机短信发来的命令进行拍照,并将照片发布到Web服务器上或手机上供用户浏览。

1  IPCamera系统总体设计

       IPCamera系统的总体设计思路是:采用ARM9作为系统的处理器,利用普通USB摄像头完成图像采集。系统设计一块网卡和一个GPRS模块,用户可以根据需要决定选用其中的一种、或者二种同时使用。手机能够通过GSM网向IPCamera的GPRS发送拍照控制命令,系统会自动将拍下的照片通过GPRS模块发回给手机;网络用户可以利用telnet协议向IPCamera发送拍照控制命令,然后再利用浏览器查看IPCamera上的照片。

2  IPCamera的硬件设计

在设计IPCamera时,考虑到系统的稳定性和成本等因素,因此将系统硬件设计为3个部分,即核心板、主板和GPRS模块,如图1所示。

核心板采用三星公司生产的S3C2410处理器;SDRAM采用2片HY57V561620AT-H构成64M;将它连接到系统nGCS6,所以它的起始地址为:0x03000000。NAND FLASH 采用SAMSUNG K9F1208芯片,FLASH芯片连接到系统的nGCS0,所以它的起始地址为:0x00000000。要系统从NAND FLASH启动,应将S3C2410的OM0和OM1引脚都接地。

主板主要是一些接口电路。串行接口采用MAX3232芯片,由于本系统只使用一个串口,所以和S3C2410的TXD0和RXD0相连,构成第一个串口电路。JTAG接口直接由S3C2410处理器控制,只不过在连接电路上要加上接电阻。USB接口电路直接采用S3C2410内部的USB主机控制器,然后接上限流电阻和保险丝和USB插座。网卡采用AX88796-X86芯片,接在BANK2的位置上,所以片选接处理器的nGCS2信号,其地址为0X200,所以IO_BASE0、IO_BASE1、IO_BASE2三个引脚悬空,中断选用INT2。网卡的逻辑地址是0x10000200。

GPRS模块采用SIMCOM公司生产的SIM100-E芯片。通过第三个串口信号线TXD2和RXD2和处理器相连接。

 

图1 IPCamera硬件结构图

3  IPCamera引导程序、操作系统和驱动程序

IPCamera引导程序选用韩国Mizi公司开发的vivi。vivi必须经过裁剪、交叉编译、下载到IPCamera等几个过程。首先使用make menuconfig命令裁剪vivi,然后make命令编译生成vivi的二进制镜像文件,使用的编译器是armv4l-unknown-linux-gcc和armv4l-unknown-linux-as,最后使用JTAG将vivi烧写到IPCamera的flash芯片上。

考虑到成本,以及系统对实时性的要求不高等因素,所以决定选用Linux操作系统。目前发行的Linux操作系统都能支持ARM机的体系结构,所以只要根据平台的具体结构进行移植。系统移植主要包括建立交叉编译环境、修改内核源码、内核裁剪和内核编译4等个环节。内核裁剪时,要让系统包括telnet和ftp服务。telnet服务主要实现能够对IPCamera远程操作,ftp服务主要实现IPCamera的文件上传和下载。最后将编译好的内核映象文件利用vivi软件烧写到IPCamera的flash芯片上。

IPCamera需要串口、USB、视频设备和网卡等多个设备驱动程序[2],由于这些设备都是标准设备,所以可以到厂家去下载相应的设备驱动源程序,然后交叉编译成Linux下的驱动程序,最后通过insmod[3]命令向内核加载驱动程序。如:Linux系统提供了视频设备的内核驱动video4linux(简称V4L),它为视频设备的应用程序编程提供一系列接口函数,所以USB摄像头

就可以采用V4L驱动程序。

4  IPCamera应用程序的设计

IPCamera主要包括3个应用程序,即:USB摄像头拍照、Web服务和GPRS操作控制等程序。这些应用程序都是用C语言来编写,然后通过交叉编译生成可执行文件。

4.1  USB摄像头拍照程序的设计

USB摄像头采用video4linux驱动,V4L图像采集的方法有两种,即overlay和mmap。本系统采用mmap,这种方法是通过将设备文件影射到内存的方法,直接通过指针操作内存的方式读取摄像头采集到的图像数据。控制拍照功能函数如下:

int cap(char * fileName)

{┅

       /***初始化设备***/

if (device_init(DEFAULT_DEVICE, &vd, 0, 3) == -1)

    {   perror("device_init: failed...");

        return -1;  }

        /***内存映射***/

    if (v4l_grab_frame(&vd, 0))

            return -1;

    if (v4l_grab_sync(&vd))

            return -1;

    img = device_get_address(&vd);

        /***读取图像数据***/

    p=img;

    for (i=0;i

        for (j=0;j

            { tmpc=*(p);

              *(p)=*(p+2);

              *(p+2)=tmpc;

              p+=3;  }[page]

/***转换图像数据格式,保存为jpg文件***/

    if (write_jpeg(fileName, img, 70, 0))

        return -1;

}

4.2  Web服务程序的设计

Web服务是通过http协议与客户端通信,工作流程如图2所示。http是一个请求、响应协议,即客户端发出一个请求,服务器端则响应这个请求。http利用可靠的TCP协议连接,默认使用80端口。目前市场上有许多Web 服务程序,但要将其移植到本系统中需要一定的工作量,所以可以设计一个简单的Web服务程序。程序的主函数如下:

 

图2 Web工作流程图

int main(int argc, char *argv[])

{┅

  /*设置信号处理句柄*/

  signal(SIGCHLD, SIG_IGN);

  signal(SIGPIPE, SIG_IGN);

   ┅

  /*建立TCP流SOCKET*/

  if (argc > 1 && !strcmp(argv[1], "-i")) {

    fclose(stderr);

    HandleConnect(0);

    exit(0);

  }

  if((s = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) == -1) {

    perror("Unable to obtain network");

    exit(1);

  }

  if((setsockopt(s, SOL_SOCKET, SO_REUSEADDR, (void *)&true,

         sizeof(true))) == -1) {

    perror("setsockopt failed");

    exit(1);

  }

  server_sockaddr.sin_family = AF_INET;

  server_sockaddr.sin_port = htons(SERVER_PORT);

  server_sockaddr.sin_addr.s_addr = htonl(INADDR_ANY);

  /*绑定监听端口*/

  if(bind(s, (struct sockaddr *)&server_sockaddr,

      sizeof(server_sockaddr)) == -1)  {

    perror("Unable to bind socket");

    exit(1);[page]

  }

 /*设置允许客户连接数*/

  if(listen(s, 8*3) == -1) {

    perror("Unable to listen");

    exit(4);

  }

/*侦听客户连接请求并进行处理*/

   while (1) {

    len = sizeof(ec);

    if((fd = accept(s, (void *)&ec, &len)) == -1) {

      exit(5);

      close(s);

    }

    HandleConnect(fd);

 }

4.3 GPRS操作控制程序设计

    GPRS操作程序主要任务是监视手机短信,然后根据短信决定具体操作。程序主要利用GPRS的AT命令和SOCKET套接字来完成短信发送和图片传输。GPRS操作程序主函数如下:

main()

{┅

    { /**根据条件拍照***/

    if(TakePicture==TRUE)

      { remove("1.jpg");

        rename("2.jpg","1.jpg");

        ┅

        rename("6.jpg","5.jpg");

        cap("6.jpg");

      }

 /**根据条件给手机发图片***/

   if(SendPicture==TRUE)

        SendPicToMob("6.jpg");

}

}

5 结束语

在样机中,硬件由3部分组成,即:核心板、主板和GPRS模块;引导使用vivi;操作系统采用linux2.6.0。系统经过测试,效果较好。本文作者创新点是:利用GSM网络和Internet网络控制远程拍照,并将拍下的照片发布在Internet供用户浏览。这种产品体积小、可靠性高、无需专人管理,非常适合于无人值守的环境。它将会有较好的应用前景。

参考文献:

[1] 李军华,尹文明.基于GPRS的大棚智能监控系统[J].电子技术应用,2006,8:83-85.

[2] 朱华生,叶军. 嵌入式系统IIC设备驱动程序设计与实现[J].微计算机信息,2006,(10-2):120-123.

[3] 朱华生,胡凯利.基于Linux系统的HHARM9电机驱动程序设计[J].南昌工程学院学报.2005,4:51-53.

关键字:ARM  嵌入式  IPCamera 引用地址:基于ARM嵌入式IPCamera的设计与实现

上一篇:基于ARM的无线气象数据通信系统设计
下一篇:调查称98%平板电脑使用ARM芯片

推荐阅读最新更新时间:2024-03-16 13:03

ARM学习笔记】一、S3C2440A官方简介
S3C2440A 是三星公司推出的16/32位精简指令集(RISC)微型处理器,它基于ARM v9系列的ARM920T核心,主要为手持设备和普通应用提供了低功耗的高性能的小型芯片微型控制器的解决方案。 S3C2440A 的突出特点是其处理器核心,是一个由Advanced RISC Machines(ARM)公司设计的16/32 位ARM920T 的RISC 处理器。ARM920T 实现了MMU,AMBA 总线和哈佛结构高速缓冲体系结构。这一结构具有独立的16KB 指令高速缓存和16KB 数据高速缓存。每个都是由具有8 字长的行(line)组成。 综合对芯片的功能描述,S3C2440A 集成了的以下片上功能: ● 1.2
[单片机]
ARM-GCC-LD脚本
从以前的经验,链接脚本是嵌入式开发,单片机开发相当重要的一个东西。它完成的工作是做PC机软件的同志们不用关心的,但是也是很复杂的一项工作。总结来看链接脚本要告诉连接器 1:输出什么 2:输入是什么,那么obj文件 3:要用什么库,库放在什么地方 4:内存分布地址 5:提供启动代码一些全局地址变量 一般来说链接脚本需要搞清楚这几样事情后才能编写,那arm-gcc-ld的脚本也一定要实现这些功能。对于大多数的链接器来说,对于简单的项目不需要脚本,只是使用命令参数就可以完成了。 MEMORY: 它是用来补充SECTIONS命令的,用来描述目标CPU中可用的内存区域。它是可选的,如果没有这个命令,LD会认
[单片机]
英国保守党议员:英国政府应出手,避免Arm“击鼓传花”
《金融时报》近日刊发英国保守党议员,英国外交事务专责委员会成员Tom Tugendhat文章。文章认为,英国政府应该出手拯救Arm。 文章认为,英国脱欧公投后,英国政府急于向世界表明真的要走向全球以示开放,为此英国政府决定将其国宝级的Arm出售给软银。此次出售旨在为英国唯一的顶尖半导体高科技企业提供一个“长期的居所”,软银承诺将确保Arm的创新能力和技术研究基地的安全。 文章指出,但当时有两件至关重要的事情尚不清楚。首先,在地缘政治紧张局势加剧之际,Arm在保护国家安全和维持全球竞争力方面是否会发挥关键作用。其次,软银本身将过度扩张。三年多后,Arm成为了牺牲品,面临转售给美国芯片公司英伟达的局面。 国家安全和竞争面临的风险不
[手机便携]
军用嵌入式系统的可靠性设计
0 引言 目前用于机电一体化和工业自动控制的嵌入式系统,最早出现在20世纪60年代的武器控制系统之中,后来逐步用于军事指挥和通信。到了上世纪80年代,美军先进的武器系统基本都装备了嵌入式计算机。之后又经过几十年的发展,如今的嵌入式系统已广泛应用在各国军队的武器控制、指挥控制以及各种通信装备、野战指挥作战等专用设备上。 1 可靠性是军用嵌入式系统的重要因素 嵌入式系统往往工作环境恶劣、受电噪声干扰较大,而且随着软件越来越复杂,系统运行不稳定的现象愈来愈严重,因此,可靠性已经成为衡量嵌人式系统优劣的重要因素;军用嵌入式系统更应高度重视其可靠性设计、测试和评估技术,应把可靠性作为嵌入式系统最重要的指标优先考虑。这一方面是因为嵌入式
[嵌入式]
回击ARM 英特尔将提供定制化X86处理器
据国外媒体报道,在新任CEO Brian Krzanich和新总裁Renée James掌管下的英特尔公司在策略上将面临一系列转变:这家芯片巨头希望进军除个人电脑和传统服务器市场以外的计算领域,扩大竞争优势。 其中即包括为大型客户的服务器提供定制化X86处理器。英特尔过去曾在这方面做过一些尝试,现在则要与ARM及ARM的合作伙伴展开定制化竞争。 英特尔此举也在意料之中,大家都希望处理器厂商应该提供带深度排序算法的芯片,芯片的器件应更耐高温,它们的电压和时钟频率是可改变的,以适应特别 的温度环境。用户还期望芯片在因超频而超过标准处理器温度时的限时性能更理想。(在这方面ARM已有多年经验,而且还做得更全面:这家英国的处理器核心
[单片机]
在Ubuntu上建立Arm Linux 开发环境
我使用的是友善2410的板子,以前都是用Fedora,现在家里的电脑被我转为Linux专用的了,装的是Ubuntu。但是嵌入式还是要玩的,在装载过程中也遇到一些小麻烦。在此记录一下,一来自己比较健忘,二来也希望能给一些没弄过的人一点启示。 目的: 把ARM linux的交叉开发环境,kernel, filesystem, bootloder安装,并配置,使其可以编译bootloder, kernel, 可以nfs更新文件系统; 资源: 代码: arm-linux-toolchains.tgz matrix5-kernel-v5.5.tgz vivi.tar.gz Jflash.tgz root-for-nfs-v5.5
[单片机]
ARM汇编指令集4
协处理器cp15操作指令: mcr & mrc •mrc用于读取CP15中的寄存器 •mcr用于写入CP15中的寄存器 什么是协处理器? •SoC内部另一处理核心,协助主CPU实现某些功能,被主CPU调用执行一定任务。 •ARM设计上支持多达16个协处理器,但是一般SoC只实现其中的CP15.(cp:coprocessor) •协处理器和MMU、cache、TLB等处理有关,功能上和操作系统的虚拟地址映射、cache管理等有关。 MRC & MCR的使用方法 •mcr{ cond } p15, opcode_1 , Rd , Crn , Crm , { opcode_2 } •opcode_1:对于cp15永远为0 •R
[单片机]
基于FPGA+DSP+ARM的数据传送总线变换器
  在飞控组件测试时,由于被测系统与上位机有一定距离,如果直接把遥测并行数据传送到上位机,将会出现数据信号的衰减和信号延时问题,有可能使信号时序错位,从而达不到系统测试的要求。为此,需要研制一种数据传送总线变换器,用来完成被测数据无失真的、实时的、远距离与上位机的通信,并能接收上位机的控制指令,实现工作状态的远程交互。   1 数据传送总线变换器的整体设计   综合考虑到测试系统实时性和可靠性的要求,选择以太网口作为数据传送总线变换器与上位机的数据转发接口,以高速串口作为控制口,采用FPGA+DSP+ARM的架构作为实时信息处理平台。   数据传送总线变换器的系统框图如图1所示。其中,FPGA作为数据预处理器,完成并行数据到
[单片机]
基于FPGA+DSP+<font color='red'>ARM</font>的数据传送总线变换器
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
  • 学习ARM开发(16)
    ARM有很多东西要学习,那么中断,就肯定是需要学习的东西。自从CPU引入中断以来,才真正地进入多任务系统工作,并且大大提高了工作效率。采 ...
  • 学习ARM开发(17)
    因为嵌入式系统里全部要使用中断的,那么我的S3C44B0怎么样中断流程呢?那我就需要了解整个流程了。要深入了解,最好的方法,就是去写程序 ...
  • 学习ARM开发(18)
    上一次已经了解ARM的中断处理过程,并且可以设置中断函数,那么它这样就可以工作了吗?答案是否定的。因为S3C44B0还有好几个寄存器是控制中 ...
  • 嵌入式系统调试仿真工具
    嵌入式硬件系统设计出来后就要进行调试,不管是硬件调试还是软件调试或者程序固化,都需要用到调试仿真工具。 随着处理器新品种、新 ...
  • 最近困扰在心中的一个小疑问终于解惑了~~
    最近在驱动方面一直在概念上不能很好的理解 有时候结合别人写的一点usb的例子能有点感觉,但是因为arm体系里面没有像单片机那样直接讲解引脚 ...
  • 学习ARM开发(1)
  • 学习ARM开发(2)
  • 学习ARM开发(4)
  • 学习ARM开发(6)
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved