基于ARM嵌入式的远程监控系统设计

发布者:ularof不加糖最新更新时间:2011-06-22 来源: 微计算机信息关键字:ARM  μC/OS-II  µCGUI  远程监控 手机看文章 扫描二维码
随时随地手机看文章

1 引言 

  监控系统现已成为现代化生产、生活中不可缺少的重要组成部分。目前,监控系列产品 种类繁多,大部分广泛应用于交通、医院、银行、家居、学校等安防领域。

  随着嵌入式系统的出现,尤其是基于 arm 内核芯片的嵌入式系统的出现,使得监控系统的应用领域更为广泛。本文设计的远程监控报警系统除了作为安防功能外,还可以应用于 以下领域:通讯领域:远程通讯、视频会议和视频点播、证券、远程教育等。医疗领域:病 房监护、远程诊断等。工业领域:远程设备诊断、维护、维修,远程生产监控等。家用领域:家用电器远程维护;电、气、火等重大事故自动报警等。

2 系统设计

  2.1系统组成 

  本文设计的远程监控系统主要由中心控制器、数据终端、传感器模块、通讯模块、接口模块等几部分组成。系统组成图(如图 1)。

  2.2中心控制器 

  系统核心负责数据采集判断处理。为了提高系统工作效率,这里使用的是三星公司的 S3C2410芯片作为处理器。S3C2410 芯片是一款高性价比的 ARM 芯片,非常适合作手机、PDA 等手持设备。主要特性包括: arm920T 内核,最高工作频率 203MHz,LCD 控制器:可直接驱动真彩液晶屏,最高支持 2048×1024 真彩液晶屏,2 个 USB Host端口,1 个USB Device端口,支持 Nand flash 启动模式,SD 卡接口,UART、IIC、SPI、IIS 等多种类 型串行接口, 4 通道DMA。

  本文的监控系统的 CPU 核心部分使用的是标准的 SO-DIMM200 金手指接口,便于后期 维护和升级。如果该监控系统的使用环境较为苛刻,可以将 CPU替换为S3C2440芯片。 S3C2440完全兼容S3C2410全部特性(注意:芯片引脚不完全兼容)。与S3C2410芯片相比,S3C2440的性能更为优越:最高工作频率可达500MHz,内部集成CMOS摄像头接口,但价格较昂贵。

  2.3数据终端 

  数据终端的主要功能是对监控数据进行分析、处理,及时将数据汇报给监控人员。同时,监控人员可以根据现场情况,使用数据终端对监控的设备进行远程控制。数据终端最大优势 就是安全、可靠、便于携带。一般情况下为了节约成本,可以将手机、PDA 等移动通讯设 备作为数据终端使用。但是如果作为对高危环境或精密仪器的监控系统,数据终端需要专业 定制。这里使用的是中心控制器的作为数据终端,即中心控制器既作为数据采集发送中心,也可数据接收处理中心使用。

  2.4通讯模块 

  通讯模块主要负责远程数据通讯。带有 RS232/485、GPRS、CDMA 等一种或多种通讯 方式。需要根据现场环境和用户需要进行定制。通讯模块与控制器通过接口总线连接,连接 方式为 TTL/RS232/RS485 等。

  2.5传感器模块 

  传感器模块的主要功能是感知外部环境,对外部环境进行实时监测。由人体红外传感器、 振动传感器、超声波传感器、可燃气体传感器、温度传感器、湿度传感器等一种或多种传感 器组成。可根据现场监测环境不同进行定制。

  2.6接口模块 

  接口模块主要作为系统扩展功能使用,将控制器的 A/D 转换、I2C、SPI 等多种接口进行 外部扩展。接口模块没有特定的功能,但可以根据需要与其他设备连接,例如可以与工业仪 器仪表或设备连接,实时对仪器或设备进行监控。

  接口模块虽然不是监控系统的主要部分,但是对于整个系统来说却是不可缺少。因为本文的监控系统主要考虑到了系统的可扩展性和与其它系统无缝连接。通过接口模块可以很方 便的对监控系统进行升级,并且可以实现与其他系统或设备的无缝连接。这也是本系统区优 于其他监控系统的主要功能。

