基于P89C51RD2 IAP功能的数据存取与软件升级Word文件下载.docx
- 文档编号:6538966
- 上传时间:2023-05-06
- 格式:DOCX
- 页数:5
- 大小:17.63KB
基于P89C51RD2 IAP功能的数据存取与软件升级Word文件下载.docx
《基于P89C51RD2 IAP功能的数据存取与软件升级Word文件下载.docx》由会员分享,可在线阅读,更多相关《基于P89C51RD2 IAP功能的数据存取与软件升级Word文件下载.docx(5页珍藏版)》请在冰点文库上搜索。
高档的智能化仪器都具有自诊断、自修复、自组织、自适应和自学习等功能,而这些功能实现的物质基础,就是仪器的程序可以根据实际情况进行改变和调整。
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
ERSBLOCK3:
;
BLOCK3擦除
MOVAUXR1,#20H;
AUXR1的位ENBOOT=1,寻址到固件
MOVR0,#11;
晶振为,取11
MOVR1,#01H;
R1=01H,块擦除
MOVDPTR,#8000H;
擦除BLOCK3
LCALLPGM_MTP;
调用,无返回参数
RET
擦除BL0CK4
EPSBLOCK4:
;
BLOCK4擦除
MOVAUXR1,#20;
AUXR1的位ENBOOT=1,寻址到固件
RI=01H,块擦除
MOVDPTR,#0C000H;
擦除BLO
CK4
字节编程
WRDATA
MOVR1,#02H;
R1=02H,字节编程功能
MOVDPH,ADDR_H;
高8位地址
MOVDPL,ADDR_L;
低8位地址
MOVA,DATA_TEMP;
调用,返回参数ACC=0,调用成功,非0调用失败
读闪存字节内容
RDDATA
MOVR1,#03H;
R1=03H,读闪存字节内容
LCALLPGM_TEMP;
调用,返回参数ACC中为读出字节内容
将上述4个子程序结合实际情况灵活运用,便可以实现数据的有效存储,而且这些数据在掉电后是不丢失的,完全达到系统要求。
IAP功能应用于仪器升级
利用P89C51RD2固有的ISP功能,在所设计的仪器中增加1个拨码开关,便可以实现智能仪器的软件升级。
对操作人员的要不高,原理简单易行。
具体方法请见参考文献4。
文献4所讨论的ISP功能与远程升级,实质上是在复位过程中,用相应的硬件控制使程序指针跳转到BootROM空间的0FC00H处。
整个过程由ISP程序模块来控制,而用户程序由于是被升级程序,故完全失去了控制权,编程完毕,需要人工复位并使指针切换到用户程序空间中方可使新程序起作用。
这给智能仪器升级带来了麻烦,如果巧妙地利用P89C51RD2的IAP功能,则可以使仪器升级变得更加简单。
前面已经指出,ISP和IAP是一脉相承的,ISP功能的实现调用了IAP功能的子程序。
所以完全可以利用IAP功能来设计自己的ISP程序,这样,就可以不必在闪存空间和BootROM空间之间跳来跳去。
由于用户程序一般不会超过48KB,故可将BLOCK4留出,作为用户自编ISP功能区空间。
在下面的自编ISP程序中,如果上位机误传来擦除BLOCK4的指令,将被认为是错误指令而不予执行,这样就可以保证该部分程序不会被擦除。
整个ISP功能程序的编制可以参照参考文献3分析的BootROM中ISP功能的有关程序。
不过,可以将波特率自动跟踪去掉,使用固定波特率,并且将整个协议进行简化,将所有功能规划为擦除、编程、读出、校验4大模块,而且这些模块的执行直接使用Philips公司的有关协议,这样BootROM中的有关程序就可以作为用户编程的参考。
规定ISP功能的启动命令为“[ISPSTART]”。
当下位机收到上位机传输的该条指令时,便跳转到用户自编的ISP程序中,此时上下位机通过用户的协议就可完成用户空间程序的擦除、查空、编程、校验等功能,直到上位机传来“[ISPEND]”指令为止。
这就表示所有的程序已经传输完毕并校验成功。
此时跳出ISP,使指针指向0000H单元,则系统根据升级正常运行。
有关流程如图2所示。
自编ISP程序具有以下特点
*自编ISP程序与上位机的协议参考Philips公司的有关协议并予以简化,启动和结合命令由自己定义,开发比较容易;
*自编ISP程序不必在复位时开始执行,升级完成后,可以将程序指针转向新程序,不必重新启动系统;
*可以使用固定的波特率,并且T1和T2都可以作为波特率发生器;
*触发条件规定为一条普通的串口指令,当下位机接收到该条指令后,即跳转到自编的ISP程序空间中。
使用这种方法也存在一定的缺点,由于自编ISP程序相当于一块固化程序,不能轻易擦除,因此,这种方法一般不能对整片进行升级。
但考虑到P89C51RD2具有64KB的FlashROM,用户程序空间很少能使用到BLOCK4,所以该方案在一般情况下是切实可行的。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于P89C51RD2 IAP功能的数据存取与软件升级 基于 P89C51RD2 IAP 功能 数据 存取 软件 升级