设计基于中国移动GPRS无线网络,以C8051F340单片机为核心,GSM/GPRS/EDGE无线模块MC75作为通信模块开发的网络测试终端设备。当该终端设备的固件需要升级时,在远程服务器端开启FTP服务器并与终端建立连接,终端从该FTP服务器上下载已更新的二进制升级文件并存储在外部Flash中,在主程序进行校验后跳转到升级程序段覆盖掉片内Flash中原有的固件程序,完成系统固件远程更新。
引言
嵌入式技术的迅速发展使得越来越多的嵌入式终端设备应用在人们的日常生活中,其中不乏应用在一些偏远地方,甚至工作在无人看管的场合下。人口比较稀少的地方,由于基站分布比较分散,加之人口比较稀疏,基站维护等操作常难以执行,这就需要在某些地方放置网络信号测试仪检测该地区的通信信号质量,并将该信息反馈到远程服务器。同时,由于硬件系统程序设计固有的局限性,固件程序的升级在所难免。针对实际情况,本文开发了网络信号测试仪的单片机远程升级系统。
1 系统硬件设计
整个系统以Silicon Labs公司推出的混合信号片上系统型单片机C8051F340作为核心控制单元,采用GSM/GPRS/EDGE无线模块MC75作为与远程服务器的通信模块,采用上海丽浪电子有限公司推出的R36模块作为GPS模块,通过GPS卫星接收RMC格式的导航电文供终端设备定位用。C8051F340单片机包含两个TTL电平的串行接口,分别与GPRS模块和GPS模块进行通信。GPRS模块可接收远程控制台发来的控制指令,并传输给单片机进行处理。系统总体框图如图1所示。
1.1 C8051F340介绍
C8051F340具有片内上电复位、VDD监视器、电压调整器、看门狗定时器和时钟振荡器等内部资源,是真正能独立工作的片上系统。Flash存储器还具有在系统重新编程能力,可用于非易失性数据存储,并允许远程更新8051固件程序。用户软件对所有外设具有完全的控制,可以关断任何一个或所有外设以降低功耗。
C8051F340的主要特点:
◆高速、流水线结构并与8051兼容的微控制器内核 (可达48 MIPS);
◆全速、非侵入式的在系统调试接口(片内);
◆精确校准的12 MHz内部振荡器和4倍时钟乘法器;
◆64 KB的片内Flash存储器,4532字节的片内RAM;
◆硬件实现的SMBUS接口,2个增强型UART(TTL电平)、1个增强型SPI串行接口;
◆4个通用的16位定时器;
◆5个捕获/比较模块和具有看门狗定时器功能的可编程计数器/定时器阵列(PCA)。
1.2 单片机与GPRS模块通信电路设计
MC75模块是Siemens公司推出的第三代GSM/GPRS/EDGE无线模块。这种模块能处理高数据密集型多媒体设施,可以应用于全球的GSM网络。其主要特点为:
◆支持850 MHz、900 MHz、1 800 MHz、1 900 MHz四种频段;
◆E-GPRS下行速率可达460 kbps;
◆EDGE(E-GPRS)multi-slot ClasslO:
◆GPRS移动基站ClassB;
◆SMS及SMS蜂窝广播;
◆板载SIM卡捅槽或外接SIM卡读卡器,支持USB接口;
◆AT指令GSM07.05及GSM07.07;
◆输入电压为3.2~4.5 V,建议使用3.8 V±O.2 V。
C8051F340与MC75模块的通信电路如图2所示。
1.3 单片机与串行FIash接口设计
C8051F340内部有64 KB的Flash,而整个系统程序为40 KB左右,为了实现远程升级功能,需将更新的程序存储在外部扩展Flash中。在此选用了Atmel公司的串行Flash,型号为AT45DBl61D。其电压工作范围为2.7~3.6 V,快速串行接口工作频率最高可达到66 MHz,空间大小为17 301 504位,由4096页组成(每页包含512字节或者528字节)。除了主存储器外,它还包括2片512或528字节的静态随机存储单元。在本系统设计中,AT45DB161D可存储系统中所需的一些网络信号参数,以便经过GPRS网络传递给远程主机;另外,还可以存储远程服务器发送的二进制升级文件。其与C8051F340的接口电路如图3所示。
2 系统软件设计
该终端设备在工作期间,会收到远程服务器发送来的一系列控制命令,如测试周围附近的网络信号指令,给某个手机拨打电话并记录通话状态下的信号指令等。这些操作都是由单片机通过串口发送给GRPS模块的AT指令实现的。例如SEND String(”AT-SMONC\r”),单片机将“AT-SMONC”这条命令通过串口发送给GPRS模块,该模块可自动测得主小区及相邻小区的信号指令数据,并通过串口发送给单片机以供其处理。同样,单片机可接收到远程升级指令,从而启动远程升级功能。
2.1 升级系统软件设计
本系统软件由两部分组成:主程序和升级程序,分别对应于Main工程和Update工程。Main工程负责与远端服务器进行通信,接收服务器发送的指令并进行相应操作;而Update工程编译、链接时,在其编译器链接选项中设置CODE(OxE000,PR?MAIN?UPDATE(0xE000)),可将Upd-ate工程编译、链接后生成的hex文件烧写到单片机内部Flash以0xE000作为起始地址处,同时默认地将Main工程编译、链接生成的二进制文件烧写到内部Flash的起始地址处。单片机在执行主程序过程中,检测到升级标志置1后,单片机跳转到升级程序地址处执行固件升级程序;升级完毕后,复位单片机,程序又从内部Flash的零地址开始执行更新的固件程序。图4为主程序流程,图5为相应的固件升级程序流程。主程序在运行过程中受远程服务器的实时控制。当固件程序需要更新时,在服务器端将准备更新的固件编译、链接后生成的hex或bin文件放入某一固定目录内,启用FTP服务器(如FtpMan),通过TCP/IP协议发送远程升级指令给测试终端;终端收到升级指令后启动相应的FTP接收功能,将远端文件分解成多个数据包并逐个存储在外部Flash中;存储完毕后,主程序会对该接收文件进行CRC校验,若校验无误,则通过函数指针跳转到升级程序功能区,启动升级程序,将二进制文件从外部Flash中转移到内部Flash对应的地址空间中去。单片机复位重启后,就可以从内部Flash的起始地址处执行更新完毕的程序。
2.2 函数指针应用
当主程序检测到升级标志后,主程序跳转到升级程序地址处执行升级固件程序,此处使用了函数指针的功能。
结语
本文设计了基于GPRS网络传输的终端固件升级系统,给出了合理的芯片选型,以及独立的固件升级程序。该升级系统已应用到实际产品应用中,并取得了很好的效果。