3 软件设计

  3.1工作软件 

  系统的软件设计较为复杂,这里只给出了整个工作软件流程(如图 2)。

  3.2操作系统移植 

  S3C2410 芯片支持多种嵌入式操作系统,如 WINCE、uCLinux 等。但考虑到监控系统 的实时性要求,这里使用的是 μC/OS-II 嵌入式实时操作系统。μC/OS-II 是一个源码公开、可 移植、可固化、可裁剪、占先式的实时多任务操作系统。其绝大部分源码是用 ANSI C 写的。 整个嵌入式系统分为两大层:硬件层和软件层。这里主要研究软件层的架构。软件层主 要分为四个部分:实时操作系统内核,与处理器相关部分,与应用程序相关部分,用户的应用程序。移植 μC/OS-II 系统需要修改的文件有:应用程序相关文件: OS_CFG.HINCLUDE.H; 处理器相关文件: OS_CPU.H、 OS_CPU_A.ASM、OS_CPU_C.C。

  3.2.1 与处理器相关的代码 

  这是移植中最关键的部分。内核将应用系统和底层硬件有机的结合成一个实时系统,要 使同一个内核能适用于不同的硬件体系,就需要在内核和硬件之间有一个中间层,这就是与 处理器相关的代码。处理器不同。这部分代码也不同。我们在移植时需要自己移植这部分代 码。

  a)OS_CPU.H 

  包括了用#define 定义的与处理器相关的常量,宏和类型定义,有系统数据类型定义,栈 增长方向定义,关中断和开中断定义,系统软中断的定义等等。

  b)OS_CPU_A.ASM 

  这部分需要对处理器的寄存器进行操作,所以必须用汇编语言来编写。包括四个子函数: OSStartHighRdy(),OSCtxSw(),OSIntCtxSw(),OSTickISR()。OSStartHighRdy()在多任务 系统启动函数 OSStart()中调用。完成的功能是:设置系统运行标志位 OSRunning = TRUE; 将就绪表中最高优先级任务的栈指针 Load 到 SP 中,并强制中断返回。这样就绪的最高优先 级任务就如同从中断里返回到运行态一样,使得整个系统得以运转。OSCtxSw()在任务级任 务切换函数中调用的。任务级切换是通过 SWI 或者 TRAP 人为制造的中断来实现的。ISR 的向 量地址必须指向 OSCtxSw()。这一中断完成的功能:保存任务的环境变量(主要是寄存器的值, 通过入栈来实现),将当前 SP 存入任务 TCB 中,载入就绪最高优先级任务的 SP,恢复就绪最高 优先级任务的环境变量,中断返回。这样就完成了任务级的切换。

  OSIntCtxSw()在退出中断服务函数 OSIntExit()中调用,实现中断级任务切换.由于是在中断里调用,所以处理器的寄 存器入栈工作已经做完,就不用作这部分工作了。具体完成的任务;调整栈指针(因为调用 函数会使任务栈结构与系统任务切换时堆栈标准结构不一致),保存当前任务 SP,载入就绪 最高优先级任务的 SP,恢复就绪最高优先级任务的环境变量,中断返回。这样就完成了中断 级任务切换。OSTickISR()系统时钟节拍中断服务函数,这是一个周期性中断,为内核提供时钟节拍。频率越高系统负荷越重。其周期的大小决定了内核所能给应用系统提供的最小时 间间隔服务。一般只限于 ms 级(跟 MCU 有关),对于要求更加苛刻的任务需要用户自己建立中 断来解决.该函数具体内容:保存寄存器(如果硬件自动完成就可以省略),调 OSIntEnter(), 调用 OSTimeTick(),调用 OSIntExit(),恢复寄存器,中断返回。

  c) OS_CPU_C.C 

  该文件中共定义了 6 个函数,但是最重要的是 OSTaskStkInit().其他都是对系统内核的扩展时用的.OSTaskStkInit()是在用户建立任务时系统内部自己调用的,对用户任务的堆栈 进行初始化。使建立好的进入就绪态任务的堆栈与系统发生中断并且将环境变量保存完毕时 的栈结构一致。这样就可以用中断返回指令使就绪的任务运行起来。

  3.2.2与应用相关的代码 

  这部分包括两个文件:OS_CFG.H, INCLUDES.H。 用户根据自己的应用系统来定制合适 的内核服务功能。OS_CFG.H 来配置内核,用户根据需要对内核进行定制,留下需要的部 分,去掉不需要的部分,设置系统的基本情况。比如系统可提供的最大任务数量,是否定制 邮箱服务,是否需要系统提供任务挂起功能,是否提供任务优先级动态改变功能等等。 INCLUDES.H 系统头文件,整个实时系统程序所需要的文件,包括了内核和用户的头文件。

  3.3用户图形接口 

  虽然 μC/OS-II 操作系统具有很高的实时性,但不像 WINCE、uCLinux 等操作系统那样 有良好的图形界面支持。所以,在使用液晶和触摸屏的情况下需要移植用户图形接口程序。这里使用的是 μC/GUI。μC/GUI 是一个软件模块集合,通过该模块可以在我们的嵌入式产品 中加入用户图形接口(GUI)。μC/GUI 具有很高的执行效率,并且与处理器和 LCD 控制器相 独立。该模块可以工作在单任务或者多任务环境,可以支持不同大小的显示方式。

  通过 μC/GUI 我们可以很方便的在液晶屏绘制图形和界面。如果需要多种字体支持,必 须自己将相应的字体字库加入到 μC/GUI 中。为了避免出现乱码,尽量使用 GB2312 国标字库。

  3.4关于字库的兼容性问题 

  我们国内通常使用的汉字字库是 GB 码,但国际上使用的是 UNICODE 码 ,所以如果数据终端使用的是手机、PDA 等移动通信设备,那么在数据发送前必须进行字码转换,即 GB 码 转换为 UNICODE 码或者 UNICODE 码转换为 GB 码。由于 GB 码与 UNICODE 码在排列组合上没有任何规律,所以通常字码转换的方法就是 查表法。

