远程嵌入式

2024-06-16

远程嵌入式(精选十篇)

远程嵌入式 篇1

随着计算机通信技术的发展, 计算机网络监控已成为各种重要现场监控的必要技术手段, 对于远程监控使用无线远程监控已经成为控制领域的发展趋势。短消息是目前最广泛使用的通信方案之一, 它利用信令信道传输, 直接把要发送的信息加上目的地址发送到短消息服务中心, 再由短消息服务中心发送给最终的信宿, 具有实现简单、通信成本低、频谱利用率高、保密性好等特点。远程控制系统由主控端和被控端两部分组成。主控端用于实施各种对连网计算机的监控操作, 被控端对于接收到的数据进行分析, 解释并执行。本设计着重于主控端的设计与实现, 及整个获取被控端信息模块的设计与实现, 被控端通过单片机控制手机模块来实现数据传输的系统, 该系统采用短信息的方式传输数据, 该系统具有使用灵活、运行可靠等特点。

2 硬件系统设计

系统硬件主要由控制中心计算机、数据收发GSM模块、单片机控制板等部分构成。控制中心计算机使用的是一般的微机, 与数据收发GSM模块的连接, 是经过转换芯片MAX3238, 将TTL电平转换成RS-232电平[1], 然后与计算机串口直接连接;对于单片机控制系统, 与数据收发GSM模块的连接是通过转换芯片MAX232, 将TTL电平转换成RS-232电平, 然后与单片机开发板串口直接连接。

数据收发G S M模块:数据收发G S M模块主要由T C 3 5 i模块、SIM卡、接口电路、天线等组成, 核心是西门子公司的TC35i模块, 主要功能是通过移动通信网络进行远程数据传输。设计中选用西门子的TC35i模块, TC35i模块主要由GSM基带控制器、GSM射频模块、供电模块 (ASIC) 、闪存、ZIF连接器 (40引脚的应用程序接口) 、天线接口等部分组成。其各部分的组成如图1所示:

TC35i的数据接口 (CMOS电平) 实际上是一个串行异步收发器, 符合ITU-TRS232标准。具有8位数据位和1位停止位, 无校验位, 通过AT命令可双向传输指令和数据, 可选波特率为300b/s~115kb/s, 自动波特率为1.2kb/s~115kb/s, 硬件握手信号用RTS0/CTS0, 软件流量控制用XON/XOFF, CMOS电平。支持Text和PDU格式的SMS (Short Message Service, 短消息) , 可通过AT命令或关断信号实现重启和故障恢复。根据GSM 07.05的定义, 综合考虑设计需求成本和SMS短信息发送和接收的实现难易程度, 本设计中采用的是基于AT命令的Text模式。

3 软件系统设计

计算机控制界面采用的是VB 6.0, 控制界面十分方便, 功能强大。控制界面如图2所示。

计算机作为控制端克服了单片机不能存储大量的数据、实时更新数据等缺点。计算机控制端要进行对串口设备的初始化、发送信息 (通信信息和控制命令) 、接收终端返回的信息、实时处理信息、对信息进行存储、删除、查看等功能。

利用vb提供的MSComm控件控制串口事件[4,5], 实现计算机控制通信模块T C 3 5 i的信息处理。程序是通过对v b串行通信控件MSComm的Oncomm事件的查询来进行的。程序开始后要对调制解调器和串口进行初始化等。

4 结语

本设计成功的利用了VB来开发了一套实现短信息收发功能的信息系统, 能够通过PC机接收和发送短信, 达到了预期的结果。此外, 远程被控端即单片机控制板端通过串行口给远端的用户发送短信, 单片机能够正确接收GSM引擎模块发过来的信号, 对信号进行分析, 对被控对象进行控制。

参考文献

[1]吕延岗.集成GSM短消息的网络交互平台设计.河北省科学院学报, 2012年3月.

远程嵌入式 篇2

嵌入式医疗监护系统设计

一、整体设计

