




下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、基于AT91M40800的无线数据终端 摘 要 随着中国移动GPRS和中国联通CDMA1X网络的建成商用,GPRS/CDMA无线数据终端的应用范围越来越广。本文介绍了ATMEL公司基于ARM7TDMI核的微控制器AT91M40800的内部结构和扩展外围,并在此硬件平台上移植了C/OSII嵌入式操作系统、Interniche网络协议栈和C/FS文件系统,从而给出了一个完整的GPRS/CDMA无线数据终端的实现方案。 关键词 ARM处理器,C/
2、OSII嵌入式操作系统,C/FS文件系统,Interniche网络协议栈1 引 言 GPRS/CDMA无线数据网络系统由于其覆盖范围广,通信质量高,永远在线和按流量计费等优点,在无线上网、环境监控和数据采集等许多行业得到了广泛应用。作为系统重要组成部分的GPRS/CDMA无线数据终端,为了满足其成本低,体积小和移动灵活的要求,目前普遍使用的方案是在单片机系统上加载一些操作系统和网络协议栈来控制无线模块登录GPRS/CDMA网络,从而实现数据的传输。但由于目前的单片机大多仍是8位系统,处理速度较慢,且硬件资源有限,对操作系统和协议栈的支
3、持能力不够强,因此实际运行起来效果并不理想。ARM处理器凭借其功能强,功耗低,性能高的优势迅速成为了各种控制应用领域的首选。本文通过采用ATMEL公司的AT91M40800处理器并外扩大容量存储器的方法来构建功能强大的硬件平台,并在此硬件平台上移植了C/OSII嵌入式操作系统、网络协议栈和文件系统,从而大大提高了终端的可靠性,增强了系统的可扩展性和产品开发的可延续性。2 硬件平台 GPRS/CDMA无线数据终端采用ATMEL公司的一款ARM7微控制器AT91M40800,其特点如下:· 集成了ARM7TDMI处理器内核,高性能的32位R
4、ISC体系结构,具有高密度的16位指令集和嵌入式ICE(In?Circuit Emulation); · 8 KB片内SRAM; · 完全可编程的外部总线接口(EBI),片选线多达8个,最大可寻址空间为64 MB,具有软件可编程的8位或16位外部数据总线; · 8优先级、可单独屏蔽的向量中断控制器,具有4个外部中断,包括一个高优先级、低延迟的中断请求; · 32个可编程I/O口; · 3通道16位定时器/计数器; · 2个UART; · 可编程的看门狗定时器。 图1为GPRS/CDMA无线
5、数据终端的结构框图。AT91M40800内部只集成了8 KB的SRAM,为了使C/OSII操作系统、网络协议栈和文件系统能够正常移植运行,系统外扩了1 MB的FLASH和SRAM。使用的片选信号分别是NCS0和NCS1,处理器上电REMAP后分别映射到0x01000000和0x02000000的地址空间。为了满足系统存储数据和一些须修改的配置信息的需要,终端在外扩的FLASH里创建了C/FS文件系统,文件系统和用户程序共用一片FLASH。用户程序固化在0x010000000x0107FFFF前512 KB的地址空间内;文件系统创建在0x010800000x010FFFFF后512 KB的地址空
6、间内。图1 GPRS/CDMA无线数据终端结构框图 终端提供了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自动
7、探测模式,并且内嵌16 KB SRAM用于收/发缓冲,降低了对主处理器的速度要求。它还支持8位、16位数据总线模式,有全双工的通信接口,是进行以太网通信的理想芯片。要实现这些功能,需要依据RTL8019用户手册的描述,对其进行正确的配置,编写出发送包、接收包函数以及外部中断处理程序;系统加载TCP/IP网络协议栈后通过调用这些函数即可实现网络数据的传送。 系统还通过TL16C550扩展了一个标准的9线串口以连接GPRS/CDMA无线猫。TLl6C550的主要功能是在接收外部器件或MODEM的数据时完成数据串行到并行的转换;在接收CPU的数据时,完成数据并行到
8、串行的变换并进行串行发送。在任何工作状态下,CPU均可读取和通报器件的状态。TLl6C550的内部包含一个可编程的波特率发生器,波特率为16x内部输入时钟频率,此内部输入时钟频率由输入的参考基准振荡器分频(由波特率分频寄存器的值决定)得到。TLl6C550具有完全的MODEM控制能力,根据用户的需要可以设置成中断或查询方式。对TL16C550的操作比RTL8019更为简单,只需对其为数不多的寄存器操作,便可实现对器件的模式设置、收发处理和状态控制等。在此基础上通过封装一些收/发的函数即可完全实现和GPRS/CDMA无线猫的全双工通信。 终端上电初始化后,从文
9、件系统中读出相应的配置信息,接着通过TL16C550向无线猫发送相应的AT指令;无线猫登陆网络成功后,系统通过加载PPP/TCP/UDP/IP等协议,同中心建立起SOCKET连接;然后在C/OS-II实时操作系统下通过多个任务的调度,即可实现RS232/RS485/RJ45数据和中心站的相互通信。3 C/OSII嵌入式操作系统 C/OSII是一种免费公开源代码,结构小巧,具有可剥夺实时内核的实时操作系统,其内核提供任务调度与管理、时间管理、任务间同步与通信,以及内存管理和中断服务等功能。C/OSII是面向中小型嵌入式系统的,如果包含全部功能(信号
10、量、消息邮箱、消息队列及相关函数),则编译后的内核仅有610 KB,可以广泛应用于从8位到64位单片机各种不同类型、不同规模的嵌入式系统。要使C/OSII正常运行,处理器必须满足以下要求:· 处理器的C编译器能产生可重入代码; · 用C语言即可打开和关闭中断; · 处理器支持中断,并且能产生定时中断(通常为10100 Hz); · 处理器支持能够容纳一定量数据(可能是几千字节)的硬件堆栈; · 处理器有将堆栈指针和其他CPU寄存器读出或存储到堆栈或内存中的指令。 AT91M40800完全可以满足这些要求,因此
11、可将C/OSII移植到上面运行。C/OSII的移植比较简单,在完成对CPU的初始化以后,首先对时钟节拍进行设置(10100 Hz)。只须对AT91M40800编写相应的定时器中断处理程序,在程序中调用操作系统的函数OSTimeTick(),并在其AIC(Advanced Interrupt Controller )中设置定时器的优先级别,将定时器中断处理程序的地址放到相应的中断向量表中。使定时器产生中断,必须在开始多任务调度后,即在第一个任务中使能定时器。其次,对C/OS-II移植主要集中在includes.h、OS_CPU_A.S和OS_CPU_C.C等CPU相关文件的改动,上层任务调度部分
12、无需任何修改。对于多任务操作系统,只需将复杂的应用分成简单的、相互联系的任务,再把各个不同优先级的任务交给操作系统去管理。4 Interniche网络协议栈 为了使GPRS/CDMA模块能登录无线网络并与中心建立SOCKET连接,系统移植了Interniche公司源码开放的嵌入式TCP/IP/PPP协议栈。Interniche能使系统很容易在C/OS-II操作系统的调度下为开发平台增加网络通信和网络管理等功能。由于它是专门为嵌入式系统而设计的,所以占用的系统资源很少。Interniche协议全部用标准C语言,除了可以运行在如C/OSII、VRTX
13、、CMX和Threadx等多种RTOS下,还可在无RTOS的环境下独立运行。常用的Interniche包括: (1) 核心协议 NicheStackTM: InternicheTCP协议包含TCP、UDP、IP、TFTP、DHCP Client、ICMP、ARP、SLIP、BootTP以及DNS Client。 Niche ToolTM: 菜单驱动的协议调试和测试工具(包含在NicheStack和Nichelite中)。 NicheLiteTM: In
14、terniche微型化的TCP/IP协议,全部代码在12 KB以内;它包含全部NichestackTM的所有协议和1个最小化的Socket API,易于移植到从8位到32位的CPU上。 可选择应用模块:PPP、PPPoE、Telnet(Server&Client)、FTP(Server&Client)、IP Multicast和NichePOP3等。它为TCP/IP上的附加模块增加了POP3 Email服务器收邮件功能。 (2) 管理和配置协议 WebportTM: 嵌入
15、式Web服务器,让最终用户通过WWW浏览器配置和监控嵌入式设备,而避免编写专用的GUI界面。这些界面多数是与主机OS(如Win98)相关的,而且需要目标环境大量的资源,如文件系统。 Email Alerte: 为嵌入式系统增加预告和报警功能。它允许用户向本地或远程的Email地址发出预先设置好的信息(比如某个条件下的报警信息)。Interniche协议栈同样具有良好可移植特性,它对系统的要求只有:· 时钟,至少1 s“滴答”; · 内存和操作系统; · 至少具有一个网络接口设备(查询或中断驱动); · 相配的编译器和调
16、试器。 只须根据以太网控制器手册的描述,编写出发送包、接收包的函数,以及用于以太网控制器的外部中断处理程序即可完成对Interniche网络部分的移植。由于Interniche协议栈也是可以获得源码的,所以对于任何网络控制器都可通过不断的调试最终完成自己的驱动程序。此外,为了方便调试,使Niche ToolTM工作,还应完成对Interniche中向串口收/发字符putchar()和getch()的移植,这样就可以在PC端使用超级终端经过串口与终端设备上的Interniche基于命令行进行交互了。Interniche的各种协议簇可以根据需要由C/OS-II调
17、度的状态查询任务。5 C/FS文件系统 C/FS是FAT型文件系统,它适用于所有存储介质,需要用户为这些储存介质提供基本的硬件访问函数。C/FS在速度、多功能性和内存封装上都做了优化,支持FAT12、FAT16和FAT32文件系统,支持各种不同的设备驱动,从而允许用户在同一时间通过文件系统访问不同类型的硬件,通过设备驱动在同一时间访问不同的介质。C/FS还支持操作系统,包括C/OSII在内的多种操作系统都可以很方便地与C/FS结合,这样用户即可在多线程环境下进行文件操作。 C/FS根据其组织逻辑机构,可以分为4
18、层,如图2所示。 API层: C/FS与用户应用程序之间的接口。它包含了一个与文件函数相关的ANSI C库,如FS_FOpen和FS_FWrite等。API层把这些调用传递给文件系统层。目前在C/FS下只有FAT型文件系统可以获取, 但API层可以同时处理不同类型的文件系统层,所以在C/FS下可以同时使用FAT和其他文件系统。图2 C/FS 的层次体系 文件系统层: 把文件操作请求传递给逻辑块操作。通过这种传递,文件系统调用逻辑块操作来为设备指定相应的设备驱动。 逻辑块层:主要功能是使对
19、设备驱动的访问同步,并为文件系统层提供一个方便的接口。逻辑块层调用一个设备驱动来进行块操作。 设备驱动: 设备驱动是处于系统底层的例程,用以访问存储硬件。设备驱动结构简单,易于与用户自己的存储设备进行整合。 C/FS是为与所有类型的硬件协同工作而设计的,为了在C/FS中使用某种特定的硬件,需要提供该硬件的设备驱动。当用户要使用自己的设备驱动时,需要通知C/FS设备的名称以及采用的文件系统层的类型(目前只支持FAT)。用户可在FS_Conf.h文件中通过设置FS_DEVINFO来实现,FS_Conf.h文件用于初始化C/FS的全局设备信息表。第一个参数是设备名称,在调用C/FS API时会用到;第二个参数是指向文件系统层函数表的指针,目前只支持FAT;第三个参数是指向设备驱动函数表的指针。 如果要将C/FS移植到用户系统的FLASH里,则只有几个文件须修改。一个是CONFIG目录下的fs_conf.h和fs_port.h文件,需要根据系统的具体情况(如文件系统的设备类型,以及是否使用操作系统等)修改。还有DEVICE目录下的flash_conf.h和flash_de
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论