您现在的位置:首页 > 技术资料 | 上载库存 |
基于AT91M40800的无线数据终端
摘 要 随着中国移动GPRS和中国联通CDMA1X网络的建成商用,GPRS/CDMA无线数据终端的应用范围越来越广。本文介绍了ATMEL公司基于ARM7TDMI核的微控制器AT91M40800的内部结构和扩展外围,并在此硬件平台上移植了μC/OSII嵌入式操作系统、Interniche网络协议栈和μC/FS文件系统,从而给出了一个完整的GPRS/CDMA无线数据终端的实现方案。 1 引 言 GPRS/CDMA无线数据网络系统由于其覆盖范围广,通信质量高,永远在线和按流量计费等优点,在无线上网、环境监控和数据采集等许多行业得到了广泛应用。作为系统重要组成部分的GPRS/CDMA无线数据终端,为了满足其成本低,体积小和移动灵活的要求,目前普遍使用的方案是在单片机系统上加载一些操作系统和网络协议栈来控制无线模块登录GPRS/CDMA网络,从而实现数据的传输。但由于目前的单片机大多仍是8位系统,处理速度较慢,且硬件资源有限,对操作系统和协议栈的支持能力不够强,因此实际运行起来效果并不理想。ARM处理器凭借其功能强,功耗低,性能高的优势迅速成为了各种控制应用领域的首选。本文通过采用ATMEL公司的AT91M40800处理器并外扩大容量存储器的方法来构建功能强大的硬件平台,并在此硬件平台上移植了μC/OSII嵌入式操作系统、网络协议栈和文件系统,从而大大提高了终端的可靠性,增强了系统的可扩展性和产品开发的可延续性。 2 硬件平台 GPRS/CDMA无线数据终端采用ATMEL公司的一款ARM7微控制器AT91M40800,其特点如下:
图1为GPRS/CDMA无线数据终端的结构框图。AT91M40800内部只集成了8 KB的SRAM,为了使μC/OSII操作系统、网络协议栈和文件系统能够正常移植运行,系统外扩了1 MB的FLASH和SRAM。使用的片选信号分别是NCS0和NCS1,处理器上电REMAP后分别映射到0x01000000和0x02000000的地址空间。为了满足系统存储数据和一些须修改的配置信息的需要,终端在外扩的FLASH里创建了μC/FS文件系统,文件系统和用户程序共用一片FLASH。用户程序固化在0x01000000~0x0107FFFF前512 KB的地址空间内;文件系统创建在0x01080000~0x010FFFFF后512 KB的地址空间内。
终端提供了RS232、RS485和RJ45 3种用户接口。由于AT91M40800内部集成了2个UART,因此只须外加一片RS232电平转换芯片和一片RS485收/发驱动芯片就能很容易地扩展出RS232和RS485用户接口。扩展RJ45以太网口时,系统使用了RTL8019AS以太网接口芯片。RTL8019AS是Realtek公司高集成度的专用以太网接口芯片,支持EthernetII、IEEE802.3、10Base5、10Base2和10BaseT,支持UTP、AUI&BNC和PnP自动探测模式,并且内嵌16 KB SRAM用于收/发缓冲,降低了对主处理器的速度要求。它还支持8位、16位数据总线模式,有全双工的通信接口,是进行以太网通信的理想芯片。要实现这些功能,需要依据RTL8019用户手册的描述,对其进行正确的配置,编写出发送包、接收包函数以及外部中断处理程序;系统加载TCP/IP网络协议栈后通过调用这些函数即可实现网络数据的传送。 系统还通过TL16C550扩展了一个标准的9线串口以连接GPRS/CDMA无线猫。TLl6C550的主要功能是在接收外部器件或MODEM的数据时完成数据串行到并行的转换;在接收CPU的数据时,完成数据并行到串行的变换并进行串行发送。在任何工作状态下,CPU均可读取和通报器件的状态。TLl6C550的内部包含一个可编程的波特率发生器,波特率为16x内部输入时钟频率,此内部输入时钟频率由输入的参考基准振荡器分频(由波特率分频寄存器的值决定)得到。TLl6C550具有完全的MODEM控制能力,根据用户的需要可以设置成中断或查询方式。对TL16C550的操作比RTL8019更为简单,只需对其为数不多的寄存器操作,便可实现对器件的模式设置、收发处理和状态控制等。在此基础上通过封装一些收/发的函数即可完全实现和GPRS/CDMA无线猫的全双工通信。 终端上电初始化后,从文件系统中读出相应的配置信息,接着通过TL16C550向无线猫发送相应的AT指令;无线猫登陆网络成功后,系统通过加载PPP/TCP/UDP/IP等协议,同中心建立起SOCKET连接;然后在μC/OS-II实时操作系统下通过多个任务的调度,即可实现RS232/RS485/RJ45数据和中心站的相互通信。 3 μC/OSII嵌入式操作系统 μC/OSII是一种免费公开源代码,结构小巧,具有可剥夺实时内核的实时操作系统,其内核提供任务调度与管理、时间管理、任务间同步与通信,以及内存管理和中断服务等功能。μC/OSII是面向中小型嵌入式系统的,如果包含全部功能(信号量、消息邮箱、消息队列及相关函数),则编译后的内核仅有6~10 KB,可以广泛应用于从8位到64位单片机各种不同类型、不同规模的嵌入式系统。要使μC/OSII正常运行,处理器必须满足以下要求:
AT91M40800完全可以满足这些要求,因此可将μC/OSII移植到上面运行。μC/OSII的移植比较简单,在完成对CPU的初始化以后,首先对时钟节拍进行设置(10~100 Hz)。只须对AT91M40800编写相应的定时器中断处理程序,在程序中调用操作系统的函数OSTimeTick(),并在其AIC(Advanced Interrupt Controller )中设置定时器的优先级别,将定时器中断处理程序的地址放到相应的中断向量表中。使定时器产生中断,必须在开始多任务调度后,即在第一个任务中使能定时器。其次,对μC/OS-II移植主要集中在includes.h、OS_CPU_A.S和OS_CPU_C.C等CPU相关文件的改动,上层任务调度部分无需任何修改。对于多任务操作系统,只需将复杂的应用分成简单的、相互联系的任务,再把各个不同优先级的任务交给操作系统去管理。 4 Interniche网络协议栈 为了使GPRS/CDMA模块能登录无线网络并与中心建立SOCKET连接,系统移植了Interniche公司源码开放的嵌入式TCP/IP/PPP协议栈。Interniche能使系统很容易在μC/OS-II操作系统的调度下为开发平台增加网络通信和网络管理等功能。由于它是专门为嵌入式系统而设计的,所以占用的系统资源很少。Interniche协议全部用标准C语言,除了可以运行在如μC/OSII、VRTX、CMX和Threadx等多种RTOS下,还可在无RTOS的环境下独立运行。常用的Interniche包括:
只须根据以太网控制器手册的描述,编写出发送包、接收包的函数,以及用于以太网控制器的外部中断处理程序即可完成对Interniche网络部分的移植。由于Interniche协议栈也是可以获得源码的,所以对于任何网络控制器都可通过不断的调试最终完成自己的驱动程序。此外,为了方便调试,使Niche ToolTM工作,还应完成对Interniche中向串口收/发字符putchar()和getch()的移植,这样就可以在PC端使用超级终端经过串口与终端设备上的Interniche基于命令行进行交互了。Interniche的各种协议簇可以根据需要由μC/OS-II调度的状态查询任务。 5 μC/FS文件系统 μC/FS是FAT型文件系统,它适用于所有存储介质,需要用户为这些储存介质提供基本的硬件访问函数。μC/FS在速度、多功能性和内存封装上都做了优化,支持FAT12、FAT16和FAT32文件系统,支持各种不同的设备驱动,从而允许用户在同一时间通过文件系统访问不同类型的硬件,通过设备驱动在同一时间访问不同的介质。μC/FS还支持操作系统,包括μC/OSII在内的多种操作系统都可以很方便地与μC/FS结合,这样用户即可在多线程环境下进行文件操作。
② 文件系统层: 把文件操作请求传递给逻辑块操作。通过这种传递,文件系统调用逻辑块操作来为设备指定相应的设备驱动。 6 结束语 本文提出了一种基于ARM处理器和嵌入式操作系统的GPRS/CDMA无线数据终端的实现方案。首先给出了系统硬件的的原理结构框图,说明了系统中主要元器件的性能和使用方法;然后分别介绍了μC/OSII嵌入式操作系统、Interniche网络协议栈和μC/FS文件系统的结构、特性以及主要的移植步骤。目前笔者已完成了终端软硬件的调试工作,系统测试稳定可靠,可以广泛应用在水电气费管理(如远程抄表)、环保和电力监控等场合,具有广阔的使用前景。
|