MSP430系列单片机是美国德州仪器(TI)1996年开始推向市场的一种16位超低耗(具有精简指令集的混合信号处理器(Mixed Signal Processor)。称之为混合信号处理器,是由于其针对实际应用需求,将多个不同功能的模拟电路、数字电路模块和微处理器集成在一个芯片上,以提供“单片”解决方案。该系列单片机多应用于需要电池供电的便携式仪器仪表中。MSP430特点

MSP430系列单片机是一个16位的单片机,采用了精简指令集(RISC)结构,具有丰富的寻址方式(7 种源操作数寻址、4 种目的操作数寻址)、简洁的 27 条内核指令以及大量的模拟指令;大量的寄存器以及片内数据存储器都可参加多种运算;还有高效的查表处理指令。这些特点保证了可编制出高效率的源程序。

MSP430 系列单片机能在25MHz晶体的驱动下,实现40ns的指令周期。16位的数据宽度、40ns的指令周期以及多功能的硬件乘法器(能实现乘加运算)相配合,能实现数字信号处理的某些算法(如 FFT 等)。

MSP430 单片机之所以有超低的功耗,是因为其在降低芯片的电源电压和灵活而可控的运行时钟方面都有其独到之处。

首先,MSP430 系列单片机的电源电压采用的是1.8-3.6V 电压。因而可使其在1MHz 的时钟条件下运行时,芯片的电流最低会在165μA左右,RAM 保持模式下的最低功耗只有0.1μA。

其次,独特的时钟系统设计。在 MSP430 系列中有两个不同的时钟系统:基本时钟系统、锁频环(FLL 和FLL+)时钟系统和DCO数字振荡器时钟系统。可以只使用一个晶体振荡器(32768Hz),也可以使用两个晶体振荡器。由系统时钟系统产生 CPU 和各功能所需的时钟。并且这些时钟可以在指令的控制下,打开和关闭,从而实现对总体功耗的控制。

由于系统运行时开启的功能模块不同,即采用不同的工作模式,芯片的功耗有着显著的不同。在系统中共有一种活动模式(AM)和五种低功耗模式(LPM0~LPM4)。在实时时钟模式下,可达2.5μA,在RAM 保持模式下,最低可达0.1μA。

MSP430 系列单片机的各系列都集成了较丰富的片内外设。它们分别是看门狗(WDT)、模拟比较器A、定时器A0(Timer_A0)、定时器A1(Timer_A1)、定时器B0(Timer_B0)、UART、SPI、I2C、硬件乘法器、液晶驱动器、10位/12位ADC、16位Σ-Δ ADC、DMA、I/O端口、基本定时器(Basic Timer)、实时时钟(RTC)和USB控制器等若干外围模块的不同组合。其中,看门狗可以使程序失控时迅速复位;模拟比较器进行模拟电压的比较,配合定时器,可设计出 A/D 转换器;16 位定时器(Timer_A 和 Timer_B)具有捕获/比较功能,大量的捕获/比较寄存器,可用于事件计数、时序发生、PWM 等;有的器件更具有可实现异步、同步及多址访问串行通信接口可方便的实现多机通信等应用;具有较多的 I/O 端口,P0、P1、P2 端口能够接收外部上升沿或下降沿的中断输入;10/12位硬件 A/D 转换器有较高的转换速率,嵌入式远程医疗监护系统

最高可达200kbps,能够满足大多数数据采集应用;能直接驱动液晶多达 160 段;实现两路的 12 位 D/A 转换;硬件I2C串行总线接口实现存储器串行扩展;以及为了增加数据传输速度,而采用的DMA模块。MSP430 系列单片机的这些片内外设为系统的单片解决方案提供了极大的方便。

另外,MSP430 系列单片机的中断源较多,并且可以任意嵌套,使用时灵活方便。当系统处于省电的低功耗状态时,中断唤醒只需5μs。

MSP430 系列有 OPT 型、FLASH 型和 ROM 型三种类型的器件,这些器件的开发手段不同。对于 OPT 型和 ROM 型的器件是使用仿真器开发成功之后烧写或掩膜芯片;对于 FLASH 型则有十分方便的开发调试环境,因为器件片内有 JTAG 调试接口,还有可电擦写的 FLASH 存储器,因此采用先下载程序到 FLASH 内,再在器件内通过软件控制程序的运行,由 JTAG 接口读取片内信息供设计者调试使用的方法进行开发。这种方式只需要一台 PC 机和一个 JTAG 调试器,而不需要仿真器和编程器。开发语言有汇编语言和 C 语言。

考虑以上原因,我们决定采用该型号单片机为本系统的微处理器。

二、温度采集芯片 18B20 DS18B20数字温度计是DALLAS公司生产的1-Wire,即单总线器件,具有线路简单,体积小的特点。因此用它来组成一个测温系统,具有线路简单,在一根通信线,可以挂很多这样的数字温度计,十分方便。

1、DS18B20产品的特点

(1)、只要求一个端口即可实现通信。

(2)、在DS18B20中的每个器件上都有独一无二的序列号。

(3)、实际应用中不需要外部任何元器件即可实现测温。

(4)、测量温度范围在-55。C到+125。C之间。

(5)、数字温度计的分辨率用户可以从9位到12位选择。(6)、内部有温度上、下限告警设置。2. DS18B20的使用方法

由于DS18B20采用的是1-Wire总线协议方式,即在一根数据线实现数据的双向传输,而对AT89S51单片机来说,硬件上并不支持单总线协议,因此,我们必须采用软件的方法来模拟单总线的协议时序来完成对DS18B20芯片的访问。

由于DS18B20是在一根I/O线上读写数据,因此,对读写的数据位有着严格的时序要求。DS18B20有严格的通信协议来保证各位数据传输的正确性和完整性。该协议定义了几种信号的时序:初始化时序、读时序、写时序。所有时序都是将主机作为主设备,单总线器件作为从设备。而每一次命令和数据的传输都是从主机主动启动写时序开始,如果要求单总线器件回送数据,在进行写命令后,主机需启动读时序完成数据接收。数据和命令的传输都是低位在先。

DS18B20的复位时序

DS18B20的读时序

对于DS18B20的读时序分为读0时序和读1时序两个过程。

对于DS18B20的读时隙是从主机把单总线拉低之后,在15秒之内就得释放单总线,以让DS18B20把数据传输到单总线上。DS18B20在完成一个读时序过程,至少需要60us才能完成。

嵌入式远程医疗监护系统

DS18B20的写时序

对于DS18B20的写时序仍然分为写0时序和写1时序两个过程。对于DS18B20写0时序和写1时序的要求不同,当要写0时序时,单总线要被拉低至少60us,保证DS18B20能够在15us到45us之间能够正确地采样IO总线上的“0”电平,当要写1时序时,单总线被拉低之后,在15us之内就得释放单总线。

综合各方原因我们采用该芯片模拟所有医用传感器,来完成整个系统设计。

三、无线模块 NRF2401 nRF2401是单片射频收发芯片,工作于2.4~2.5GHz ISM频段,芯片内置频率合成器、功率放大器、晶体振荡器和调制器等功能模块,输出功率和通信频道可通过程序进行配置。芯片能耗非常低,以-5dBm的功率发射时,工作电流只有10.5mA,接收时工作电流只有18mA,多种低功率工作模式,节能设计更方便。其DuoCeiverTM技术使nRF2401可以使用同一天线,同时接收两个不同频道的数据。nRF2401适用于多种无线通信的场合,如无线数据传输系统、无线鼠标、遥控开锁、遥控玩具等。nRF2401内置地址解码器、先入先出堆栈区、解调处理器、时钟处理器、GFSK滤波器、低噪声放大器、频率合成器,功率放大器等功能模块,需要很少的外围元件,因此使用起来非常方便。QFN24引脚封装,外形尺寸只有5×5mm。

nRF2401的收发模式有ShockBurstTM收发模式和直接收发模式两种,收发模式由器件配置字决定,具体配置将在器件配置部分详细介绍。

ShockBurstTM收发模式

ShockBurstTM收发模式下,使用片内的先入先出堆栈区,数据低速从微控制器送入,但高速(1Mbps)发射,这样可以尽量节能,因此,使用低速的微控制器也能得到很高的射频数据发射速率。与射频协议相关的所有高速信号处理都在片内进行,这种做法有三大好处:尽量节能;低的系统费用(低速微处理器也能进行高速射频发射);数据在空中停留时间短,抗干扰性高。nRF2401的ShockBurstTM技术同时也减小了整个系统的平均工作电流。

在ShockBurstTM收发模式下,nRF2401自动处理字头和CRC校验码。在接收数据时,自动把字头和CRC校验码移去。在发送数据时,自动加上字头和CRC校验码,当发送过程完成后,数据准备好引脚通知微处理器数据发射完毕。

ShockBurstTM发射流程

接口引脚为CE,CLK1,DATA

A.当微控制器有数据要发送时,其把CE置高,使nRF2401工作;

B.把接收机的地址和要发送的数据按时序送入nRF2401;

C.微控制器把CE置低,激发nRF2401进行ShockBurstTM发射;

D.nRF2401的ShockBurstTM发射

给射频前端供电;

射频数据打包(加字头、CRC校验码);

高速发射数据包;

发射完成,nRF2401进入空闲状态。

嵌入式远程医疗监护系统

ShockBurstTM接收流程

接口引脚CE、DR1、CLK1和DATA(接收通道1)

A.配置本机地址和要接收的数据包大小;

B.进入接收状态,把CE置高;

C.200us后,nRF2401进入监视状态,等待数据包的到来;

D.当接收到正确的数据包(正确的地址和CRC校验码),nRF2401自动把字头、地址和CRC校验位移去;

E.nRF2401通过把DR1(这个引脚一般引起微控制器中断)置高通知微控制器;

F.微控制器把数据从nRF2401移出;

G.所有数据移完,nRF2401把DR1置低,此时,如果CE为高,则等待下一个数据包,如果CE为低,开始其它工作流程。

直接收发模式

在直接收发模式下,nRF2401如传统的射频收发器一样工作。

直接发送模式

接口引脚为CE、DATA

A.当微控制器有数据要发送时,把CE置高;

B.nRF2401射频前端被激活;

C.所有的射频协议必须在微控制器程序中进行处理(包括字头、地址和CRC校验码)。

直接接收模式

接口引脚为CE、CLK1和DATA

A.一旦nRF2401被配置为直接接收模式,DATA引脚将根据天线接收到的信号开始高低变化(由于噪声的存在);

B.CLK1引脚也开始工作;

C.一旦接收到有效的字头,CLK1引脚和DATA引脚将协调工作,把射频数据包以其被发射时的数据从DATA引脚送给微控制器;

D.这头必须是8位;

E.DR引脚没用上,所有的地址和CRC校验必须在微控制器内部进行。

配置模式

在配置模式,15字节的配置字被送到nRF2401,这通过CS、CLK1和DATA三个引脚完成,具体的配置方法请参考本文的器件配置部分。

空闲模式

nRF2401的空闲模式是为了减小平均工作电流而设计,其最大的优点是,实现节能的同时,缩短芯片的起动时间。在空闲模式下,部分片内晶振仍在工作,此时的工

嵌入式远程医疗监护系统

作电流跟外部晶振的频率有关,如外部晶振为4MHz时工作电流为12uA,外部晶振为16MHz时工作电流为32uA。在空闲模式下,配置字的内容保持在nRF2401片内。

关机模式

在关机模式下,为了得到最小的工作电流,一般此时的工作电流小于1uA。关机模式下,配置字的内容也会被保持在nRF2401片内,这是该模式与断电状态最大的区别。

nRF2401的所有配置工作都是通过CS、CLK1和DATA三个引脚完成,把其配置为ShockBurstTM收发模式需要15字节的配置字,而如把其配置为直接收发模式只需要2字节的配置字。由上文对nRF2401工作模式的介绍,我们可以知道,nRF2401一般工作于ShockBurstTM收发模式,这样,系统的程序编制会更加简单,并且稳定性也会更高,因此,下文着重介绍把nRF2401配置为ShockBurstTM收发模式的器件配置方法。

ShockBurstTM的配置字使nRF2401能够处理射频协议,在配置完成后,在nRF2401工作的过程中,只需改变其最低一个字节中的内容,以实现接收模式和发送模式之间切换。ShockBurstTM的配置字可以分为以下四个部分:

数据宽度:声明射频数据包中数据占用的位数。这使得nRF2401能够区分接收数据包中的数据和CRC校验码;

地址宽度:声明射频数据包中地址占用的位数。这使得nRF2401能够区分地址和数据;

地址:接收数据的地址,有通道1的地址和通道2的地址;

CRC:使nRF2401能够生成CRC校验码和解码。

当使用nRF2401片内的CRC技术时,要确保在配置字中CRC校验被使能,并且发送和接收使用相同的协议。

在配置模式下,注意保证PWR_UP引脚为高电平,CE引脚为低电平。配置字从最高位开始,依次送入nRF2401。在CS引脚的下降沿,新送入的配置字开始工作。PCB设计

PCB设计对nRF2401的整体性能影响很大,所以PCB设计在nRF2401收发系统的开发过程中主要的工作之一,在PCB设计时,必须考虑到各种电磁干扰,注意调整电阻、电容和电感的位置,特别要注意电容的位置。

nRF2401的PCB一般都是双层板,底层一般不放置元件,为地层,顶层的空余地方一般都敷上铜,这些敷铜通过过孔与底层的地相连。直流电源及电源滤波电容尽量靠近VDD引脚。nRF2401的供电电源应通过电容隔开,这样有利于给nRF2401提供稳定的电源。在PCB中,尽量多打一些通孔,使顶层和底层的地能够充分接触。

nRF2401通过ShockBurstTM收发模式进行无线数据发送,收发可靠,其外形尺寸小,需要的外围元器件也少,因此,使用方便,在工业控制、消费电子等各个领域都具有广阔的应用前景。

由于2401的诸多优点,我们决定选用此芯片完成无线部分。至此我们已经完成整体设计。

嵌入式远程医疗监护系统

二、软件部分

接收程序:

#include “msp430.h” #include “cry1602.h” typedef unsigned char uchar;typedef unsigned intuint;

/**************宏定义***************/ #define DataDir P4DIR #define DataPort P4OUT

#define Busy 0x80 #define CtrlDir P3DIR #define CLR_RS P3OUT&=~BIT0;//RS = P3.0 #define SET_RS P3OUT|=BIT0;

#define CLR_RW P3OUT&=~BIT1;//RW = P3.1 #define SET_RW P3OUT|=BIT1;

#define CLR_EN P3OUT&=~BIT2;//EN = P3.2 #define SET_EN P3OUT|=BIT2;

/*********************************************** 函数名称:DispStr 功 能:让液晶从某个位置起连续显示一个字符串 参 数:x--位置的列坐标 y--位置的行坐标 ptr--指向字符串存放位置的指针 返回值 :无

***********************************************/ voidDispStr(ucharx,uchary,uchar *ptr){ uchar *temp;uchari,n = 0;

temp = ptr;while(*ptr++!= ')n++;//计算字符串有效字符的个数

for(i=0;i

嵌入式远程医疗监护系统

} /******************************************* 函数名称:DispNchar 功 能:让液晶从某个位置起连续显示N个字符 参 数:x--位置的列坐标 y--位置的行坐标 n--字符个数

ptr--指向字符存放位置的指针 返回值 :无

********************************************/ voidDispNChar(ucharx,uchar y, ucharn,uchar *ptr){ uchari;

for(i=0;i

********************************************/ voidLocateXY(ucharx,uchar y){ uchar temp;

temp = x&0x0f;y&= 0x01;if(y)temp |= 0x40;//如果在第2行 temp |= 0x80;

LcdWriteCommand(temp,1);} /******************************************* 函数名称:Disp1Char

嵌入式远程医疗监护系统

功 能:在某个位置显示一个字符 参 数:x--位置的列坐标 y--位置的行坐标

data--显示的字符数据 返回值 :无

********************************************/ void Disp1Char(ucharx,uchary,uchar data){ LocateXY(x, y);

LcdWriteData(data);

} /******************************************* 函数名称:LcdReset 功 能:对1602液晶模块进行复位操作 参 数:无 返回值 :无

********************************************/ voidLcdReset(void){ CtrlDir |= 0x07;//控制线端口设为输出状态 DataDir = 0xFF;//数据端口设为输出状态

LcdWriteCommand(0x38, 0);//规定的复位操作 Delay5ms();LcdWriteCommand(0x38, 0);

Delay5ms();LcdWriteCommand(0x38, 0);Delay5ms();

LcdWriteCommand(0x38, 1);//显示模式设置 LcdWriteCommand(0x08, 1);//显示关闭 LcdWriteCommand(0x01, 1);//显示清屏

LcdWriteCommand(0x06, 1);//写字符时整体不移动

LcdWriteCommand(0x0c, 1);//显示开,不开游标,不闪烁 } /******************************************* 函数名称:LcdWriteCommand 功 能:向液晶模块写入命令 参 数:cmd--命令,chk--是否判忙的标志,1:判忙,0:不判 返回值 :无

********************************************/ voidLcdWriteCommand(ucharcmd,ucharchk){

嵌入式远程医疗监护系统

if(chk)WaitForEnable();// 检测忙信号?

CLR_RS;CLR_RW;_NOP();

DataPort = cmd;//将命令字写入数据端口 _NOP();

SET_EN;//产生使能脉冲信号 _NOP();_NOP();CLR_EN;

}

/******************************************* 函数名称:LcdWriteData 功 能:向液晶显示的当前地址写入显示数据 参 数:data--显示字符数据 返回值 :无

********************************************/ voidLcdWriteData(uchar data){ WaitForEnable();//等待液晶不忙

SET_RS;CLR_RW;_NOP();

DataPort = data;//将显示数据写入数据端口 _NOP();

SET_EN;//产生使能脉冲信号 _NOP();_NOP();CLR_EN;

} /******************************************* 函数名称:WaitForEnable 功 能:等待1602液晶完成内部操作 参 数:无 返回值 :无

********************************************/

嵌入式远程医疗监护系统

voidWaitForEnable(void){ P4DIR &= 0x00;//将P4口切换为输入状态

CLR_RS;SET_RW;_NOP();SET_EN;_NOP();_NOP();

while((P4IN & Busy)!=0);//检测忙标志

CLR_EN;

P4DIR |= 0xFF;//将P4口切换为输出状态 }

/******************************************* 函数名称:Delay5ms 功 能:延时约5ms 参 数:无 返回值 :无

********************************************/ void Delay5ms(void){ uinti=40000;while(i!= 0){ i--;} } 发送程序:

#include typedef unsigned char uchar;typedef unsigned intuint;

#define DQ1 P2OUT |= BIT4 #define DQ0 P2OUT &= ~BIT4 #define DQ_in P2DIR &= ~BIT4 #define DQ_out P2DIR |= BIT4 #define DQ_val(P2IN & BIT4)

/*******************************************

嵌入式远程医疗监护系统

函数名称:DelayNus 功 能:实现N个微秒的延时 参 数:n--延时长度 返回值 :无

说明 :定时器A的计数时钟是1MHz,CPU主频8MHz 所以通过定时器延时能够得到极为精确的 us级延时

********************************************/ voidDelayNus(uint n){ CCR0 = n;TACTL |= MC_1;//增计数到CCR0 while(!(TACTL & BIT0));//等待

TACTL &= ~MC_1;//停止计数

TACTL &= ~BIT0;//清除中断标志 } /******************************************* 函数名称:Init_18B20 功 能:对DS18B20进行复位操作 参 数:无

返回值 :初始化状态标志:1--失败,0--成功 ********************************************/ uchar Init_18B20(void){ uchar Error;

DQ_out;_DINT();DQ0;DelayNus(500);DQ1;DelayNus(55);DQ_in;_NOP();if(DQ_val){ Error = 1;//初始化失败 } else { Error = 0;//初始化成功 } DQ_out;DQ1;

嵌入式远程医疗监护系统

_EINT();

DelayNus(400);

return Error;} /******************************************* 函数名称:Write_18B20 功 能:向DS18B20写入一个字节的数据 参 数:wdata--写入的数据 返回值 :无

********************************************/ void Write_18B20(ucharwdata){ uchari;

_DINT();for(i = 0;i< 8;i++){ DQ0;DelayNus(6);//延时6us if(wdata& 0X01)DQ1;else DQ0;wdata>>= 1;DelayNus(50);//延时50us DQ1;DelayNus(10);//延时10us } _EINT();} /******************************************* 函数名称:Read_18B20 功 能:从DS18B20读取一个字节的数据 参 数:无

返回值 :读出的一个字节数据

********************************************/ uchar Read_18B20(void){ uchari;uchar temp = 0;

_DINT();for(i = 0;i < 8;i++){

嵌入式远程医疗监护系统

temp>>= 1;DQ0;DelayNus(6);//延时6us DQ1;DelayNus(8);//延时9us DQ_in;_NOP();if(DQ_val)temp |= 0x80;DelayNus(45);//延时45us DQ_out;DQ1;DelayNus(10);//延时10us } _EINT();

return temp;}

/******************************************* 函数名称:Skip 功 能:发送跳过读取产品ID号命令 参 数:无 返回值 :无

********************************************/ void Skip(void){ Write_18B20(0xcc);} /******************************************* 函数名称:Convert 功 能:发送温度转换命令 参 数:无 返回值 :无

********************************************/ void Convert(void){ Write_18B20(0x44);} /******************************************* 函数名称:Read_SP 功 能:发送读ScratchPad命令 参 数:无 返回值 :无

********************************************/

嵌入式远程医疗监护系统

voidRead_SP(void){ Write_18B20(0xbe);} /******************************************* 函数名称:ReadTemp 功 能:从DS18B20的ScratchPad读取温度转换结果 参 数:无

返回值 :读取的温度数值

********************************************/ uintReadTemp(void){ uchartemp_low;uint temp;

temp_low = Read_18B20();//读低位 temp = Read_18B20();//读高位 temp =(temp<<8)| temp_low;

return temp;} /******************************************* 函数名称:ReadTemp 功 能:控制DS18B20完成一次温度转换 参 数:无

返回值 :测量的温度数值

********************************************/ uint Do1Convert(void){ uchari;do { i = Init_18B20();} while(i);Skip();Convert();for(i = 20;i > 0;i--)DelayNus(60000);//延时800ms以上 do { i = Init_18B20();}

嵌入式远程医疗监护系统

嵌入式光纤收发器远程监控模块设计 篇3

关键词:IP113F;ARM ;RTL8019AS ;uC/OS;TCP/IP;以太网

中图分类号:TP84文献标识码:A文章编号:1672-3198(2007)12-0274-02

1 IP113F芯片简介

IP113F芯片是IC Plus公司生产的一款具有网管功能、超低功耗的光纤收发器。内置专为收发器设计的两口交换机内核,支持纯收发器模式,全/半双工模式均可采用相应的流量控制,支持单/多模光纤转换,支持3.3V I/O,并可通过SMI(MDC,MDIO)和IC内部MII接口对两组独立寄存器进行操作,监控或重新设置本地或远端光纤收发器的工作状态。用户可以通过串行管理接口MDC(管理数据同步时钟输入接口)和MDI0(双向管理指令接口)来访问MII寄存器, MDI0是信号线,MDC是时钟线,一个管理单元最多可同时外挂32个IP113F。数据在MDI0上是一位位传输的,是发生在MDC的上升沿跳变,MDI0上的数据通信协议如表1所示。当SMI处于空闲状态时,MDI0则处于高阻态。管理单元在MDI0上发送32位连续的“1”和“01”信号来初始化MDI0接口。

2 整体功能设计

系统的基本功能是32台光纤收发器同时通过同一SMI口网络转换器与远程的上位机进行通信(如图1所示)。转换器完成的具体工作是接收光端机发送过来的测试数据,自动识别其长度和来源,将其转化为网络数据格式,通过以太网发送到上位机,同时接收上位机通过以太网发送过来的控制信息,并自动识别其发送的目标,通过SMI口发送给相应的光纤收发器。根据实际需要,可以在上位机通过以太网配置SMI口网络转换器的IP地址。

3 硬件结构设计

转换器的硬件电路主要选用基于ARM7内核的嵌入式处理器LPC2214芯片进行整体控制,LPC2214芯片带有256KB的高速FLASH,并带有16K片内SRAM,为了满足通信过程中的数据缓存和一定的系统运行空间,片外扩展了512K字节的SRAM(IS61LV25616AL)。片外通过IIC总线扩展了256字节的EEPROM(CAT24WC02)用于保存好已设置的IP地址。选用10M全双工以太网控制器RTL8019AS芯片完成网络通讯功能,与外界的通讯口选用UTP RJ-45接口,HR61101芯片充当网卡变压器。采用通用的I/O口P0.5和.P0.6模拟SIM口的时序对IP113F进行数据采集,电路整体设计如图2。

4 系统软件设计与实现

4.1 引入RTOS

光纤收发器数据采集的实时性要求比较高,若采用传统的前后台设计方法会显的过于复杂,且实时性不能保证。解决这个问题的最好方法是采用实时操作系统RTOS。uC/OS-Ⅱ操作系统是一种源代码公开的嵌入式操作系统,具有代码短小精悍,简单易学的特点,对本设计是一个理想的选择。

uC/OS-Ⅱ完全是占先式的实时内核,基于优先级,即总是让就绪态中优先级最高的任务先运行,因此实时性比非占式的内核好。其大部分代码是用C语言编写的,可移植性强,可以在大多数8位、16位、32位以至64位微处理器上运行。uC/OS-Ⅱ在LPC2214上的移植可参考文献[2]。

4.2 TCP/IP协议的选择与裁减

为使SMI口转换器具有以太网接人功能,必须在ARM处理器中嵌人TCP/IP协议,参考开放系统互连(OSI)模型,在ARM中嵌人的TCP/IP协议采用简化的四层模型,即链路层、网络层、传输层、应用层。根据实际需求,结合ARM 微处理器的处理能力,设计中对完整的TCP/IP协议进行了全方位裁减。

(1)链路层。由控制同一物理网络上的不同机器间数据传送的底层协议组成。RTL8019AS的驱动程序就是在该层实现的。

(2)网络层。保留了完整的IP协议,对ARP协议进行简化,对于ARP包只响应ARP请求,取消RARP,只维护最简单的一个IP地址与MAC地址的映射Cache表,定时刷新。

(3)在传输层,用于工业现场一般采用TCP或UDP协议,TCP协议提供了一种可靠的面向连接的字节流运输层服务,而UDP协议是一个简单的面向非连接的数据报的运输层协议,考虑到所设计的系统数据传输的安全性,设计中选用TCP协议。

(4)在应用层,裁剪掉HTTP协议,通过将控制界面设置在上位机上来代替其功能。

通过上述裁剪,把TCP/IP协议嵌入到操作系统uC/OS-Ⅱ中,并提供API接口函数供应用程序调用,使得ARM可以快速无冲突地收发TCP数据包,符合系统对实时性和可靠性的要求。

4.3 系统的实现

采用嵌入式操作系统uC/OS-Ⅱ使整个设计简单,各个任务相互独立且具有不同的优先级来保证紧急任务及时响应,从而有效地对任务进行调度。整个软件设计由操作系统和一系列用户应用程序构成。

主函数是程序首先执行的一个函数,主要实现操作系统的初始化,该函数永不还回。操作系统的初始化包括任务控制块,事件控制块的初始化,而且在启动多任务调度之前,必须至少创建一个任务。此系统创建了一个启动任务TaskStart,主要负责系统硬件的初始化,包括时钟的初始化和启动,中断的启动,IIC总线的初始化与启动,SMI口的初始化与启动,RTL8019AS的初始化与启动,并且对各个应用任务进行了划分。

(1)任务的划分。

要完成多任务系统的各个功能,必须对任务进行划分。本程序根据各个任务的重要性和实时性,把整个模块分成6个具有不同优先级的应用任务,即IP地址设置、接收协议转换、发送协议转换、NET发送、SMI口发送、SMI口采集。

除了3个主要应用任務外,还有两个中断服务子程序。一个是时钟节拍中断,用于提供周期性信号源,另一个是网口的接收中断,用于把接收到的数据写入缓冲区。

(2)任务的具体实现。

本系统采用ARM作为服务器,PC端作为客户端的TCP通信模式,由上位机主动请求连接ARM。在串口和以太网建立通信之前,首先要调用IP地址设置任务,对IP地址、子网掩码、网关进行初始化设置。

SMI口通信实现的功能有SMI口发送和SMI口采集。SMI口采集任务优先级较低,进行多任务调度后若没有相关事件发生系统就一直运行SMI口采集任务,若采集到IP113F的状态发生变化,数据通过协议转换后发送到远程的上位机。SMI口发送作为一个单独的任务独立运行。SMI口发送任务需要系统调度器通知缓冲区中是否有待发送的数据,若没有数据发送,则将该任务挂起,系统运行其他任务

以太网通信模块由以太网数据收发和协议转换构成。数据的接收在RTL8019的中断服务程序中实现。以太网数据的发送,接收协议转换及发送协议转换分别作为独立的任务运行。以太网数据的发送任务同样需要系统调度器通知缓冲区中是否有待发送的数据。协议转换主要实现对接受数据报文的解析及给待发送数据添加协议报头,在编程时可以直接调用嵌入的TCP/IP协议的API函数,对数据报文进行分层。接收协议转换任务对从8019传过来的数据处理过程如3所示,不同的子协议具有不同的功能号,任务根据功能号对协议进行区别。发送协议转换则为图3的逆序表示。

(3)任务间的同步与调度。

通常多任务操作系统的任务不同于一般的函数,它是一个无限循环,而且没有返回值。如果没有更高优先级的任务进入就绪态,当前任务不会放弃对CPU的使用权。为了实现操作系统的正常运行和有关事件的同步,必须正确处理任务间的通信和事件标志的设置。系统的功能结构如图4所示。

系统进行多任务调度后,高优先级任务由于申请某个资源而发生阻塞,进入挂起态,系统运行较低优先级的SMI口采集任务。每个事件分配一个信号量,一旦事件发生就启动信号量的等待任务表中进入就绪态的任务。当接收中断发生时就启动协议转换任务,这过程通过信号量的通信机制实现。接收协议转换任务先对来自上位机的数据解析,然后根据数据的命令头发往SMI口发送队列或EEPROM发送队列,进而启动相应的SMI口发送任务或IP设置任务。发送协议转换任务对SMI口采集的数据进行协议转换后存入以太网发送队列,然后通知NET发送任务把数据发给上位机,从而保证任务与事件同步。

5 总结

本文所设计的SMI口网络转换器模块实现了上位机同时对多光纤收发器进行监控。本设计既可作为一个独立的模块,又可嵌入到用户设计的系统中进行二次开发。总之,嵌入式Internet技术代表着嵌入式系统和Inernet的发展趋势,对其研究具有重要的实用价值和远大的发展前途,尤其是智能测控和家庭网络化方面的前景意义。

参考文献

[1]周立功.ARM嵌入式系统软件开发实例[M].北京:北京航空航天大学出版社,2004.

嵌入式远程调试原理研究与实现 篇4

在嵌入式软件开发环境中, 核心开发工具是编译器和调试器[1]。由于嵌入式系统资源 (如CPU速度和内存大小等) 有限, 嵌入式软件调试主要采用远程调试, 如硬件片上调试和软件代理调试两类, 其特点是调试器和被调程序运行在不同的系统中。片上调试实时性强, 但处理器必须支持硬件调试模块, 且针对不同体系结构的So C (System on Chip) 需配备对应昂贵的仿真器[2]。软件代理调试通常需要在目标系统中驻留代理软件, 宿主机调试器与目标机代理软件通信, 调试代理实现对被调程序的控制[3]。该调试方式具有开发成本低、通用性强和可移植性高等优点。

本文首先阐述了嵌入式软件代理调试的基本原理, 提供了代理调试的基本模型, 分析了处理器、嵌入式操作系统、交叉调试器等软硬件模块在嵌入式代理软件调试中的作用和他们之间交互。在此基础上, 结合新型的嵌入式实时操作系统a Coral的基本内核机制, 设计和实现了一款支持GDB的远程调试系统, 并对其中关键调试模块的实现进行了详细讲解, 最后对系统进行了功能验证。

1 嵌入式远程代理调试基本原理

1.1 嵌入式软件远程代理调试模型

嵌入式远程代理调试系统分为宿主机和目标机两个计算机系统[4], 如图1所示。宿主机中有交叉编译器、调试器和被调程序;目标机中有调试代理和被调程序。

交叉编译器 (如arm-elf-gcc) 编译被调程序时, 会从源文件中收集大量的信息[5] (如变量名、变量类型和函数参数等) , 并按照特定的格式写入到可执行文件中。这些信息统称调试符号, 它是将汇编代码和对应的源代码联系起来的桥梁。

宿主机调试器 (如GDB) 负责接收调试人员的调试命令, 结合被调程序可执行文件的调试符号, 将其封装成协议数据包并发送给远端代理[6]。当接收到远端调试代理返回的数据包后, 根据协议规则解析出程序当前状态, 将其提供给调试人员。

调试代理利用目标机操作系统提供的服务建立与被调程序的绑定关系, 接收远程调试器的命令, 控制访问被调程序, 并向调试器返回被调程序的当前状态、被调程序的内存和寄存器信息等信息。

1.2 目标机处理器提供的调试支持

嵌入式软件调试的基本方法有断点、单步执行和栈回溯, 其初衷就是跟踪和记录CPU执行软件的过程, 把动态的瞬间凝固下来供检查和分析[7]。处理器异常机制是代理调试的基础, 每当CPU执行完一条指令后, 会检查是否有异常发生:若没有, 继续下一条指令;否则, CPU硬件将完成权限检查、模式切换、堆栈切换和特殊寄存器保存的工作, 最后跳转到异常处理程序。与调试相关的异常条件有:

(1) 软件断点指令

主流指令集体系结构都包含软件断点指令, 如ARM下的SWI (Soft Ware Interrupt) 指令, 当CPU执行到断点指令时, 便产生一个断点异常。以Linux为例, 异常处理程序便向当前进程发送一个SIGTRAP信号, 内核处理该信号时暂停当前进程并唤醒调试器进程。

(2) 调试寄存器

又叫硬件断点, 是处理器内部保留的专门用于调试的寄存器, 如在ARM So C中Embeded ICE逻辑中的的观察点和调试控制寄存器[8]等。当CPU访存时, 如果访存地址与调试寄存器值进行匹配, CPU便产生一个调试异常。

1.3 目标机操作系统提供的调试支持

调试代理很大程度上依赖目标机的嵌入式操作系统完成调试功能。可将目标机操作系统当成服务提供者, 提供控制、访问、暂停和恢复被调任务的服务, 统称目标机调试子系统。

1) 异常处理程序

异常处理程序是目标机调试子系统的基础, 它将处理器断点事件传递给被调程序的管理者 (调试代理) , 它完成软件调试的两个重要功能:

(1) 保存当前状态

首先必须保存所有通用寄存器, 以记录被调程序暂停时所处的硬件上下文。在调试过程中, 宿主机调试器根据上下文中各个寄存器的值逆向分析出源程序所处的状态。

(2) 触发控制权转换

程序遇到断点后必须暂停, 并通知调试代理处理, 即由调试代理获得对被调程序的控制权。该过程必须由异常处理程序触发 (如在Linux系统中的信号机制) 或者直接完成。

2) 建立绑定关系

在嵌入式软件调试中, 调试代理与被调任务必须建立绑定关系[9]。绑定就是在内核数据结构中建立调试代理与被调任务间的“父子”关系, 其中调试代理为被调任务的“父亲”或接管者。建立绑定关系后, 当程序遇到断点或其他异常事件时, 内核便能准确地找到事件的接管者。绑定即可在被调程序创建时建立, 也可在程序运行期间建立。如在Linux中, 可用ptrace_traceme和ptrace_attach完成绑定, 最终都落实到操作两个程序的TCB (Task Control Block) 的链表关系。

3) 进程控制访问

嵌入式软件调试中, 调试代理需要能够控制被调程序的执行和访问被调程序的地址空间。这些功能是由操作系统内核通过某种接口 (如系统调用) 提供的。如在Linux中的ptrace系统调用, 它能够根据用户态请求的类型来访问被调进程的代码段、数据段、用户态和内核态堆栈等信息, 实现打印变量的值、插入断点和修改变量值等功能。

2 a Coral内核对远程调试的支持

a Coral是多线程嵌入式实时操作系统, 本文将基于a Coral的mini2440 So C (CPU为ARM920T) 版本内核而实现远程调试系统。本节将简要介绍a Coral内核对实现调试代理的支持。

2.1 a Coral线程的基本结构

在a Coral中线程表现为“执行代码+执行环境”, “执行环境”就是线程当前堆栈和寄存器[10]。a Coral提供了比较完善的线程管理模块。

1) 任务控制块TCB

线程TCB由结构体acoral_thread_t实现, 记录了线程堆栈位置、运行状态和调度策略等信息。在调试过程中会触发任务切换, 调度器通过操作TCB等结构完成任务切换。

2) 任务堆栈

每个线程都有一个私有栈, 用于存储函数调用过程中的参数、局部变量值等。在调试实现中将使用该堆栈存储调试栈帧信息。

3) 线程地址空间访问

在a Coral中, 线程之间是共享地址的, 即所有线程都能够直接访问整个地址空间。例如, 对于设置软件断点操作, 首先从对应地址取出原指令并保存, 然后写入断点指令;在删除断点时, 用保存的值重写对应地址。

4) 线程控制

在线程控制方面, a Coral内核提供了完善的接口 (acoral thread类函数) , 包括杀死线程、暂停线程和恢复线程执行等。

2.2 SWI异常处理过程及其不足

a Coral正常运行时, CPU处于系统模式, 当被调线程执行到SWI断点指令后, CPU随即切换到管理模式[10]。a Coral对于SWI异常的处理是系统报错, 并出现系统假死现象。而且, 在管理模式下, a Coral整个系统使用一个栈, 即没有为每个线程创建一个管理模式栈, 因此在该模式下不能进行线程切换。实现调试系统时, 将基于该基本处理过程进行改进。

2.3 应用程序编程接口

a Coral内核提供了完整的嵌入式应用程序编程接口, 调试代理将基于这些编程接口而实现。在网络编程方面, a Coral实现了轻型TCP/IP协议栈LWIP (Light Weight TCP/IP) , 包含了基本的套接字接口和IO多路复用等网络编程函数。此外, a Coral系统提供了字符串操作函数、内存管理函数和输入输出函数等。在线程交互方面, a Coral实现了互斥量、信号量、邮箱和消息等机制及其编程接口。

3 a Coral远程调试系统实现

3.1 基于a Coral的远程调试结构

基于a Coral基本内核机制和对嵌入式远程调试基本原理的研究, 本文设计了a Coral远程调试系统, 如图2所示:宿主机端GDB关联带调试符号的a Coral可执行文件, 通过RSP协议与目标机代理通信[11]。a Coral内核向调代理提供异常、线程绑定和控制访问等服务。

3.2 调试代理的实现

调试代理的实现是对gdbserver (linux下的调试代理) 的裁剪和移植[12], 实现对被调线程的管理和控制, 完成接受宿主机的调试命令、解析命令、调用系统函数执行命令、返回执行结果和管理被调线程等功能。

(1) 通信模块

该模块负责与GDB通信, 包括建立和终止调试连接, 接收调试命令和返回调试结果等。在调试代理开始运行后, 将绑定到一个被调线程, 然后开启调试端口, 监听远程连接。当GDB发起连接时, 通信模块将通知事件监听模块, 进而建立起调试连接。在调试期间, 通信模块获取RSP调试数据包, 通知事件监听模块处理该调试命令。在处理完成后, 接收命令执行模块的执行结果, 封装结果为RSP数据包, 发送给宿主机调试器。

(2) 事件监听模块

该模块循环监听调试代理关注的事件。其主要的事件有远程调试器事件和本地内核事件。前者通知调试代理需要建立调试连接或执行某个调试命令, 例如向被调线程插入断点等;后者来自a Coral内核的SWI异常处理机制, 用于通知调试代理其某个被调线程已经暂停, 进而可以对其进行操作。对于每个事件, 该模块将调用命名解析和执行模块。

(3) 被调线程管理模块

该模块是一个抽象的线程管理模块, 与内核中的线程管理不同, 前者用于调试代理内部记录多个被调线程, 以及管理被调线程的断点等。断点管理通过断点链表方式, 记录线程的所有断点, 其中链表节点包括断点地址, 原始值等信息。被调线程的内部表示, 记录当前被调线程的id号等。

(4) 命令解析和执行模块

命令解析模块根据RSP数据包的格式, 解析通信模块获取到的数据包, 提取出调试命令, 然后调用执行模块。执行模块执行具体的调试命令, 期间它会调用其他模块。例如:调用线程管理模块, 以访问被调线程的断点链表;调用控制访问线程的内核机制, 以实际完成写入断点指令的操作;调用调用通信模块, 以返回当前操作的结果或被调线程的当前状态等。

3.3 a Coral线程绑定的实现

为实现a Coral线程调试, 首先必须在线程TCB中增加一些字段 (如表1所示) , 记录调试代理和被调者的关系等信息。

基于上述数据结构, 线程绑定 (由acoral_create_thread函数) 完成:设置跟踪标志、记录调试器指针、记录异常处理返回地址、设置调试栈帧和初始化父子TCB的链接关系等。相反, 在子线程退出时, 由线程退出函数acoral_thread_exit完成绑定关系的解除。

3.4 SWI异常处理机制的改进

a Coral在管理模式下不能进行线程切换。然而, 在调试中为了暂停当前线程并唤醒调试代理, 在SWI异常处理过程中必须实现线程切换。改进思路:如图3所示, 在SWI异常处理结束, 即退出管理模式并恢复系统模式后, 执行一段回调函数, 该函数完成线程切换、执行环境的保存和恢复, 其关键步骤有:

1) 在硬件异常处理过程中, 硬件保存CPSR到SPSR, 将执行模式从系统模式切换到管理模式, 保存返回地址到LR, 跳转到软件异常处理。

2) 在软件异常处理过程中, 首先检查线程是否被跟踪:若是, 则将上一步LR中的返回地址保存到TCB中, 并把LR设置为回调处理的地址;否则, 进行出错处理, 该过程调试模块并不关心。

3) 软件异常处理完成后, 返回到硬件处理。硬件恢复CPSR模式, 将LR (已经是回调处理的地址) 写入PC。接下来将执行回调处理过程。

3.5 回调过程和调试栈帧机制

由于在异常处理必须保存上下文, 但a Coral没有为调试提供特殊的空间来保存被调线程的上下文。改进方案是在回调过程中建立调试栈帧:在被调线程系统模式下私有栈的栈顶后面存储上下文, 该地址范围称为调试栈帧。调试栈帧的存储结构和回调过程的流程如图3所示, 以下是回调过程步骤说明:

1) 建立调试栈帧, 并保存线程当前上下文;记录栈顶地址到TCB->pt_reg_p中;

2) 用TCB->lr_excp保存的返回地址修改调试栈帧中的pc位置的值;

3) 挂起当前线程;唤醒调试代理并重调度;

