新闻中心

EEPW首页>嵌入式系统>设计应用> 基于μPSD32xx系列单片机无线远程IAP的实现

基于μPSD32xx系列单片机无线远程IAP的实现

作者: 时间:2013-10-16 来源:网络 收藏

IAP简介

IAP是应用在Flash程序存储器的一种编程模式。可以在应用程序控制下,对程序存储空间进行读取、擦除、写入操作。与ISP操作非常相似,不需要从电路板上取下芯片用编程器烧写,都具有在线编程功能。两者之间的不同点是:ISP通常是整片擦除、编程,在手工操作下通过PC串口下载程序到Flash,而IAP却是在某段程序的控制下对另外一段程序Flash进行读写操作。

IAP的实现

IAP就是肩动程序把新的用户程序编程到指定的Flash中。对Flash程序存储器的读/写操作是实现IAP的关键,下面给予详细介绍。

MCU可以像读ROM器件那样读Flash存储器,但只能使用特殊的擦除和编程指令对Flash存储器进行编程。

Flash存储器在被编程之前必须先被擦除。Flash存储器的一个字节被擦除为全1(FFh),通过设置选择位为0来编程。MCU可一次擦除所有Flash存储器或一个扇区,不能按字节擦除,而MCU可以按字节编程。一旦MCU发出Flash存储器编程/擦除指令,可以通过几种方法判断是否编程/擦除完毕,程序中用到了下面两种判断方法来对Flash进行编程。

数据轮询法

数据轮询法的编程由函数unsigned char flash_boot_write_with_poll(volatile uchar xdata*addr,uchar dat)完成。当从监控中心接收的命令是要求用数据轮询法对旧用户程序更新时,主程序中就会调用此函数,MCU发出一个编程指令,内置的算法就开始运行。出错标志(DQ5)位为1标志编程周期超时,为0标志没有出错。MCU可以读取被编程扇区任意位置的数据轮询(DQ7)位和出错标志位。

数据跳转法

数据跳转法的编程由函数unsigned char flash_write_with_toggle(volatile uchar xdata*addr,uchar dat)完成。编程周期与数据轮询法大致相同,区别在于MCU读的不是DQ7,而是数据跳转标志(DQ6)位。在编程期间,DQ6位一直跳转,直到编程周期完成。DQ5位为1标志编程周期超时,为0标志没有出错。MCU可以读取被编程扇区任意位置的DQ6位和DQ5位。

另外,此芯片还有Flash存储器扇区保护功能:主Flash和第二Flash存储器的每个扇区都可以被单独地保护,防止被编程和擦除。该功能为所有的编程或擦除失效提供了额外的数据安全保障。

在本设计中,第二Flash的CSBOOT1扇区保存了门控的一些固定卡号,此扇区应被保护。第二Flash的其余几个扇区都作为备用,保存一些电源或空调参数以及需要添加的门控卡号,这些数据都是可变的,所以不被保护。可以通过JTAG口或器件编程器设置使Flash存储扇区被保护或解除保护。MCU可以通过读扇区保护寄存器(CSIOP块里)来读取扇区保护状态,但不能改变它。

IAP功能的主程序设计

系统上电后,程序首先在启动扇区内运行,等待上位机发来的命令,根据命令执行相应操作(见图2)。超时或没有命令发来就自动切换到用户程序。需要更新用户程序时,切换回启动程序。


异常处理

系统工作中主要有掉电、通信中断、误码这三种情况会导致程序升级失败。以下简单介绍本设计所采取的一些保护措施。

第一种情况,考虑到环境导致的电源稳定性差和雷电、继电器等高压信号的干扰。系统采用了高隔离度DC/DC电源模块把外界地和系统地隔离开,并且在容易受干扰的串口部分加入了高速光耦进行隔离;第二种情况,系统用到了串口、GPRS/GSM、TCP/IP组合成的复杂通信网络。由于只要有一个通信故障就会造成上、下位机之间的通信失败,所以,为了防止因通信失败而造成系统瘫痪,程序中用Eeprom_Init函数在通信失败或掉电情况下对数据进行恢复和修理;第三种情况,在上、下位机通信过程中,尽管通信正常,但由于数据量大,有产生误码的可能性。因此,程序中对接收到的每一帧数据都先检验帧类型,然后对其作4字节的校验和判断。如果校验有误,将错误信息类型回传给上位机重发,直到数据完全正确,才将这一帧数据保存到Flash相应地址里。

结语

本文所介绍的的实现是基于,且已在无线基站动态环境监控系统项目中使用,极大地方便了系统程序的及时更新,可靠性也得到了验证。可以直接应用到各种电力、水资源和其它无线监控系统中。

参考文献:
[1]. GPRS datasheet http://www.dzsc.com/datasheet/GPRS_1594650.html.
[2]. DDC datasheet http://www.dzsc.com/datasheet/DDC_1870710.html.
[3]. Maxim datasheet http://www.dzsc.com/datasheet/Maxim_1062568.html.
[4]. MAX202CPE datasheet http://www.dzsc.com/datasheet/MAX202CPE_1015502.html.
[5]. 74LS11 datasheet http://www.dzsc.com/datasheet/74LS11_1493173.html.
[6]. Q2406B datasheet http://www.dzsc.com/datasheet/Q2406B_561524.html.
[7]. ROM datasheet http://www.dzsc.com/datasheet/ROM_1188413.html.


上一页 1 2 下一页

评论


相关推荐

技术专区

关闭