4 结束语 

  基于 arm9 嵌入式系统的远程监控系统与以往的监控系统不同,高性能的处理器芯片大 大提高了系统的性能。使监控系统能够工作在比较恶劣的环境中。并且在设计上充分考虑到 了系统的可扩展性和兼容性问题,实现了本系统与其他系统的无缝连接。以满足不同工作环 境的需要。
 

关键字:ARM  μC/OS-II  µCGUI  远程监控 引用地址:基于ARM嵌入式的远程监控系统设计

上一篇:新型无电池监控装置 可植入皮肤内远程传输
下一篇:详解宽动态摄像机的两种技术

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

arm汇编b,bl指令浅析
B或BL指令引起处理器转移到“子程序名”处开始执行。两者的不同之处在于BL指令在转移到子程序执行之前,将其下一条指令的地址拷贝到R14(LR,链 接寄存器)。由于BL指令保存了下条指令的地址,因此使用指令“MOV PC ,LR”即可实现子程序的返回。而B指令则无法实现子程序的返回,只能实现单纯的跳转。用户在编程的时候,可根据具体应用选用合适的子程序调用语句。 AREA Init,CODE,READONLY ;该伪指令定义了一个代码段,段名为Init,属性只读 ENTRY ;程序的入口点标识 . . bl delay ;调用延迟 . . mov pc,lr ;返回 下面的在B
[单片机]
ARM7嵌入式系统中启动程序的实现
在我们研制开发基于ARM7的嵌入式系统过程中,发现技术难点主要在于系统启动程序的编写,为此本文详细论述了在arm7基础上开发嵌入式系统时启动程序的实现。 1.启动程序流程 嵌入式系统的资源有限,程序通常都是固化在ROM中运行。ROM中程序执行前,需要对系统硬件和软件运行环境进行初始化,这些工作由用汇编语言编写的启动程序完成。 启动程序是嵌入式程序的开头部分,应与应用程序一起固化在ROM中,并首先在系统上运行。它应包含进各模块中可能出现的所有段类,并合理安排它们的次序。 写好启动程序是设计好嵌入式程序的关键,系统启动程序所执行的操作依赖于正在开发其软件的系统,一般流程如下: 进入应用程序主循环 2.详细步骤 ⑴设置入口指针 启动程序
[单片机]
基于FPGA的ARM并行总线研究与仿真
0 引言 在数字系统的设计中,FPGA+ARM 的系统架构得到了越来越广泛的应用,FPGA 主要实现高速数据的处理;ARM 主要实现系统的流程控制.人机交互.外部通信以及FPGA 控制等功能.I2C.SPI 等串行总线接口只能实现FPGA 和ARM 之间的低速通信 ;当传输的数据量较大.要求高速传输时,就需要用并行总线来进行两者之间的高速数据传输. 下面基于ARM 处理器LPC2478 以及FPGA 器件EP2C20Q240,以ARM 外部总线的读操作时序为例,研究两者之间高速传输的并行总线;其中,数据总线为32 位;并在FPGA 内部构造了1024x32bits 的SRAM 高速存储缓冲器,以便于ARM 处理器快速读写F
[嵌入式]
基于FPGA的<font color='red'>ARM</font>并行总线研究与仿真
快速学Arm(33)--系统控制模块(2)
前面谈到了复位的问题,实际上四种复位的执行过程不是相同的.外部复位后,处理器首先判断P2.10的状态,从而决定是否允许ISP代码.而看门狗复位则无此功能.下面的图简要描述了外部复位的过程: 而下图则是看门狗复位的过程: 我们讲过的四种复位方式是有优先级的.为了区别四种复位源,寄存器RSID种有一个标志可以反映复位源. 上电复位的优先级最高,可以清除其他复位标志. 看门狗复位优先级最低,其他人员一类复位都可以清除其复位标志. 掉电检查复位和外部复位具有相同的优先级,不能相互清除中断标志. 让我们再看一下硬件复位的流程: 当CPU的1.8V电源达到1.65V时,片内RC震荡器开始起振,需要
[单片机]
快速学<font color='red'>Arm</font>(33)--系统控制模块(2)
杨叙:Intel内核Win8比ARM内核版体验
    英特尔中国区总裁杨叙 网易科技讯 6月25日消息,Windows 8即将发布给CPU厂商带来了新的竞争对手ARM,英特尔中国区总裁杨叙今日向网易科技表示,英特尔不怕竞争,只有intel内核才能给Windows 8的用户带来最好的体验。 微软的Windows 8全面支持ARM,而上周微软也发布了基于ARM和Intel内核和Windows 8操作系统的两款平板电脑。 ARM一直以来在移动领域以较低的功耗收到设备商的欢迎,不过基于Android系统的运行速度仍然赶不上PC,而Intel一直的问题是高性能但功耗不够。 杨叙表示,英特尔今年通过重回智能手机芯片的举动已经改变了这一观念,重新证明了自己,这也意味着用户在Intel内核的