4) 当线程被调试代理唤醒后, 用调试栈帧数据恢复执行环境, 便继续正常执行被调线程。

4 调试系统功能验证

本节提供了对调试模型实现的功能测试。其中目标机环境包括mini2440硬件开发板 (cpu是ARM920T) 、a Coral嵌入式操作系统mini2440版本。宿主机环境采用VMware虚拟机、Ubuntu11.10和GDB 7.2。被调线程运行一个排序程序, 包含debugee、quicksort、partition和exchange四个函数, 其中debugee是线程入口函数。根据GDB正常建立调试会话后, 便可执行GDB命令, 如图4所示。

经测试, 本代理能够实现任务级调试, 支持常用的GDB调试命令, 如表2所示。内核提供的调试支持。在此基础上, 结合a Coral的基本内核功能, 设计了远程调试结构, 提出了对a Coral的SWI异常处理过程的改进方法, 实现了线程绑定模块和调试代理。该系统给开发人员调试a Coral应用提供了帮助, 提高了开发效率, 具有无需硬件连接器、开发成本低、可实现任务级调试等优点。文中对于软件调试的软硬件结构的综合分析和总结, 对于理解软件调试具有较好的理论价值;同时, 本文对整个调试系统的实现有较强的实用价值, 为将来在其他新型嵌入式操作系统中实现调试子系统提供了有效参考。

