基于GPRS的单片机固件升级系统设计

[09-12 16:04:24]   来源:http://www.88dzw.com  单片机学习   阅读:8928

文章摘要:2 系统软件设计该终端设备在工作期间,会收到远程服务器发送来的一系列控制命令,如测试周围附近的网络信号指令,给某个手机拨打电话并记录通话状态下的信号指令等。这些操作都是由单片机通过串口发送给GRPS模块的AT指令实现的。例如SEND String(”AT-SMONC\r”),单片机将“AT-SMONC”这条命令通过串口发送给GPRS模块,该模块可自动测得主小区及相邻小区的信号指令数据,并通过串口发送给单片机以供其处理。同样,单片机可接收到远程升级指令,从而启动远程升级功能。2.1 升级系统软件设计本系统软件由两部分组成:主程序和升级程序,分别对应于Main工程和Update工程。Main工程负

基于GPRS的单片机固件升级系统设计,标签:单片机开发,单片机原理,单片机教程,http://www.88dzw.com


  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网络传输的终端固件升级系统,给出了合理的芯片选型,以及独立的固件升级程序。该升级系统已应用到实际产品应用中,并取得了很好的效果。


上一页  [1] [2] 


Tag:单片机学习单片机开发,单片机原理,单片机教程单片机学习
分类导航
最新更新
热门排行