[手机便携]
ARM下高效C编程
通过一定的风格来编写C程序,可以帮助C编译器生成执行速度更快的ARM代码。下面就是一些与性能相关的关键点: 1、对局部变量、函数参数和返回值要使用signed和unsigned int类型。这样可以避免类型转换,而且可高效地使用ARM的32位数据操作指令。 2、最高效的循环体形式是减计数到零(counts down to zero)的do-while循环。 3、展开重要的循环来减少循环的开销。 4、不要依赖编译器来优化掉重复的存储器访问。指针别名会阻止编译器的这种优化。 5、尽可能把函数参数的个数限制在4个以内。如果函数参数都存放在寄存器内,那么函数调用就会快得多
[单片机]
ARM全球总裁:上网本只是一个很小的市场
“尽管目前上网本(Netbook)很火,但是我们认为相对于其它电子产品,它仅是一个较小的市场,我们并不十分关注。”ARM公司全球总裁Tudor Brown在日前接受记者专访时表示。“虽然我们会推动XP以及Vista等开放操作系统在ARM平台上的应用,并且我们也有两个工程师长驻在微软,与他们进行这方面的工作。但是,至于微软对于ARM平台的策略如何,我们就无从知晓了。”他继续补充道。 尽管微软对于ARM架构的上网本好像不是很积极,但是这正好给了Linux机会。 上月,Canonical公司宣布将广受欢迎的、具有商业支持的Linux Ubuntu系统全面带入ARMv7架构。这一新加入的操作系统将使得上网本和混合计算
[手机便携]
基于ARM7的远程智能住宅控制装置的研制
  1 总体方案设计   如图l所示。智能家电控制系统由家庭智能控制模块、家庭内部网络系统、以及GPRS模块等几部分构成。   (1)家庭智能控制器:该部分是系统的核心。采用嵌入式系统设计,能够自动运行、处理数据,通过RS485总线管理和控制家庭系统。并且控制器通过GPRS模块,实现家庭系统与外部网络的通讯,使用户可以通过短信和互联网等方式实现家庭系统的远程控制,同时,控制器还通过键盘和显示屏为用户提供人机界面,方便用户实现本地控制。   (2)家庭系统:家庭系统通过单片机组成若干小的控制系统控制各家用设备,并通过统一的控制总线将这些小的控制系统组成网络,连接到家庭智能控制器,受家庭智能控制器控制。   家庭智能控制器系统
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
最新安防电子文章
换一换 更多 相关热搜器件
更多每日新闻

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 视频监控 智能卡 防盗报警 智能管理 处理器 传感器 其他技术 综合资讯 安防论坛

词云: 1 2 3 4 5 6 7 8 9 10

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

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