摘要:嵌入式软件调试是多个软硬件模块交互的复杂过程。研究嵌入式远程调试的原理, 包括底层硬件机制、操作系统内核和编译器等模块对目标机调试代理的支持;基于新型嵌入式操作系统aCoral的基本内核功能, 设计aCoral远程调试结构, 提出了SWI异常处理机制的改进方法, 实现了线程绑定机制和远程调试代理。采用GDB (GNU DeBugger) 为宿主机调试器对系统进行功能验证, 结果表明该系统具有可实现任务级调试和稳定性强等优点。

关键词:嵌入式软件,远程调试,aCoral,调试代理,GDB

参考文献

[1]扈啸.嵌入式多核处理器在线追踪调试与错误检测关键技术研究[D].长沙:国防科学技术大学, 2007.

[2]姚放吾, 丁皞.嵌入式远程调试器保护模式下调试功能的实现[J].计算机技术与发展, 2011 (4) :242-245.

[3]Wenyu Chen, Dongpu Han, Dongcheng Tang, et al.A model of remote debugger supporting multiple types of connection[C]//2011 International Conference on Electronics, Communications and Control, 9-11 Sept 2011.Piscataway, NJ, USA:IEEE, 2011:642-645.

[4]王兴杰, 李允, 江浩, 等.基于Linux的嵌入式交叉开发技术[J].计算机应用研究, 2008 (1) :206-208, 214.

