基于嵌入式系统的GPRS数据终端的研究.docx
《基于嵌入式系统的GPRS数据终端的研究.docx》由会员分享,可在线阅读,更多相关《基于嵌入式系统的GPRS数据终端的研究.docx(16页珍藏版)》请在冰点文库上搜索。
基于嵌入式系统的GPRS数据终端的研究
基于嵌入式系统的GPRS数据终端的研究
姓名:
陈蕊
专业:
系统工程
学号:
s20090447
基于嵌入式系统的GPRS数据终端的研究
第一章绪论
随着数据无线传输需求的增加和中国移动GPRS业务的稳定运营,无线数据通信的应用场合越来越多,GPRS网络具有覆盖范围广、数据传输速度快、通信质量高、永远在线和按流量计费等优点。
因此GPRS业务在远程设备监测、工业监控以及自动抄表等方面有着大量的应用需求。
1.1嵌入式系统
嵌入式系统通常被描述为:
以应用为中心,以计算机技术为基础,软硬件可裁减,适应应用系统对功能、可靠性、成本、体积、功耗、等综合性严格要求的专用计算机系统,简而言之,嵌入式系统是嵌入计算机技术的系统,嵌入式系统作为专用计算机系统与通用计算机相比,嵌入式系统是面向具体应用的,是在特定领域内完成特定功能的专用计算机系统;嵌入式系统中硬件配置是根据系统性能指标来选择的,嵌入式系统的资源是有限的,一般是实时系统,是高可靠的独立运行系统,一般不与人交互、独立运行,所以稳定性好、并有自动纠错能力。
嵌入式系统总体上由硬件和软件组成,硬件包括处理器、存储器及外设器件和I/O端口、图形控制器等。
软件部分包括操作系统软件(OS)(一般要求实时和多任务操作)和应用程序编程。
目前比较有影响的32位嵌入式微处理器有ARM公司的ARM、Compaq公司的Alpha、HP公司的PA-RISC、IBM公司的PowerPC、MIPS公司的MIPS和Sun公司的Sparc等。
而ARM处理器具有高性能、低功能和低成本等显著优点,已成为高性能、低功耗嵌入式微处理器的代名词,是目前32位、64位嵌入式处理器中应用最为广泛的一个系列。
1.2嵌入式操作系统
嵌入式操作系统并不是简单嵌入的操作系统,它与通常意义上的操作系统有一定的区别。
嵌入式操作系统负责嵌入式系统的全部软硬件资源的分配、调度工作,控制并协调并发活动,它必须体现其所在系统的特征,能够通过装卸某些模块来达到系统所要求的功能。
与通用的操作系统相比,嵌入式操作系统具有如下一些特征:
小巧、实时性、可装卸、固化代码、弱交互性、强稳定性。
从20世纪80年代开始,陆续出现了一些嵌入式操作系统,比较著名的有VxWorks、WindowsCE、Palm、µCLinux、pSOS和µC/OS-Ⅱ等,但由于嵌入式系统软件开发复杂度增加,和大量高性能、面向实际应用。
集成多种系统功能的SOC芯片成为高端嵌入式应用的硬件核心,为可靠、高效、低成本地运行嵌入式操作系统提供了硬件平台,所以近几年比较广泛的应用。
第二章无线数据传输系统的技术方案
2.1GPRS
GPRS(GeneralPacketRadioSercice)是通用分组无线业务的简称,是在GSM基础上发展起来的一种分组交换的数据承载和传输方式,其数据速率理论上可达到171.2Kbps。
由于目前GSM移动电话用户占到了全球4.5亿移动电话用户的四成以上,因此GPRS在未来的移动数据市场中占有一定的优势。
与原来的GSM比较,GPRS在数据业务的承载和支持上具有非常明显的优势:
1.通过多个GSM时隙的服用,支持的数据传输速率更高,理论峰时达171.2Kb/s。
2.不同的网络用户共享同一组GPRS信道,但只有当某一个用户需要发送或接受数据时才会占用信道资源。
这样,通过多用户的业务复用,更有效地利用无线网络信道资源,特别适合突发性、频繁的销流量数据传输,很好地适应数据业务的突发性特点。
3.GPRS计费方式更加灵活,可以支持按数据流量来进行计费。
目前,我国移动推出的GPRS上网业务最高每千字节也只需3分钱,而且用户可以根据自己的需要,以月租、包月等多种形式进一步降低GPRS通信的资费。
因此使用GPRS实现远程数据的传送是非常经济实用的,特别是对于不易架设有线网络的边远区域和可移动装置。
4.与无线应用协议(WAP)技术部痛,GPRS能够随时为用户提供透明的IP通道,可直接访问Internet上的所有站点及资源。
5.采用信道复用技术,每一个GPRS用户都能够实现永远在线。
6.另外,GPRS还能支持在进行数据传输的同时进行语音通话等,而且相对于短消息等其他无线数据通信业务,GPRS的价格优势较为明显。
2.2基于GPRS无线数据传输系统的工作方式
从系统的工作方式上来讲,一般的采用中心对多点的无线数据传输系统有以下几种工作方式。
永远在线模式:
保持DTU与数据中心永久连接。
工作过程为:
DTU开机时自动连接GPRS网络,根据数据业务中心(DSC)的IP地址自动连接数据中心,并保持和维护链路的连接。
定时传输模式:
由DTU向中心定时发送数据,工作过程为:
根据事先设置的发送数据间隔向数据业务中心(DSC)发送数据和接受数据,数据收发完毕后,自动断线。
中心呼叫模式:
由数据中心发起数据传输请求,DTU应答并发送/接受数据,工作过程为:
当中心需要收集或发送给DTU端数据时,数据中心发出呼叫指令,DTU立即连接GPRS网络并登录数据业务中心(DSC),按照中心的指令传输数据。
数据触发模式:
当有用户数据传输时,由DTU发起连接,工作过程为:
当有用户数据传输时,DTU连接GPRS网络并登录数据业务中心(DSC),传输数据。
节电模式:
无数据传输时关闭无线传输部分,系统进入休眠状态。
在上述的工作方式中,定时传输模式只是定时发送数据,适合于周期性的业务,但对于非周期业务并不适用;中心呼叫模式则无法满足DTU的主动数据传输;而数据触发模式是由DTU发起连接,因而对中心呼叫无法响应;节电模式则不适合数据传输频繁的业务。
为了满足大多数业务的需求本系统的工作方式选择使用永远在线模式,要保证DTU真正的“永远在线”,DTU要保持和维护链路的连接,在本文中DTU采用定时发送无实际意义的“心跳”信息来保持和维护GPRS连接的正常进行。
2.3基于嵌入式系统的无线数据终端技术方案
由于嵌入式系统分为软硬件两个部分,因而本文中的基于嵌入式系统的数据终端单元方案选择也被分为软硬件两个部分。
在硬件部分,嵌入式处理器是硬件平台的核心,其他硬件单元的设计都要围绕处理器的选择来进行;在软件部分,嵌入式操作系统是所有软件的运行平台。
因而给予嵌入式系统的数据终端单元方案的确定主要是嵌入式处理器的选择以及嵌入式操作系统的选择。
(1)嵌入式微处理器方案选择
嵌入式微处理器是由通用计算机中的CPU演变而来的。
它的特征是具有32位以上的处理器,具有较高的性能。
根据本文应用系统的具体功能要求,嵌入式微控制器是本文合适的处理器,选用应用普遍、性能稳定的ARM核的微控制器。
ARM微处理器目前有5个系统:
ARM7、ARM9、ARM10和SecurCore,其中ARM7最为广泛使用。
ARM7是低功耗的32位核,最适用于对价位和功耗敏感的消费类应用,具有低功耗、能提供0.9MIP/MHZ的三级流水线和冯·诺依曼结构等特点。
(2)嵌入式操作系统方案选择
目前,广泛使用的操作系统有三种,即多道批处理操作系统、分时操作系统以及实时操作系统。
多道批处理系统一般用于计算机中心较大的计算机系统中。
由于其硬件设备比较全、价格较高,所以此类系统十分注意CPU及其它设备的充分利用,追求高的吞吐量,不具备实时性。
分时系统的主要目的是让多个计算机用户能够共享系统的资源,能及时的响应和服务联机用户,只具有很弱的实时功能,但与真正的实时操作系统仍然有明显的区别。
实时操作系统是事件驱动的,能对来自外界的作用在限定的时间范围内作出响应。
它强调的是实时性、可靠性和灵活性,与实时应用软件相结合成有机的整体,并由它来管理和协调各项工作,为应用软件提供良好的运行软件环境及开发环境。
而嵌入式实时操作系统在目前的嵌入式应用中也越来越广泛,尤其在功能复杂、系统庞大的应用中显得更为重要。
但是,使用嵌入式实时操作系统还需要额外的ROM/RAM开销、2%~5%的CPU额外负荷以及内核的费用。
综上所述,嵌入式实时操作系统只用了少量的ROM/RAM、CPU等资源却换来了如此多的优点。
本文中的应用程序对系统资源的要求不是很高,完全可以提供很少的一点资源来给实时操作系统。
就本系统而言,采用嵌入式实时操作系统是必要而且可行的。
第三章无线数据终端硬件平台设计
3.1无线数据终端硬件原理框图
图3-1硬件平台原理框图
在无线数据传输终端的硬件结构中,以S3C44B0X处理器为核心,主要有以下几个模块组成:
CPU中央处理器单元:
包括S3C44B0X处理器的最小系统、时钟电路、复位电路等部分。
FLASH存储单元:
可存放用户应用程序、操作系统或其他在系统掉电后需要保存的用户数据等,
SDRAM存储单元:
作为系统运行时的主要区域,系统、用户数据及堆栈均位于其中。
以太网单元:
以太网接口为系统提供以太网接入的物理通道,通过该接口系统可以10M的速率接入以太网。
JTAG调试接口:
该接口可对芯片内部的所有部件进行访问,对系统进行调试、编程等。
RS-232串行接口:
用于S3C44B0X系统与用户端进行串行通信时使用。
GPRS/GSM射频模块:
用来与GPRS网络进行通信的射频模块。
3.2ARM7TDMI处理器及SamsungS3C44B0X概述
3.2.1ARM7TDMI处理器介绍
ARM7TDMI的重要特性有:
(1)实现ARM体系结构版本4T,支持64位结果的乘法,半字、有符号字节存取;
(2)支持Thumb指令集,可降低系统开销;
(3)32×8DPS乘法器;
(4)32位寻址空间-4GB线性地址空间;
(5)它包含了EmbeddedICE模块,以支持嵌入式系统调试;
(6)调试硬件由JTAG测试访问端口访问,因此JTAG控制逻辑被认为是处理器核的一部分;
(7)广泛的ARM和第三方支持,并与ARM9Thumb系列、ARM10Thumb系列和StrongARM处理器相兼容。
3.2.2SamsungS3C44B0X介绍
SamsungS3C44B0X微处理器片内集成ARM7TDMI核,并在此内核基本功能的基础上集成了丰富的外围功能模块,便于低成本设计嵌入式应用系统,片上集成的主要功能如下:
(1)在ARM7TDMI基础上增加了8KB的Cache;
(2)外部扩充存储器控制器(FP/EDO/SDRAM控制,片选逻辑);
(3)LCD控制器,并带有1个LCD专用DMA通道;
(4)2个通用DMA通道/2个带外部请求引脚的DMA通道;
(5)2个带有握手协议的UART,1个SIO;
(6)1个多主的PC总线控制器;
(7)1个IIS总线控制器;
(8)5个PWM定时器及1个内部定时器;
(9)看门狗定时器;
(10)71个通用可编程I/O口,8个外部中断源;
(11)功耗控制模式:
正常、低、休眠和停止;
(12)8路10位ADC;
(13)具有日历功能的RTC(实时时钟);
(14)PLL时钟发生器;
3.3GPRS模块嵌入设计
通过GPRS网进行数据传输一般需要使用GPRS模块。
目前,GPRS模块一般是指带有GPRS功能的GMS模块,可以利用GPRS网惊醒数据通信。
本系统选用PIML-900/1800GPRS模块,它是CENTEL推出的GSM/DCS双频模块,带GPRS功能,主要为语音传输、短消息和数据业务提供无线接口,PIML-900/1800集成了完整的射频电路和GSM的基带处理电路,及充电电路。
模块与控制器间的通信协议是AT命令集是Modem通信接口的工业标准,它的功能包括配置Modem与软件共同工作、与远程系统通信、发起或应答一个呼叫等。
现在已成为事实上的标准并被所有调制解调器制造商采用的一个调制解调器命令语言。
所有AT命令都以前缀AY开始,回车键结尾。
指令执行后回车,如回应OK,则表示指令已正确执行,如回应error,则指令执行失败或发生错误,前缀AT用以引起调制解调器的注意,监测计算机串行通信口的速率,识别字符格式,包括字符长度和奇偶设定等,并且每一天AT命令都对应Modem的某种动作。
硬件连接完成后,在进行GPRS上网操作之前,首先要对GPRS模块进行一定的设置,主要的设置工作有:
①设置通信波特率,可以使用AT+IPR=115200命令,把波特率设为115200b/s或其他合适的波特率,默认的通信速度为9600b/s。
②设置接入网关,通过AT+CGDCONT=1,“IP”,”CMNET”命令设置GPRS接入网关为移动梦网。
③设置移动终端的类别,通过AT+CGCLASS=”B”设置移动终端的类别为B类,即同时监控多种业务,但只能运行一种业务,即在同一时间只能使用GPRS上网,或者使用GSM的语音通信。
④测试GPRS的服务是否开通,使用AT+CGACT=1,1命令激活GPRS功能。
3.4输入输出接口电路设计
3.4.1串行接口电路设计
几乎所有的微控制器、PC都提供串行接口,使用电子工业协会推荐的RS-232-C标准,这是一种很常用的串行数据传输总线标准。
RS-232-C标准采用的接口是9芯或25芯的D型插头,系统采用9芯D型插头,但由于RS-232-C标准所定义的高、低电平信号与S3C44B0X系统的LVTTL电路所定义的高、低电平信号完全不同,LVTTL的标准逻辑“1”对应2V~3.3V电平,标准逻辑“0”对应0V~0.4V电平,而RS-232-C标准采用负逻辑方式,标准逻辑“1”对应-5V~15V电平,标准逻辑“0”对应+5V~+15V电平,显然,两者间要进行通信必须经过信号电平的转换。
3.4.2以太网接口电路设计
在嵌入式系统中增加以太网接口,通常有如下两种方法实现:
(1)嵌入式处理器+网卡芯片如:
RTL8019AS
这种方法对嵌入式处理器没有特殊要求,只要把以太网芯片连接到嵌入式处理器的总线即可,此方法通用性强,但是速度慢。
(2)带有以太网络接口的嵌入式处理器
这种方法要求嵌入式处理器有通用的网络接口,处理器核网络数据交换通过内部总线,速度快。
由于本系统采用的CPU为S3C44B0X,内部没有网络接口,只能采用嵌入式处理网+网卡芯片的方法扩展以太网接口。
网卡芯片采用RTL8019AS,S3C44B0X处理器和RTL8019AS连接的结构图如图3-2所示,RTL8019AS通过总线和S3C44B0X相连接,中断也通过S3C44B0X的外部中断接管。
图3-2S3C44B0X处理器和RTL8019AS连接结构图
3.4.3JTAG接口电路
JTAG(JointTestActionGroup,联合测试行动小组)是一种国际标准测试协议,主要用于芯片内部测试及时系统进行仿真、调试,JTAG技术是一种嵌入式调试技术,它在芯片内部封装了测试电路TAP(TestAccessPort测试访问口),通过专用的JTAG测试工具对内部节点进行测试。
JTAG测试允许多个器件通过JTAG接口串联在一起,形成一个JTAG链,能实现对各个期间分别测试,JTAG接口还通用于实现功能。
通过JTAG接口,可对芯片内部的所有部件进行访问,因而是开发调试嵌入式系统的一种简洁高效的手段。
S3C44B0X、电源电路、晶振电路、复位电路、JTAG接口电路可构成真正意义上的最小系统,程序可运行于S3C44B0X内部的8KBRAM中,程序大小有限,掉电后无法保存,只能通过JTAG接口调试程序。
第四章无线数据终端软件设计
本文根据实际应用的需要,软件系统主要包括四部分内容:
系统启动加载程序、嵌入式实时操作系统µC/OS-Ⅱ、基于µC/OS-Ⅱ的系统应用程序以及网络应用部分。
该系统的软件模型如图4-1所示。
图4-1系统软件模型
4.1启动加载程序BootLoader的设计
整个系统引导过程的流程如图4-2所示
图4-2系统引导程序流程图
系统启动程序所执行的操作同具体的目标系统和开发系统相关,对于S3C44B0X来说,包含以下内容:
(1)硬件初始化
BootLoader程序程序设计分四步进行,首先是硬件初始化,主要包括:
禁止看门狗、禁止所有中断、设定时钟控制寄存器、锁相环倍频设定、所有功能单元块时钟功能、设定存储器控制寄存器、初始化堆栈等,这些程序都是在FLASH中直接进行的。
(2)初始化存储器系统
初始化存储器系统的编程对象是系统的存储器控制器,存储器控制器并不是ARM内核的部分,不同的系统其设计不尽相同,所以应该针对具体的要求来完成这部分的程序设计。
(3)初始化堆栈
程序如下所示:
Idrr0,=WTCON/*禁止看门狗*/
Idrr1,=0
strr1,[r0]
Idrr0,=INTMSK
Idrr1,=0x07ffffff/*禁止所有中断*/
strr1,[r0]
/*设置时钟控制寄存器*/
Idrr0,=LOCKTIME
Idrr1,=0xfff
strr1,[r0]
_ifpLLONSTART
Idrr0,=PLLCON/*锁相环倍频设置*/
Idrr1,=((M_DIV<<12)+(P_DIV<<4)+S_DIV)
/*Fin=8Mhz,fout=64Mhz*/
strr1,[r0]
endif
Idrr0,=CLKCON
Idrr1,=0x7ff8/*所有功能单元块时钟所能*、
strr1,[r0]
/*设置存储器控制寄存器*/
Idrr0,=(SMRDATA-0xc000000)
Idmiar0,{r1-r13}
Idrr0,=0x01c80000/*BWSCON地址*/
stmiar0,{r1-r13}
/*初始化堆栈*/
InitStack:
mrsr0,cpsr/*cpsr->r0*/
bicr0,r0,#MODEMASK|NOINT
/*安全起见,屏蔽模式位以外的其他位*/
Orrr1,r0,#UNDEFMODE/*把设置模式位设置成需要的模式*/
msrcpsr_cxsf,r1/*转到Undef模式*/
Idrsp,=UndefStack/*设置SP_und*/
Orrr1,r0,#ABORTMODE|NOINT
msrcpsr_cxsf,r1/*Abort模式*/
Idrsp,=AbortStack
Orrr1,ro,#IRQMODE|IRQ_MODE
msrcpsr_cxsf,r1/*FIQ模式*/
Idrsp,=FIQStack
bicr0,r0,#MODEMASK
Orrr1,r0,#SVCMODE
msrcpsr_cxsf,r1/*SVC模式*/
(4)初始化应用程序执行环境
不同的工具链会提供一些不同的机制和方法帮助用户完成这一步操作,主要是跟连接器相关。
下面是在ARM开发工具环境下,一种常用存储器模型的直接实现:
LDRr0,=Image_RO_Limit/*获取ROM数据区的地址*/
LDRr1,=Image_RW_Base
LDRr3,=Image_ZI_Base
CMPr0,r1
BEQF1
F0:
CMPr1,r3
LDRCCr2,[r0],#4
STRCCr2,[r1],#4
BCCF0
F1:
LDRr1,=Image_ZI_Limit
MOVr2,#0
F2:
CMPr3,r1/*零初始化*/
STRCCr2,[r3],#4
BCCF2
(5)跳转到主应用程序
当所有的系统初始化工作完成之后,就需要把程序流程转入应用主程序,最简单的一种情况是:
/*跳到main()*/
BLMain
B
4.2µC/OS-Ⅱ在S3C44B0X处理器上的移植
大部分的µC/OS-Ⅱ代码是使用ANSIC语言书写的,因此µC/OS-Ⅱ的可移植性好,然而仍需要使用C和汇编语言写一些处理器相关代码,µC/OS-Ⅱ的移植需要满足一下要求:
①处理器的C编译器可以产生可重入代码;
②可以使用C调用进入和退出临界区代码;
③处理器必须支持硬件中断,并且需要一个定时中断源;
④处理器需要能够容纳一定数据的硬件堆栈;
⑤处理器需要有能够在CPU寄存器与内核和堆栈交换数据的指令。
所以,S3C44B0X处理器完全满足上述要求,我们使用ARMSDT编译器,移植µC/OS-Ⅱ主要包括以下几个步骤:
(1)设置OS_CPU.H中与处理器核编译器相关的代码。
定义数据类型,与编译器相关,如#defineSVC32MODE0x13
移植后的OS运行在SVC模式下;
TypedefunsignedintOS_STK,因为处理器现场的寄存器在任务切换时都将会保存在当前运行任务的堆栈中,所有OS_STK数据类型应该是和处理器的寄存器长度一致。
另外,还有定义堆栈的方向,在S3C44B0X处理器中我们定义为:
#defineOS_STK_GROWTH1
(2)用C语言在OS_CPU_C、C中编写6个操作系统相关的函数。
编写OSTaskStkInit函数,完成装载堆栈指针,为新任务创建上下文等,OSTaskCreate和OSTaskCreateExt通过调用OSTaskStkInit来初始化任务的堆栈结构,堆栈看起来就像中断刚发生过一样,所有寄存器都保存在堆栈里,而其它的五个钩子函数(HOOK)由用户实现,这里只有定义即可。
(3)用汇编语言在OS_CPU_ASM中编写4个与处理器相关的函数。
其中OSStartHighRdy()来使就绪态任务中优先级最高的任务开始运行。
OSCtxSw()用来实现任务切换功能。
OSIntCtxSw()用来在ISR中执行任务切换功能。
OSTickISR()是时钟节拍中断处理程序。
4.3应用程序模块设计
µC/OS-Ⅱ仅仅是一个实时多任务的内核。
µC/OS-Ⅱ移植到处理器平台,要实现一个相对完整、实用的嵌入式实时多任务操作系统,还需要对µC/OS-Ⅱ进行扩展。
应用程序总体结构如图4-3所示:
图4-3DTU系统应用程序总体结构
在启动多任务操作系统前应首先完成对处理器硬件及系统外部硬件设备的初始化,包裹处理器初始化、串口初始化等;在系统硬件准备就绪后,按系统要求划分并创建系统任务;最后启动多任务操作系统,进行对各任务的调度。
µC/OS-Ⅱ是一个基于优先级的多任务实时内核。
因此在设计应用程序是,首要的任务是把整个应用程序按功能划分为几个任务。
实时系统中的任务有别于前后台系统中的字程序模块飞任务是处理器按程序处理数据的过程,是个动态的概念。
一般一个任务对用于一段独立的主程序,它可以调用各种子程序,并使用各种系统资源如中断、外设等,以完成某种设定的功能。
第五章总结
计算机信息和网络技术的发展,正在深刻地改变着我们的生活,给我们的行为生活方式带来前所未有的变革。
现在,嵌入式系统是后PC时代发展的重点。
其中嵌入式系统的网络化是当今嵌入式领域的一大研究热点,在军事和民用领域都有非常广泛的应用前景。
嵌入式产品将成为互联网的主要终端之一,嵌入式网络平台的研究将使得更多的工业设备和仪器方便、快捷、经济的接入Internet,因而具有广阔的市场前景。