基于ARM9芯片S3C2410a的GPRS数据终端设计
扫描二维码
随时随地手机看文章
为了满足GPRS数据终端的低成本、小型化和移动灵活等要求,采用ARM9芯片S3c2410a对GPRS数据终端进行控制。本文在S3C2410a中移植的是Linux操作系统,通过Linux操作系统可方便快捷地进行数据的传输和网络终端的控制;同时改善了系统性能,提高了系统可靠性,并使系统的扩展和开发性能进一步得到提高。
1 GPRS技术
1.1 GPRS工作原理
GPRS的英文全称是General Packet Radio Service,译作“通用分组无线服务”,它是利用“包交换”(Packet-Switched)的概念发展起来的一套无线传输方式。所谓“包交换”就是将Data封装成许多独立的封包,再将这些封包一一传送出去,形式上有点类似邮局中的寄包裹。其作用在于只有当有资料需要传送时才会占用频宽,而且可以以传输的资料量计价,这对广大用户来说是较合理的计费方式,因为像Interact这类的数据传输大多数的时间频宽是闲置的。
GPRS网络是基于现有的GSM网络来实现的,在现有的GSM网络中需增加一些节点,如GGSN(Gateway GPRS Supporting Node,GPBS网关支持节点)和SGS(Serving GSN,GPRS服务支持节点),GSN是GPRS网络中最重要的网络节点。GSN具有移动路由管理功能,它可以连接各种类型的数据网络,并可以连到GPRS寄存器。GSN可以完成移动终端和各种数据网络之间的数据传送和格式转换。GSN可以是一种类似于路由器的独立设备,也可以与GSM中的MSC集成在一起。
GSN有两种类型:一种为SGSN(Serving GSN,服务GSN),另一种为GGSN(Gateway GSN,网关GSN)。SGSN的主要作用是记录移动终端的当前位置信息,并且在移动终端和GGSN之间完成移动分组数据的发送和接收。GGSN主要是起网关作用,它可以和多种不同的数据网络连接。如ISDN。PSPDN和LAN等。GGSN可以把GSM网中的GPRS分组数据包进行协议转换,从而可以把这些分组数据包传送到远端的TCP/IP或X.25网络。GPRS工作时,通过路由管理来进行寻址和建立数据连接,而GPRS的路由管理表现在以下3个方面:一是移动终端发送数据的路由建立;二是移动终端接收数据的路由建立;三是移动终端处于漫游时数据路由的建立。对于第一种情况,当移动终端产生了一个PDU分组数据单元,这个PDU经过SNDC层处理,称为SNDC数据单元,然后经过LLC层处理为LLC帧,并通过空中接口送到GSM网络中移动终端所处的SGSN,SGSN把数据送到GGSN,GGSN把收到的消息进行解装处理,转换为可在公用数据网中传送的格式(如PSPDN的PDU),最终送给公用数据网的用户。为了提高传输效率,并保证数据传输的安全,可以对空中接口上的数据做压缩和加密处理。在第二种情况中,一个公用数据网用户传送数据到移动终端时,首先通过数据网的标准协议建立数据网和GGSN之间的路由。数据网用户发出的数据单元(如PSPDN中的PDU),通过建立好的路由把数据单元PDU送给GGSN。而GGSN再把PDU送给移动终端所在的SGSN上,GSN把PDU封装成SNDC数据单元,再经过LLC层处理为LLC帧单元,最终通过空中接口送给移动终端。第三种情况是一个数据网用户传送数据给一个正在漫游的移动用户。这种情况下的数据传送必须要经过归属地的GGSN,然后送到用户A端。
1.2 GPRS的协议模型
Um接口是GSM的空中接口。Um接口上的通信协议有5层,自下而上依次为物理层、MAC (Media Access Control)层、LLG(Logical LinkControl)层、SNDC层和网络层。Um接口的物理层为射频接口部分,而物理链路层则负责提供空中接口的各种逻辑信道。GSM空中接口的载频带宽为200 kHz,一个载频分为8个物理信道。如果8个物理信道都分配为传送GPRS数据,则原始数据速率可达200 kb/s。考虑前向纠错码的开销,则最终的数据速率可达164 kb/s左右。MAC为媒质访问控制层。MAC的主要作用是定义和分配空中接口的GPRS逻辑信道,使得这些信道能被不同的移动终端共享。LLG层为逻辑链路控制层。它是一种基于高速数据链路规程HDLG的无线链路协议。SNDC被称为子网依赖结合层。它的主要作用是完成传送数据的分组、打包,确定TCP/IP地址和加密方式。网络层的协议目前主要是Phasel阶段提供的TCP/IP和L25协议。TCP/IP和X.25协议对于传统的GSM网络设备(如:BSS,NSS等设备)是透明的。[!--empirenews.page--]
2 嵌入式系统设计
2.1 系统硬件结构
2.1.1 ARM9系统硬件结构
ARM9系统硬件结构见图1。
2.1.2 GPRS传输设备
本文使用的GPRS传输设备是北京华荣汇通信设备有限公司开发的GR100型GPRS MODEM,采用了高性能内嵌TCP/IP协议栈GPRS模块。
2.2 系统运作过程
(1)物理过程。ARM利用AT指令通过GPRSModem拨号,正确反馈及应答后,一条物理通道即GPRS信道就在系统中的GPRS Modem和GPRS网络之间建立起来。
(2)数据过程。PPP协议将原始的GPRS物理层连接改造成无差错的数据链路,系统将远程登录Internet,并得到GPRS网关分配的IP地址。
(3)网络过程。采用IP协议作为网络层协议。IP协议将接人Internet的具有不同IP地址的终端都联系起来。经过IP路由选择,可以实现系统与连在Internet上的任一IP终端进行数据交互。
(4)传输过程。选择TCP作为传输层协议,为数据传输提供面向连接,可靠服务。
3 软件设计
3.1 嵌入式系统的引导代码Bootloader
Bootloader(引导加载程序)是嵌入式系统加电后运行的第一段代码,在PC中,引导加载程序由BIOS和位于硬盘MBR中的操作系统引导加载程序一起组成的。
Bootloader启动大多数分为2个阶段。第一阶段主要包含依赖于CPU的体系结构硬件初始化的代码,通常都用汇编语言来实现。这个阶段任务有:基本的硬件设备初始化(屏蔽所有的中断、关闭处理器内部指令,数据Cache等);为第二阶段准备RAM空间;如果是从某个固态存储媒质中,则复制Bootloader的第二阶段代码到RAM中;设置堆栈;跳转到第二阶段的C程序入口点。
第二阶段通常用c语言完成,以便实现更复杂的功能。这个阶段任务有:初始化本阶段要使用到的硬件设备;检测系统内存映射;将内核映像和根文件系统映像从Flash读到RAM 为内核设置启动参数;调用内核。
在U-BOOT(在PPC-BOOT的基础上进化而来的一个开放源码的嵌入式BOOTROM程序)中通过下面两行代码进行两个阶段的工作交换:
Ldr pc,_start_armboot
_start_armboot:.word staxt_armboot
Bootloader调用Linux内核的方法是直接跳转到内核的第一指令处,在跳转时必须满足下列条件:CPU寄存器设置。R0为O;R1为机器类型ID;R2为启动参数,标记列表在RAM中的起始基地址,CPU模式。必须禁止中断(IRQs和VlQs);CPU必须设置为SVC模式。Cache和MMU的设置。MMU必须关闭;指令Cache可以打开也可以关闭;数据Cache必须关闭。在编写完Bootloader后,利用JTAG下载电缆.烧写到Nor Flash中即可。
3.2 配置和编译Linux内核
Linux内核主要由5个子系统组成:进程调度、内存管理、虚拟文件系统、网络接口、进程间通信。
3.2.1 配置内核
配置内核的命令有make config;make oldcoafig;make menucoafig;make xconfig。无论哪个命令都将产生config文件,并在每一个c源文件中加上<Linux/config.h>,使define的宏起全局性的作用。
3.2.2 编译内核
编译内核需要3个步骤,分别是创建内核依赖关系、创建内核镜像文件和创建内核模块。执行make up命令进行编译。
生成内核以后,接下来要做的是安装它。对每一个内核配置来说。要复制4个丈件:没有压缩的内核镜像(zlmage和bzlmage)、压缩的内核镜像(vmlinux)、内核符号映射文件(System.map)以及配置文件(config)。
最后用loader.exe烧写zlmage 或bzImage 到Nor Flash 的0x00010000地址。
4 GPRS数据终端实现
GR100通过RS232接口与ARM9系统连接,最终实现了基于ARM9芯片S3c2410a的GPRS数据终端。该终端内部已移植了Linux操作系统,可在该系统下自主开发软件,使其功能更加强大,例如连接LCD,实现可视化操作等。