[5]张和君, 张跃.基于DWARF的Bootloader远程交叉调试模型[J].计算机工程, 2006, 32 (24) :60-62.

[6]Hongwei Li, Fangsheng Wu, Yaping Xu, 等.Research of"Stub"Remote Debugging Technique[C]//Iccsse 2009:Proceedings of 2009 4th International Conference on Computer Science&Education, 2009:990-994.

[7]张银奎.软件调试[M].北京:电子工业出版社, 2008.

[8]刘鹏, 于立新, 覃辉, 等.常见嵌入式微处理器调试技术综述[J].微处理机, 2011, 32 (4) :16-20.

[9]龚兰兰, 刘晓升, 朱巧明.远程调试系统的关键技术分析[J].计算机应用与软件, 2010, 27 (10) :258-261.

[10]多核嵌入式实时操作系统项目组.aCoral技术文档V1.0[EB/OL]. (2010-09-03) [2012-12-10].http://www.acoral.org/admin/upload/111.rar.

[11]Yang W Y, LEE J Y.PLC Remote Debugger Development Using GDB[C]//2009 International Soc Design Conference.New York:Ieee, 2009:540-543.

远程嵌入式 篇5

摘要:基于ARM 内核的嵌入式系统在远程监控报警系统中的设计实现与应用。核心部分主要包 括 ARM 嵌入式平台设计及 μC-OS 嵌入式实时操作系统移植;人机交互界面 μCGUI 的设计与实现;远程通讯及自动报警等;系统的设计还考虑到了扩展性和通用性以及与其他监控设备无缝连接等问题。

关键词: ARM;μC/OS-II;μCGUI;远程监控 引言

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

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

系统设计

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摄像头接口,但价格较昂贵。

图1 监控系统组成框图

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

2.4通讯模块

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

2.5传感器模块

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

2.6接口模块

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

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

3.1工作软件

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

图2 软件流程图

3.2操作系统移植

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

关键词:远程,监控,ARM

1 引言

当今社会已经进入了数字信息技术和网络技术高速发展的个人电脑时代, 嵌入式设备已经渗透到各个领域, 逐步向网络方向发展。嵌入式监控系统采用嵌入式实时多任务操作系统, 利用以太网传输图像数据和控制信号, 同时具备可以应用于个人计算机的强大处理能力, 进一步监测分析和处理图像, 它的功能集中到一个小尺寸芯片, 可以直接连接到局域网或广域网, 大大提高了实时性能、稳定性和可靠性。因此嵌入式远程监控技术具有广泛的应用领域, 是科学研究和军事发展必不可少的一项重要技术。

2 嵌入式系统

嵌入式系统有两种定义, 第一个是指以嵌入式系统应用为中心, 基于计算机技术的软件硬件。指为了减少对功能、可靠性、成本、体积、功耗方面的严格要求, 适应应用系统的专用计算机系统;第二个是根据IEEE的定义:嵌入式系统是用于控制、监视或者辅助操作机器和设备的装置。它通常指的是电脑系统, 包括硬件和软件两部分。目前, 嵌入式设备已深深融入人们的日常生活。该技术涉及到生活的角角落落, 包括了电子玩具、MP3、MP4、SOHO路由器、手机、机顶盒、汽车电子、电磁炉、电梯、安全系统、自动售货机、医疗仪器、音频、ATM等。

3 远程监控系统

3.1 远程监控系统概述

远程监控是通过计算机的远程监控来实现控制对象的网络系统。远程监控系统是可以实现本地和远程监控功能的硬件和软件系统的结合。远程监控系统是由信息网络和控制网络构成, 他结合了现代计算机技术、通信技术、传感器技术、自动控制技术和人机系统, 是一个有机整体, 已经广泛应用在许多领域, 如工业生产过程实时监控、电力设备、集中监控、环境安全监测、集中监控、水利系统图像远程监控、电力监控、网络监控、移动监控等。

3.2 嵌入式远程监控系统发展现状

远程监控是一个国内外研究前沿课题, 国内外一直在进行积极研究。1997年1月, 第一次基于互联网的远程监控诊断工作会议召开, 由斯坦福大学和麻省理工学院主办, 会议主要讨论了远程监控系统的开放系统, 规则诊断信息、传输协议、用户法律限制等, 并展望了其未来的技术发展。针对其在网络中的重要作用, 嵌入式设备、嵌入式网络服务器也成为了一个国内外研究的热点领域, 因此嵌入式网络服务器应用技术也得到了快速发展。而工业以太网在工业控制领域也将发挥越来越重要的作用。

4 主要硬件电路设计

(1) 存储器:嵌入式系统已经包含有SDRAM、FLASH存储器。基于SDRAM内存的嵌入式系统, 具有单位空间存储容量大和低价格的优势, 已广泛应用于各种嵌入式系统中。闪存是一种信息可以擦除的存储设备, 它的特性是停电后记忆信息会丢失, 它具备低功耗、大容量、快速擦除的特点, 可以实现全部或局部系统编程, 可进行内部嵌入算法操作, 因此芯片已广泛应用于各种嵌入式系统中。

(2) 串行接口:串行端口在系统开发、调试中扮演着非常重要的角色。群组串行端口和单独串行端口是一个通用的接口设备, 通过串行端口可以扩展连接许多其他的设备。

(3) JTAG接口:JTAG (联合测试行动) 是在1985年制定的国际标准测试协议, 主要用于检测PCB和IC芯片。JTAG技术是一种嵌入式调试技术, 它封装在芯片专用测试电路丝锥 (测试访问端口) , 可通过特殊的JTAG测试工具测试内部节点。

5 建立嵌入式Linux平台

5.1 交叉编译环境的建立

通常嵌入式系统的软件编译和执行是在两个不同的平台进行。编译在主机进行, 一般为桌面主机;进一步在目标机器上执行, 即嵌入式系统硬件平台。通常是在主机上通过一个跨平台交叉编译器来编译源文件从而得到一个可执行文件, 在目标平台上再通过串口、并口, 或网络下载到目标平台的FLASH或其他存储介质, 然后由目标机运行软件。

5.2 引导装载程序移植

引导装载程序是系统通电后运行的第一段代码。通常在刚刚启动时较短的时间内运行, 它对于嵌入式系统来说是一个非常重要的部分, 在整个系统中不可或缺。在嵌入式系统中, 系统复位或上电后通常开始从地址0x00000000加载, 引导装载程序和地址通常是用来存储启动代码。通过这个过程, 可以初始化硬件设备、建立内存空间映射, 因此该系统的硬件和软件环境可以得到一个合适的状态, 最终为加载操作系统内核准备好正确的环境。

6 总结和展望

远程监控系统的设计涉及很多方面的知识, 是一项复杂的系统工程设计。基于ARM的嵌入式数字远程监控系统是一个热门话题, 是当前主要的嵌入式系统和监控系统, 同时它涉及AR M架构、Linux操作系统、网络编程、多线程、多进程编程、CGI编程、图像处理、和其他方面的知识, 所以它也是一个高水平集成系统。ARM处理器的多参数远程网络监控设备通过测试和分析主要模块, 能够使该系统性能更稳定, 实时性更好, 可广泛应用于仓库、银行、军事设施、安全监控等。在居民区、工业领域、电力、电信基站以及无人驾驶系统方面, 都具有广阔的应用前景和市场潜力。

随着图像处理芯片和ARM结构的不断发展和融合, 基于IP网络的数字远程监控系统将不断地发展和完善。随着高带宽在普通家庭用户中的流行, 基于IP网络的数字远程监控系统进入普通家庭也将逐渐成为现实。

参考文献

[1]孟力.基于ARM处理器的嵌入式远程温度监控系统设计[J].电力电气, 2009 (6) :1.

[2]李江, 常葆林.嵌入式操作系统设计中的若干问题[J].微型机与应用, 2000 (8) :13-14.

[3]徐海琴.远程监控技术的新进展[J].微型电脑应用, 2004, 20 (8) :3-5.

[4]王建新.远程监控技术的发展现状和趋势[J].国外电子测量技术, 2005 (04) :9.

[5]习博, 方彦军.基于嵌入式uClinux系统工业以太网接口的设计与实现[J].电测与仪表, 2005, 42 (4) :59.

基于嵌入式的远程医疗监测系统研究 篇7

