预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

基于P89C51RD2IAP功能的数据存取与软件升级摘要:分析BootROM中的部分源代码,重点是IAP功能以及ISP和IAP的相互关系;应用IAP功能将剩余程序空间转化为数据空间,以及自编ISP程序来实现仪器的软件升级。关键词:P89C51RD2BootROMIAP功能软件升级1概述P89C51RD2是Philips公司的80C51系列单片机中的佼佼者,具有1KB的片上RAM和64KB的片上内存;具有3种编程方式,即在系统编程ISP、在应用中编程IAP以及通过商用编程器的并行编程。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功能的使用程序空间用作数据空间在一个实际的应用系统中,往往有一些关键性的数据需要保存,例如用户设置数据或重要的过程数据。目前的通过做法有两种:一种是在电路中扩展非易失性SRAM,多用在对时间要求比较苛刻的场合;另一种做法是扩展EEPROM或类似存储器,多用在对时间要求不太荷刻的场合。这两种方法可达到掉电后数据不丢失的目的。P89C51RD2具有64KB的片上闪存,这对于一般的应用来说足够大,往往会有剩余的闪存空间。在通常状况下,MCU的编程只能通过商用编程器来进行,那么剩余的闪存空间只能作为程序升级的备用空间,而不能作为数据空间;另一方面,如果需要保存数据,还要另外扩展存储器,这样不但增加了电路板的面积,而且增加了调试难度。而P89C51RD2是一种具有IAP功能的单片机,其内存结构具有如下特点①闪存空间是分块的。64KB的内存空间共分5块,由低到高分别为8KB、8KB、16KB、16KB、16KB;②每一块都可以单独擦除;③在程序中可以调用IAP功能,对闪存中的每一字节进行单独编程。正是由于上述3个特点,在一些对时间要求不是很荷刻的场合,都可以将剩余的闪存空间作为数据空间来使用。例如,作者在海洋气象监测仪器的研制中,有些关键数据需要存储,如整点的风速、风向、温度、湿度、气压和降水量的瞬时值和十分钟平均值,以及最值、极值、大风段等。而数据的采集要求3s采集1次,采集处理时间大约需要,则剩余的时间内就可以利用IAP功能来存储数据。这些存储的数据可以通过串口被上位机调用。由于整个软件经汇编后大约20KB,因此,将地址为0000H~7FFFH的32KB内存空间作为程序空间,则可以仪器的升级预留足够的空间;而将8000H~0FFFFH的32KB闪存空间留作数据存储空间。由图1可以看出,从8000H~0FFFFH的32KB闪存空间由BLOCK3和BLOCK4两块组成,每一块为16KB,足可以存储10天的数据量。在实际操作中,将BLOCK3和BLOCK4轮流使用,当10天的数据量存满其中一块时,通过程序跳转到另一块中,在使用前先将该块擦除。这样BLOCK3和BLOCK4每过20天便分别被擦除和重写1次。对有关地址定义ADDR_LEQU30H;被编程数据的低8位地址ADDR_LEQU31H;被编程数据的高8位地址DATA_TEMPEQU32H;被编程数据ADDR_L,ADDR_H和DATA_TEMP的具体地址可以根据用户程序的实际情况进行定义;AUXR1,PGM_MTP的定义同前。有关子程序为擦除BL0CK3