基于P89C51RD2IAP功能的数据存取与软件升级:大数据分析专业

摘要:分析BootROM中的部分源代码,重点是IAP功能以及ISP和IAP的相互关系;应用IAP功能将剩余程序空间转化为数据空间,以及自编ISP程序来实现仪器的软件升级。
  
  关键词:P89C51RD2BootROMIAP(ISP)功能软件升级
  
  1概述
  
  P89C51RD2是Philips公司的80C51系列单片机中的佼佼者,具有1KB的片上RAM和64KB的片上内存;具有3种编程方式,即在系统编程ISP(InSystemProgramming)、在应用中编程IAP(In-ApplicationProgramming)以及通过商用编程器的并行编程。ISP是指电路板上的空白器件可以编程写入最终用户代码,而不需要从电路板上取下器件,已经编程的器件也可以用ISP方式擦除或再编程;ISP是指在用户的应用程序中获取新代码对Flash块、Flash寄存器、Boot向量等进行擦除和重新编程,即可以用程序来改变程序。IAP对于仪器仪表的智能化意义重大。高档的智能化仪器都具有自诊断、自修复、自组织、自适应和自学习等功能,而这些功能实现的物质基础,就是仪器的程序可以根据实际情况进行改变和调整。
  
  Philips公司在P89C51RD2中提供了BootROM固件,位于0FC00H——0FFFFH空间,与闪存空间重叠,如图1所示。Philips公司提供了寻址该器件的方法,因此可以通过读取其目标代码进行分析研究。有关BootROM的读出方法以及BootROM与ISP功能的实现在参考文献3已有所论述。
  
  P89C51RD2的IAP功能的实现了是靠Philips公司提供的BootROM固件来实现的。BootROM固件中已经固化有上述擦除和编程等子程序,只要应用程序来调用即可。通过对BootROM反汇编内容进一步的分析可以看出:ISP和IAP是一脉相承的,ISP功能的实现调用IAP功能的子程序。本文将分析BootROM中有关IAP及IAP和ISP的相互关系,以达到深入了解和利用IAP功能的目的。
  
  2对BootROM中有关IAP功能代码的分析
  
  3对BootROM中ISP和IAP的相互关系分析
  
  2、3内容请见本刊网络补充版
  
  4IAP功能的使用
  
  4.1程序空间用作数据空间
  
  在一个实际的应用系统中,往往有一些关键性的数据需要保存,例如用户设置数据或重要的过程数据。目前的通过做法有两种:一种是在电路中扩展非易失性SRAM,多用在对时间要求比较苛刻的场合;另一种做法是扩展EEPROM(并行或串行)或类似存储器,多用在对时间要求不太荷刻的场合。这两种方法可达到掉电后数据不丢失的目的。
  
  P89C51RD2具有64KB的片上闪存,这对于一般的应用来说足够大,往往会有剩余的闪存空间。在通常状况下,MCU的编程只能通过商用编程器来进行,那么剩余的闪存空间只能作为程序升级的备用空间,而不能作为数据空间;另一方面,如果需要保存数据,还要另外扩展存储器,这样不但增加了电路板的面积,而且增加了调试难度。
  
  而P89C51RD2是一种具有IAP功能的单片机,其内存结构具有如下特点(见图1):
  
  ①闪存空间是分块的。64KB的内存空间共分5块,由低到高分别为8KB(BLOCK0)、8KB(BLOCK1)、16KB(BLOCK2)、16KB(BLOCK3)、16KB(BLOCK4);
  
  ②每一块都可以单独擦除;
  
  ③在程序中可以调用IAP功能,对闪存中的每一字节进行单独编程。
  
  正是由于上述3个特点,在一些对时间要求不是很荷刻的场合,都可以将剩余的闪存空间作为数据空间来使用。例如,作者在海洋气象监测仪器的研制中,有些关键数据需要存储,如整点的风速、风向、温度、湿度、气压和降水量的瞬时值和十分钟平均值,以及最值、极值、大风段等。而数据的采集要求3s采集1次,采集处理时间大约需要0.5s,则剩余的时间内就可以利用IAP功能来存储数据。这些存储的数据可以通过串口被上位机调用。
  
  由于整个软件经汇编后大约20KB,因此,将地址为0000H——7FFFH的32KB内存空间作为程序空间,则可以仪器的升级预留足够的空间;而将8000H——0FFFFH的32KB闪存空间留作数据存储空间。由图1可

[1] [2] [3] 下一页

推荐访问:基于P89C51RD2IAP功能的数据存取与软件升级 stc89c52 iap在线升级