传统的医疗监护需要病人长期住在医院病房里, 大大限制了康复期病人和需要监护的中老年患者的活动也无法实现对处于正常生活和工作条件下的患者进行长时间的连续监测。为了达到与病房监护一样的效果在家中安装一个带有无线接收模块的接收器, 使病人随身携带的监护医疗设备通过无线发送模块将病人的生理数据传送到接收器, 接收器与Internet连接, 通过网络将数据传送到医院和社区医疗中心, 达到远程医疗监测的目的。随着老龄化社会的到来, 根据我国国情设计远程医疗监测系统, 对提高人民的医疗健康水平具有十分重要的的意义。

2 系统的工作原理

该系统由人体健康信息检测系统、Internet和远程医疗监控中心三部分组成。其中人体健康信息检测系统由OEM模块、无线传送显示模块、嵌入式接收模块组成。如图1所示。

该系统采用OEM模块对病人进行多种生理数据的采集, (如图1所示) , 并将OEM模块与无线传送显示模块相连, 将测量到的数据发送到同样带有无线模块的嵌入式接收器。通过这个移植了TCP/IP协议栈的嵌入式接收器, 将数据经过Internet发送到医疗监测中心, 远程医疗监测中心的服务器将接收到的数据整理存储, 形成电子病历。医生可以利用医院的信息化管理软件, 对病人的状态进行了解, 实现远程监测, 以较低的成本使患者获得与在医院同样的服务。

3 系统硬件设计

3.1 无线传送显示模块

无线传送显示模块以T I公司的超低功耗单片机MSP430F149为核心, 如图2所示, OE M模块与无线发送显示模块采用串口来交换信息, 并使用无线传输数据 (n RF2401) 。低功耗的无线传送显示模块采用电池供电, 使用者可以在一百米的范围内随身携带。

3.1.1 无线传送显示模块核心单片机选择

MSP430F149是TI公司的具有极高性能价格比的16位MCU, 它具有超低功耗、存储容量大、高性能A/D、集成度高、在线支持强的特点[1], MSP430F149属于一种中低端的单片机, 运用非常灵活。具有6 0KB+2 56 B Fla sh, 2KB RAM, 16位定时/捕获寄存器TIMER A3, 8位10位16捕获寄存器TIMER B7, WDT, 两个串行通讯口以及SPI, 16位基本定时器Basic Timer, 12位8通道A/D。尤其MSP430F149的超低功耗的特点, 使无线传送显示模块供使用者短距离随身携带得以实现。

3.1.2 OEM模块

目前市场上有多种OE M模块可供选择, 我们选择价格为2000元的上海贝瑞的OEM模块。该医疗监护OEM模块可以测量心电、血压、血氧、呼吸、体温、脉率, 它的集成度高, 尺寸小, 兼容性强, 可靠性高, 减少维修率。抗电源和灯光干扰, 抗弱灌注、抗运动干扰、抗低体温性能强, 该系统使用单一串口通讯。

3.1.3 无线收发芯片及其使用

无线收发芯片一选择了n RF2401。n RF2401是挪威Nordic公司推出的单片2.4GHz无线收发一体芯片[2,7]。它将射频、8051MCU、9通道12位ADC、外围元件、电感和滤波器全部集成到单芯片中, 并采用全球开放的2.4 GHz频段, 有125个频道可满足多频及跳频需要;提供片上C R C以及地址计算编码等功能。n R F 2 4 0 1支持多点间通信, 最高传输速率超过1 M b i t/s。它采用S O C方法设计, 只需少量外围元件便可组成射频收发电路。n RF2401有9个数字I/O口, 可以组成三个工作组, 即编程配置接口 (P W R_U P, CE, CS) 、数据通道1接口 (DATA, CLK1, DR1) 和数据通道2接口 (DOUT2, CLK2, DR2) (未用) , 具体的连接如图2所示。

n RF2401的工作模式由PWR_UP、CE和CS三个引脚决定, 将这三个引脚分别与MSP430F149的P6.5, P 6.6和P 6.7相连, 通过对这三个引脚的设定, 可以决定n RF2401的四种工作模式 (收发模式、配置模式、空闲模式和关机模式) 。将通道1的DATA与MSP430F149的一个SPI相连, 用来接收和发送数据。将CLK1与MSP430F149的ULK0相连, DRl与P2.7相连以用于确定通道1的数据接收中断。n RF2401工作前先需要单片机对其进行配置, 单片机将PWR_UP=1、CE=0和CS=1后, n RF2401变为工作模式。然后, 单片机通过通道1的DATA, CLK1将l5byte的配置数据送入n RF2401完成数据配。在CS下降沿后, 模块内部更新所有的内部配置。开机第一次配置时, 必须将15byte的配置字全部移入, 以后仅需做收发切换时, 只需移入lbit即可以完成收发切换。

3.1.4 人机交换界面的设计

采用DM162液晶点阵图形显示模块, DM162液晶显示模块和单片机MSP430F149接口如图2所示。无线发送显示模块备有串口键盘, 通过串口与单片机MSP4 30 F1 49进行通讯。该串口键盘与液晶显示模块DM162一起形成菜单方式的人机交换界面, 控制相应的OEM模块, 设定具体的参数, 显示相应的生理数据, 并附带有报警按键, 以供处理紧急情况。

3.2 嵌入式接收模块

根据系统要实现的功能特点, 并结合ARM处理器的性价比等因素, 设计的基于ARM的嵌入式接收模块的硬件结构框图3。

S 3 C 2 4 4 0是基于A R M 9 2 0 T核的一款处理器。ARM920T核由ARM9TDMI, 存储管理单元 (MMU) 和高速缓存三部分组成[3]。其中MMU可以管理虚拟内存, 高速缓存由独立的16KB地址和16KB数据高速Cache组成。ARM920T有两个内部协处理器:CP14和CP15。CP14用于调试控制, CP15用于存储系统控制以及测试控制。S3C2440片上有一个LCD控制器, 3个通道的UART和4个通道的DMA。其处理器工作频率最高可以达到400MHz, 这个频率能够使处理器轻松的运行于Windows CE, Linux等操作系统以及较为复杂的信息处理, 强大的内部中端, 便于TCP/IP的轮询调用, 117个通用可编程多功能的I/O端口可方便与以太网控制器RTL80 19AS连接, 目前已广泛应用于手持设备, 因特网设备, 网络设备等领域。

以太网电路模块采用Real Tek公司生产的、性价比很高的、带有即插即用功能的全双工以太网控制器RTL8019AS, 对S3C2440进行以太网扩展, 其主要特征包括:支持IEEE802.3;全双工收发同时可达10Mb/s;内置16KB的用于收发缓冲的SRAM;支持8/16位数据总线、8个中断申请线及1 6个I/O基地址选择;支持10Base5、10Base2、10Base T并能自动的检测所连接的介质。R T L 8 0 1 9 A S与主机选择跳线模式, 不使用EEPROM, 也不使用ISA总线, 各引脚接线方式为JP接高电平, BS[4..0]接地, 只使用BROM;IOS[2..0]接地, 内部寄存器基地址从300H开始;使用IRQ2/9做中断请求引脚;AUI接低电平, 接口采用BNC方式, 使用双绞线或同轴电缆;PL1, PL0接低电平, 自动检测以太网接口类型;TPIN和TPOUT信号经耦合器FB-202后, 接RJ45连接到外部以太网。

4 软件设计

开发采用ARM公司的ADS1.2。ADS1.2的集成开发环境为Code Warrior IDE。Code Warrior IDE包含工程管理器, 代码生成接口, 语法编辑器, 源文件和类浏览器等。调试采用A R M扩展调试器A X D (A R M e Xtended Debugger) 配合仿真器进行调试Boot Loader编写, 将应用程序烧人FLASH后[4], 系统在开机或复位时通常都从地址0x00000000处开始执行, 而在这个地址处安排系统的B o o t L o a d e r程序。我们编写了一个Boot Loa der程序, 通过它完成初试化硬件设备, 并将应用程序加载到SDRAM中[5]。

应用程序编写, 如图4所示, 主要部分为主程序和无线中断处理程序。根据制定的应用层协议, 在接收器开机并连上监护中心后, 即发送一个注册数据包。收到监护中心发的一个数据包, 如为初始化配置包, 则接收器开始工作, 启动无线数据接收后, 并判断接收到数据类型, 若为正常监护数据, 则根据该类型生理数据组包启动循环发送;若为报警包, 则向监测中心发送报警信息。

无线接收中断, n RF2401的数据通道1的DR1与S3C2440的一个外部中断相连, 并通过S3C2440的SIO口接收无线数据。每个无线接收中断, 便启动如图4所示的中断程序, 判断接收数据类型。设定了两个缓冲区, 无线监护数据写入缓冲区A时, 接收器则向监护中心发送缓冲区B内的数据;而无线监护数据写人缓冲区B时, 接收器则向监护中心发送缓冲区A内的数据, 如此反复进行, 保证数据的有效传输。

5 监控中心设计

该监控中心只用一台高性能的PC即可完成功能, 在正常情况下, 中心可与200个嵌入式接收器相连, 利用监护中心强大的储存能力储存监护的数据, 并与其它监护处理软件相结合进行下一步的数据处理[6]。网络程序开发使用Win Sock控件, 这样可以大大简化监护中心的网络程序开发。

6 结束语

本文介绍的基于嵌入式远程监测系统具可靠性高、体积小、检测参数多、适应性强等优点, 尤其实现了人体生理数据的无线传输, 可以让患者摆脱传统有线监护的束缚, 既能够对患者进行实时监护, 又允许患者在一定范围内自由活动, 为监护带来了极大的方便。本系统还具有高度的灵活性和扩展性, 可广泛应用于社区医院、养老院等医护机构, 通过Internet可以使社区医院、养老院等医护机构的病员也随时能够得到更专业的医疗监护, 并且在必要的时候得到远程医生的咨询指导, 提高了社区医院、养老院的医疗水平。

摘要:提出了一个基于ARM系列微处理器的远程医疗监测系统, 介绍了ARM系列微处理器S3C2440和单片机MSP430F149, 系统的组成原理, 以及主要外围接口电路的设计和软件设计架构。经过实验测试表明, 系统在实际中取得了良好的效果。

关键词:远程医疗,嵌入式,ARM,S3C2440,MSP430F149

参考文献

[1]魏小龙.MSP430系列单片机接口技术及系统设计实例[M].北京:北京航天航空大学出版社, 2002.

[2]nRF2401 Single Chip 2.4 GHz Transceiver Datasheet, Nordic VLSI ASA.2003.

[3]田泽.嵌入式系统开发与应用[M].北京:北京航空航天大学出版社, 2005.

[4]刘晶晶.基于ARM-Linux嵌入式系统引导程序的设计[J].微计算机信息, 2006, 2 (2) :123-125.

[5]Karim Yaghmour.Building Embedded Linux Systems[M].USA, O′Reilly, 2003.

[6]黄布毅, 张海霞等.基于CATV的家庭远程医疗监护系统[J].视频应用与工程, 2008, 32 (5) :85-87.

基于ARM的嵌入式远程监控系统 篇8

1 远程监控系统总体结构

远程监控系统实质是本地和远程端共同构成能够实现远程监控的软、硬件的系统,它是信息网络与控制网络结合的产物,目前已成为自动化控制领域的研究热点。根据设计的要求,本监控系统包含三部分。

(1)现场设备层:包括远程I/O控制模块和各种现场控制器。主要完成现场数据的采集、处理并通过总线接口与上层进行通信。

(2)内部控制管理层:主要由企业内部以太网、ARM主控制器组成。主要完成整个系统的信息收集和发布,并对整个系统进行统一管理和监控。

(3)网络层:该层通过交换机、路由器连接企业各个局域网,完成信息全球发布。

系统总体结构框图如图1所示。

2 软硬件设计

本系统的设计包括硬件设计与软件设计。网络系统硬件包括系统管理主机、服务器、网关、协议转换器、集线器及底层智能化仪表。网络系统软件包括网络操作软件、服务器操作软件、应用软件数据库、通信协议、网络管理协议等。

2.1 硬件设计

2.1.1 控制器的设计

ARM控制器作为嵌入式远程控制系统的中央控制平台是整个监控系统的核心,在系统中起着承上启下的作用。向上连接企业的局域网,向下兼容测控专用的现场总线网络;同时,它还承担对外围系统的数据采集和控制功能。该部分的整体结构由处理器、存储器、电源、网络功能、测控专用网络、模拟信号采集、数字量输入输出等部分构成,其基本结构如图2所示。在这个控制系统中核心板为基于AT91RM9200的最小系统,主要包括了AT91RM9200、Flash、SDRAM、电源模块、以太网通信端口、RS-485和RS-232通信端口、JTAG调试端口等。

2.1.2 嵌入式以太网的硬件设计

该系统采用的是Realtek公司生产的RTL8019AS以太网控制器,由于其优良的性能、低廉的价格,使其在市场上在10Mb/s网卡中占有较高的比例。

RTL8019AS的性能如下:

(1)符合以太网与IEEE802.3的标准;

(2)全双工,收发可同时达到10Mb/s的速率;

(3)内置16KB的SRAM,用于收发缓冲,降低对主处理器的速度要求;

(4)支持8/16位数据总线,8个中断申请以及16个I/O基地址选择;

(5)支持UTP、AUI、BNC自动检测。还支持10BaseT拓扑结构的自动极性修正;

(6)允许4个诊断LED引脚可编程输出。

由于开发资源非常丰富,所以对RTL8019AS开发比较容易。其网络通信部分的接口电路如图3所示。用RTL8019AS芯片设计的以太网控制器相关电路,可以通过RJ-45连上以太网,采用跳线工作方式即网卡的I/O和中断由跳线决定,JP引脚高电平是选择16位数据线。系统通过4条地址线A0~A3选择RTL8019AS的寄存器地址和存储器地址,控制并实现数据的读取。RTL8019AS的TPIN+(59脚),TPIN-(58脚)脚是TP的一对输入脚,能以10Mb/s的速率从双绞线接收差分曼彻斯特编码的数据。TPOUT+(45脚)、TPOUT-(46脚)是一对曼彻斯特编码的差分TP输出信号。为了防止双绞线超载,该输出信号会被提前中断,这样可以减少拥塞。连接器的其他管脚都通过一个电容与地连接。最后,还必须在50、51脚之间接入一个20MHz的晶体振荡器。网卡的复位信号由ARM产生,RST为高电平有效,信号宽度至少为800ns。ARM的一个引脚产生1μs以上的高电平就可以使RTL8019AS复位。

2.1.3 底层采集模块设计

以总线技术为核心的工业控制系统,在底层设计时采用传感器和各种智能仪器共同控制现场设备的正常运行。由于各种总线采用的网络协议和通信介质各不相同,使得不同总线设备之间实现互连和互操作存在困难。这层信息参数主要包括生产装置运行参数的测量值、控制量、开关阀门的工作位置、报警状态、设备的资源与维护信息、系统组态、参数修改、零点与量程调整信息等,所以要协调好各种总线及控制节点间的关系,以保证系统的正常运行。具体设计如图4所示。

2.2 软件设计

软件总体设计包括嵌入式Linux[2,3]文件系统设计、网络通信程序设计、驱动程序设计和远程数据处理程序设计。

远程数据采集终端主要完成对电压、流量、压力、电流等信号的采样及A/D转换。

网络通信程序[4]是指上位机和下位机之间通过以太网进行通信的程序。在以太网中应用的TCP/IP协议,其核心内容在传输层、网络层和设备接口层,而这三层的功能一般是在操作系统的内核中实现的。要在以太网上正确传输数据,网络协议是必不可少的,而TCP/IP协议是首选。使用完整的TCP/IP协议当然能够实现上述要求,但由于使用了嵌入式系统,其资源有限,因此必须对协议进行精简。

2.2.1 驱动程序设计

以太网驱动程序[5]主要实现以太网数据包的发送和接收。这是以太网通信中最基本也最重要的,其实现的好坏直接影响整个协议的性能。驱动程序在发送数据时,将要发送的数据包按指定的格式写入RTL8019AS并启动发送命令,RTL8019AS会自动把数据包转换成物理帧格式在物理通道上传输。在接收数据时,RTL8019AS收到物理信号后将其转换成数据,按指定格式存放,以太网驱动程序按照网络层可以接收的形式对接收到的数据进行处理并交付。简言之,RTL8019AS完成数据包和电信号之间的相互转换,而以太网驱动程序就是物理接口与网络层交互的软件接口。以太网驱动程序具体如下:

2.2.2 数据处理

系统内部首先注册RTL8019AS网络设备,从而利用Linux为网络设备所提供的数据传输功能接口,实现专用网卡的数据传输。数据发送时,首先数据由块设备的数据接口从用户态拷入核心态的系统缓冲区中,再由RTL8019AS的发送接口将数据发送到网络硬件设备。Linux在进程调度或从系统调用返回时,调度程序判断是否被激活,然后判断写队列是否有请求块。若有则将数据发送给对方进程,在确认信号到来后,将请求块移去。若数据发送后响应的为重传信号,则根据约定进一步处理。重复处理下一个请求块直至请求队列为空。若队列空且有进程睡眠则唤醒睡眠进程。在接收时,通过RTL8019AS的设备接口将数据接收到系统缓冲区中,再通过块设备接口将数据发送到用户缓冲区中。当有数据收到时,激活中断服务子程序,中断服务子程序将数据读入数据队列,若有读睡眠进程则唤醒该进程,同时将到来的数据进行校验,数据正确则发回信号,否则发回重传信号,如图5所示。

随着网络通信技术的发展,工业控制领域也迎来了深刻技术变革,控制系统结构网络化与控制系统体系开放性将是控制系统技术发展的趋势。近年来出现的基于ARM的嵌入式远程监控系统作为一种全新的概念成为计算机技术与自动控制技术深度融合的产物,其高度的开放性、通用性、统一性使其相对于传统监控模式具有巨大的优势,其应用前景也被人们寄予厚望。

摘要:研究了基于 ARM 的嵌入式远程监控系统。系统采用 S3C2410为主控芯片并且移植了具有一定实时性、源代码公开的嵌入式系统 Linux。ARM 处理器实时监控现场设备的运行,并将得到的各种监控参数进行分析、处理,然后将处理结果通过以太网传入 Internet。远程控制者就可以实现异地监视和控制现场设备。

关键词:嵌入式技术,套接字,Linux,远程监控,ARM

参考文献

[1] 刘甜甜,连耀华.基于 ARM 的嵌入式远程监控系统[J].电子技术,2007(4) :58-62.

[2] 陈阿林,肖嵬,肖丹燕,等.基于嵌入式 Linux 的网络监测 系统的设计与实现[J].重庆师范学院学报(自然科学版),2004,21(1) :23-25.

[3] 李善平.Linux 与嵌入式系统[M].北京:清华大学出版社,2003.

[4] 林宇,郭凌云.Linux 网络编程.北京:机械工业出版社, 2000.

远程嵌入式 篇9

农业具有地域分散、对象多样、生物自身变异大、环境因子不确定和受环境影响极明显等特点[1]。在大多数情况下, 农业实验观测现场工人的劳动强度大, 人为因素造成的数据不准确性高, 对实验的结果会产生极不利的影响。要解决这些问题, 根本的出路是实现信息获取的自动化, 以及数据的远程传输与交换[2]。已引起各领域广泛关注的现代无线网络信息技术和计算机应用等技术为农业信息的科学获取提供了重要的技术手段。这些最新的技术开发应用于农业各领域对于深入研究农业科学具有重要意义。本文充分参考国际国内已有的研究成果, 设计开发了一种基于嵌入式与GPRS技术的无线远程监测系统, 充分满足了远距离条件下农业环境监测的各种需要。

1 系统基本原理

本系统硬件核心模块采用ARM7 CPU 芯片作为处理器, 核心模块的微控制器内置嵌入式操作系统—μC/ OS-Ⅱ。操作系统具有系统前端的数据采集、数据处理、数据显示、数据存储和数据传输等功能。传感器采集的数据经过A/D转换后送入CPU进行处理, 在操作系统的调度下, 处理结果通过核心板上的GPRS无线模块传输到数据中心, 进而应用APS.NET动态网页技术实现INTERNET的WEB发布。

嵌入式操作系统是实时操作系统, 运行于特定的硬件平台上。对实时性和稳定性要求很高的数据采集系统来说, 引入嵌入式操作系统无疑将大大改善其性能。μC/ OS-Ⅱ操作系统是专为微控制器系统和应用软件开发而设计的公开源代码的抢占式实时多任务操作系统内核, 是一段微控制器启动后首先执行的背景程序, 作为整个系统框架贯穿系统运行的始终。其特点为: 公开源代码, 代码结构清晰、明了, 注释详尽, 组织有条理, 可移植性好, 可裁剪, 可固化, 内核属于抢占式, 最多可以管理64个任务。

本系统的基本组成:传感器组 (包括大气温湿度传感器、土壤水分与温度传感器、光照度传感器和风向传感器等) 、核心处理模块 (包括微控制器、存储器、其他外围芯片和嵌入式操作系统等) 、通讯模块GPRS、电源以及服务器等。嵌入式系统硬件结构如图1所示。

2 系统关键技术与实现

2. 1 芯片的选择

ARM微处理器的32位嵌入式RISC微处理器以低功耗、高性能和低成本等诸多优点在嵌入式应用领域占据着领先地位。ARM7系列微处理器为低功耗的32位RISC处理器, 最适合用于对价位和功耗要求较高的消费类应用。它支持操作系统, 包括μC/ OS-Ⅱ和μLINUX等, 高速的运算处理能力能胜任绝大多数的复杂应用。本系统采用的核心处理器是三星公司推出的16/32位RISC处理器S3C44B0X, 它采用ARM7TDMI内核, 0.25um工艺的CMOS标准宏单元和存储编译器。S3C44B0X通过提供全面与通用的片上外设, 大大减少了系统电路中除处理器以外的元器件配置, 从而最小化系统的成本。

2.2 远程通讯方式的选择

远程通讯方式选择GPRS ( General Packet Radio Service , 通用无线分组业务) , 它是一种基于GSM系统的无线分组交换技术, 提供端到端的和广域的无线IP连接。GPRS采用与GSM同样的无线调制标准、同样的频带、同样的突发结构、同样的跳频规则以及同样的TDMA帧结构。这种新的分组数据信道与当前电路交换的话音业务信道极其相似, 因此现有的基站子系统 (BSS) 从一开始就可提供全面的GPRS 覆盖。GPRS允许用户在端到端分组转发模式下发送和接收数据, 而不需要利用电路交换模式的网络资源, 从而提供了一种高效与低成本的无线分组数据业务, 特别适用于实现间断的、突发性的和频繁的远程移动数据传输[3]。

2.3 嵌入式操作系统—μC/ OS-Ⅱ

μC/ OS-Ⅱ是一个源代码开放的实时操作系统, 可移植、固化和裁减。其内核是占先式的, 总是执行就绪态的优先级最高的任务[4]。μC/ OS-Ⅱ工作核心原理是:近似地让最高优先级的就绪任务处于运行状态。μC/ OS-Ⅱ包括任务调度、时间管理、内存管理和资源管理 (信号量、邮箱和消息队列) 4大部分, 它的移植只与3个文件相关, 即 汇编文件 (OS_CPU_A.ASM) 、 处理器相关C文件 (OS_CPU.H 、OS_CPU_C.C) 和配置文件 (OS_CFG.H) 。它的基本思路就是“近似地每时每刻总是让优先级最高的就绪任务处于运行状态”。为了保证这一点, 它在调用系统API函数、中断结束和定时中断结束时总是执行调度算法。在综合考虑和比较各种嵌入式操作系统后选择μC/ OS-Ⅱ作为本系统的操作系统。

本系统利用嵌入式操作系统μC/ OS-Ⅱ 可以管理多任务的特点, 对每个传感器的管理作为一个任务来管理, 在实际中取得了很好的效果。具体的实现如下:在系统中共设计占用了8个任务。其中, 6个传感器的数据采集作为μC/ OS-Ⅱ的6个任务, GPRS发送数据要占用1个任务, 数据LCD显示占用1个任务。μC/ OS-Ⅱ调度的程序流程图[5]如图2所示。

3 数据中心数据接收软件的编写

服务器接收端的软件实现的功能是实时接收采集现场传来的数据, 并将其进行解析, 完成数据的数据库存储。该软件采用VB6.0进行编写, 提供了完善的对Winsock的支持。Winsock规范定义了一个TCP/IP网络开发Windows程序的标准, 利用WinSock 控件可以与远程计算机建立连接。Winsock的API函数在Windows 下是以动态链接库 (DLL) 的形式来提供的。软件数据采集部分流程图如图3所示。

4 数据的WEB发布

利用ASP.NET 技术实现信息的动态网页发布。在该页面实现实时数据的显示, 并提供历史数据的查询和数据下载等功能。用户可通过客户端浏览器 (Browser) 访问该页面, 输入相关查询的参数查询实时数据或者历史数据;服务器对浏览器的数据提交请求进行处理, 即进行数据分析计算、数据库存取和动态页面生成等工作;最后, Web 服务器将模型运行结果返回到客户端浏览器, 从而实现了无线远程环境监测系统底层网络与信息发布上层网络的无缝连接。

5 结束语

本文将GPRS无线通讯技术与嵌入式技术应用到农业信息的采集中, 建立了农田气象信息无线采集系统。该系统将传感器采集的数据通过GPRS 网络实时传送到服务器上, 并实现WEB的动态发布。实验与应用效果表明, 除了受现场偶有断电和人为误操作等干扰外, 系统一直能稳定工作, 真正实现了足不出户, 即可查看远程农田环境信息, 并能为身处异地的用户提供决策管理的信息支持, 已达到了实用化的程度。

另外, 该系统所采用的技术原理和关键技术是具有高度通用性的, 完全可以应用于农业其它领域的数据采集与监控过程中。尤其是无线移动通信技术的实现, 非常适合于偏僻而分散条件下农业信息的采集与监控, 同时与INTERNET 的结合, 为实现数据共享和远程管理提供了非常便捷的途径, 具有重要的实用价值和广泛的应用前景。

摘要:根据农田信息远程监测的特点, 提出了一种基于嵌入式系统和无线远程通信技术相结合的系统解决方案。该系统以ARM7CPU为硬件核心, 通过μC/OS-Ⅱ嵌入式操作系统的调度与管理, 实现农业信息的实时采集与处理, 然后经由GPRS无线移动通信模块发送至数据中心服务器。服务器接受数据, 并采用ASP.NET技术实现动态WEB发布。该系统的实现满足了农田信息远程监测的各种需要, 为农田信息现代化提供了重要支持。

关键词:农田信息,GPRS,嵌入式技术,μC/OS-Ⅱ,WEB发布

参考文献

[1]李秀红, 孙忠富, 肖春华, 等.基于μC/OS.Ⅱ嵌入式技术的农业环境远程监控系统实现[J].农业工程学报, 2007, 23 (10) :156.161.

[2]孙忠富, 曹洪太, 杜克明, 等.温室环境无线远程监控系统的优化解决方案[J].沈阳农业大学学报, 2006, 37 (3) :270.273.

[3]温泉, 李炳煜, 焦毅.基于GPRS的无线数据传输系统解决方案[J].现代电子技术, 2006 (23) :15.20.

[4]Zelkow itz M.Embedded software[C]//Advances in com.puters, USA:University of California, 2001.

[5]Jean J.LABRO SS.μC/OS.Ⅱ:the real time kernel[M].Published by R&D Books, an imprint of Miller Free.man, Inc, 1998:178.185.

[6]胥静.嵌入式系统设计与开发实例详解[M].北京:北京航空航天大学出版社, 2005.

[7]周立功.ARM嵌入式系统实验教程[M].北京:北京航空航天大学出版社, 2006.

基于嵌入式的远程视频监控系统研究 篇10

随着多媒体技术的发展以及网络宽带增加,传统视频监控模式的缺点和不足日益明显,基于IP网络视频监控的优点更加明显,视频监控也逐渐从传统视频监控向基于IP网络视屏监控转变,基于IP的网络视频监控在视频会议、家庭和生产现场等领域中的应用越来越广[1]。本文对基于嵌入式的远程视频监控系统设计进行分析。

1.视频监控发展阶段分析

1.1本地模拟信号监控系统

本地模拟信号监控系统包括摄像机、视频矩阵、监视器和录像机几个部分,系统将摄像机采集的视频与监视器相连,通过键盘控制切换和控制;录像机为磁带录像机[2]。本地模拟信号监控系统具有以下几个缺点,系统属于有线信号系统,传输距离对监控质量的影响大;二是系统属于内部局域网,无法联网控制,只能针通过点对点方式现场监控;三是线路复杂,布线工作量大;四是模拟视频信号需要占据大量存储介质,查询操作复杂。

1.2基于PC插卡数字监控系统

基于PC插卡数字监控系统发展依赖于微机技术发展和普及。该系统主要由PC机插视频卡构成,监控现场包括摄像机、各类探头、数据采集设备等几个部分,各个部分通过线路相连,再与监控终端PC机或工控机相连[3]。基于PC插卡数字监控系的优点在于终端功能强大,现场操作便利,缺点在于稳定性和可靠性不足,受环境影响大,恶劣环境下监控系统的性能不高。

1.3基于嵌入式远程视频监控系统

嵌入式远程视频监控系是一种提供网络视频传输和共享的嵌入式设备系统,系统采用嵌入式一体化结构设计,系统面向实时处理的硬件平台,集成了多通道视频和网络传输多功能,将视频信号采集、压缩、复合后转换为网络IP包,再经根据网络协议实时传输视频压缩数据。由于视频和网络功能都集中于小体积设备内,系统可直接与局域网相连,方便实时查看。也无需布设大量线缆,系统设备安装方便[4]。用户端无需加装硬件设备,可直接通过浏览器或人机界面查看监控视频。

2.基于嵌入式的远程视频监控系统实现

基于嵌入式的远程视频监控系统可以实时采集视频信号,再对视频信号进行压缩编码和网络传输,系统硬件结构详见图1。

本系统采用多媒体处理芯片DM642实现嵌入式网络的视频服务器,不仅达到服务器端视频处理计算量要求,还能减少系统开发成本和难度。与传统DSP相比,DM642多媒体处理芯片可满足视频应用广泛性、灵活性和多样性要求,并充分利用集成的多种新型片内外设,适应多媒体数字化处理和网络通信应用。使用视频A/D芯片SAA7115S实现信号转换,A/D芯片SAA7115S可兼容多宗不同制式输入和信号选择输入,并可输出4:2:2、RGB的等多种信号输出形式。同时使用PAL制式输入方式。A/D芯片SAA7115S通过DSP芯片DM642通过I2C总线控制初始化。视频编码使用H.264视频压缩算法,该算法使用了多种先进的编码方式,如高精度1/4像素运动估计、多帧运动补偿技术等,压缩编码的效率更高。码率相同情况下,该算法获得的主客观质量更高[5]。本系统使用DM642VLIW结构和专用操作指令集,并对传统编码方式进行优化,自主开发DM642的视频压缩算法。

DM642片内集成了以太网介质接入控制器,为DSP和网络提供了定制连接口。因而视频信号经编码处理后可以直接通过MII接口与网络相连和传输。数据网络发送分为两种,本系统专门编写了一个服务器软件用于发送视频图像数据。系统还能直接经网络接受用户指令,根据用户指令调节编码压缩比、转动云台、调节摄像头参数。

本系统传输层设计多种不同传输协议,用于传统不同类型数据。对于信息包较小的操作控制命令,采用TCP传输协议。对于视频图像数据,则采用UDP多播传输协议。该设计方式的的优点在于传统传输协议TCP对准确性要求高,数据必须准确地传输至客户端,因而TCP传输协议更适合用于传输控制命令,确保服务器和客户端正确接收操作指令。UDP传输协议的缺点在于未提供网络流量控制、数据包丢失处理,而压缩算法采用帧间压缩法,数据包丢失对视频图像质量产生影响,因而需要完善基于UDP传输协议的应用程序设计,提高程序的可靠性。

3.客户端软件设计

3.1客户端软件系统整体设计

客户端软件基于LINUX平台设计,客户可通过网络从实现远程视频数据接收,客户端软件详见图2。数字视频解码后,通过LINUX下多媒体库软件实现,该软件还提供视屏截图、亮度调节等功能,视频显示效率更高,软件系统占用资源效率更低。

3.2客户端软件关键技术

从本质上讲,UDP多播数据通信的可靠性不高,数据通信和解码显示时间可能存冲突,导致视频数据丢失,因而设计过程中需要考虑数据通信问题。此外,数据包传输过程中,不同数据包的时延不同,虽然数据传输速率是定值,但是归顺是数据传输率可能发大范围变动,如若直接解码和显示视频数据将导致视频图像出现不规律抖动,因而必须采取措施减少UDP数据通信问题。本客户端软件创建了两个并行线程,分别为数据接收和解码[6]。还创建了一个环境缓冲区,用于缓冲视频数据。解码线程可直接从环形缓冲区内读取数据、解码和显示。

环形缓冲区包含多个同等类型内存块,并创建标读写标志。接收线程向环形缓冲区与写入帧数据的同时将写标志指向下一缓冲区,解码线程则从缓冲区读取帧数据后将读标志植入下一帧图像所在缓冲区。由于接收线程与视频解码线程在同一时间操作缓冲区,因而接收线程和解码线程相互制约,设计过程中也需要协调接收线程和解码线程两者的运行速度,保证读标志少于写标志。本系统解码系统受缓冲区大小的影响,如若缓冲区过大,系统时延将延长,无法实现实时监控。如若缓冲区过小,缓冲区移除将影响解码质量,因而需要根据网络状况及编码数据码率合理设计缓冲区。

4.结语

将本方案用于高速公路数字视频监控系统,结果显示该系统运行状况良好,客户端解码视频后,视频图像清晰、流畅,未出现视频图像抖动问题。并且本系统硬件和软件设计思路不仅可用于视频监控系统,还可用于数字视频广播及点拨系统,为数字视频广播和点播系统设计提供指借鉴指导。

参考文献

[1]郭广明.基于S3C2410A的嵌入式远程视频监控系统的设计[J].科技管理研究,2010,14:233-235+263.

[2]赵书朵,谌海云,高凤水,武卫丽.基于ARM的嵌入式多路远程视频监控系统的设计[J].中国测试,2010,05:66-68.

[3]冯飞雨,于春梅,胡立锋.基于S3C2440的嵌入式远程视频监控系统的设计[J].安防科技,2011,03:14-17.

[4]吴健,赵建军,朱继珍.基于Linux及S3C2440A的嵌入式远程视频监控系统的设计[J].微型机与应用,2011,21:29-31.

[5]陈张荣,贾俊铖,严建峰.基于嵌入式系统的网络视频监控系统设计[J].仪表技术与传感器,2016,02:39-41+48.

上一篇:集装运输托盘下一篇:奥运网球人