摘要:剖析Boot ROM中的部分源代码,重点是IAP功用以及ISP和IAP的相互关系;运用IAP功用将剩下程序空间转化为数据空间,以及自编ISP程序来完结仪器的软件晋级。 要害词:P89C51RD2 Boot ROM IAP(ISP)功用 软件晋级 1 概述 P89C51RD2是Philips公司的80C51系列单片机中的佼佼者,具有1KB的片上RAM和64KB的片上内存;具有3种编程办法,即在体系编程ISP(InSystem Programming)、在运用中编程IAP(In-Application Programming)以及经过商用编程器的并行编程。ISP是指电路板上的空白器材能够编程写入最终用户代码,而不需求从电路板上取下器材,现已编程的器材也能够用ISP办法擦除或再编程;ISP是指在用户的运用程序中获取新代码对Flash块、Flash寄存器、Boot向量等进行擦除和从头编程,即能够用程序来改动程序。IAP关于仪器仪表的智能化含义严重。高级的智能化仪器都具有自确诊、自修正、自组织、自适应和自学习等功用,而这些功用完结的物质基础,便是仪器的程序能够依据实践情况进行改动和调整。 Philips公司在P89C51RD2中供给了Boot ROM固件,坐落0FC00H~0FFFFH空间,与闪存空间堆叠,如图1所示。Philips公司供给了寻址该器材的办法,因而能够经过读取其方针代码进行剖析研究。有关Boot ROM的读出办法以及Boot ROM与ISP功用的完结在参阅文献3已有所论说。 P89C51RD2的IAP功用的完结了是靠Philips公司供给的Boot ROM固件来完结的。Boot ROM固件中现已固化有上述擦除和编程等子程序,只需运用程序来调用即可。经过对Boot ROM反汇编内容进一步的剖析能够看出:ISP和IAP是一脉相承的,ISP功用的完结调用IAP功用的子程序。本文将剖析Boot ROM中有关IAP及IAP和ISP的相互关系,以到达深化了解和运用IAP功用的意图。
2 对Boot ROM中有关IAP功用代码的剖析 3 对Boot ROM中ISP和IAP的相互关系剖析 2、3内容请见本刊网络弥补版(http://www.dpj.com.cn)。 4 IAP功用的运用 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能够看出,从8000H~0FFFFH的32KB闪存空间由BLOCK3和 BLOCK4两块组成,每一块为16KB,足能够存储10天的数据量。在实践操作中,将BLOCK3和BLOCK4轮番运用,当10天的数据量存满其间一块时,经进程序跳转到另一块中,在运用前先将该块擦除。这样BLOCK3和BLOCK4每过20天便分别被擦除和重写1次。对有关地址界说如下: ADDR_L EQU 30H ;被编程数据的低8位地址 ADDR_L EQU 31H ;被编程数据的高8位地址 DATA_TEMP EQU 32H ;被编程数据 ADDR_L,ADDR_H和DATA_TEMP的具体地址能够依据用户程序的实践情况进行界说;AUXR1,PGM_MTP的界说同前。有关子程序为: 擦除BL0CK3 ERSBLOCK3: ;BLOCK3擦除 MOV AUXR1,#20H ;AUXR1的位ENBOOT=1,寻址到固件 MOV R0,#11 ;晶振为11.0592MHz,取11 MOV R1,#01H ;R1=01H,块擦除 MOV DPTR,#8000H ;擦除BLOCK3 LCALL PGM_MTP ;调用,无回来参数 RET 擦除BL0CK4 EPSBLOCK4: ;BLOCK4擦除 MOV AUXR1,#20 ;AUXR1的位ENBOOT=1,寻址到固件 MOV R0,#11 ;晶振为11.0592MHz,取11 MOV R1,#01H ;RI=01H,块擦除 MOV DPTR,#0C000H ;擦除BLOCK4 LCALL PGM_MTP ;调用,无回来参数 RET 字节编程 WRDATA: MOV AUXR1,#20H ;AUXR1的位ENBOOT=1,寻址到固件 MOV R0,#11 ;晶振为11.0592MHz,取11 MOV R1,#02H ;R1=02H,字节编程功用 MOV DPH,ADDR_H ;高8位地址 MOV DPL,ADDR_L ;低8位地址 MOV A,DATA_TEMP ;被编程数据 LCALL PGM_MTP ;调用,回来参数ACC=0,调用成功,非0调用失利 RET 读闪存字节内容 RDDATA: MOV AUXR1,#20H ;AUXR1的位ENBOOT=1,寻址到固件 MOV R0,#11 ;晶振为11.0592MHz,取11 MOV R1,#03H ;R1=03H,读闪存字节内容 MOV DPL,ADDR_L ;低8位地址 MOV DPH,ADDR_H ;高8位地址 LCALL PGM_TEMP ;调用,回来参数ACC中为读出字节内容 RET 将上述4个子程序结合实践情况灵活运用,便能够完结数据的有用存储,而且这些数据在掉电后是不丢掉的,彻底到达体系要求。 4.2 IAP功用运用于仪器晋级 运用P89C51RD2固有的ISP功用,在所规划的仪器中添加1个拨码开关,便能够完结智能仪器的软件晋级。对操作人员的要不高,原理简略易行。具体办法请见参阅文献4。 文献4所评论的ISP功用与长途晋级,实质上是在复位进程中,用相应的硬件操控使程序指针跳转到Boot ROM空间的0FC00H处。整个进程由ISP程序模块来操控,而用户程序因为是被晋级程序,故彻底失去了操控权,编程结束,需求人工复位并使指针切换到用户程序空间中方可使新程序起作用。这给智能仪器晋级带来了费事,假如奇妙地运用P89C51RD2的IAP功用,则能够使仪器晋级变得愈加简略。 前面现已指出,ISP和IAP是一脉相承的,ISP功用的完结调用了IAP功用的子程序。所以彻底能够运用IAP功用来规划自己的ISP程序,这样,就能够不用在闪存空间和Boot ROM空间之间跳来跳去。 因为用户程序一般不会超越48KB,故可将BLOCK4留出,作为用户自编ISP功用区空间。鄙人面的自编ISP程序中,假如上位机误传来擦除 BLOCK4的指令,将被认为是过错指令而不予履行,这样就能够确保该部分程序不会被擦除。
整个ISP功用程序的编制能够参照参阅文献3剖析的Boot ROM中ISP功用的有关程序。不过,能够将波特率主动盯梢去掉,运用固定波特率,而且将整个协议进行简化,将一切功用规划为擦除、编程、读出、校验4大模块,而且这些模块的履行直接运用Philips公司的有关协议,这样Boot ROM中的有关程序就能够作为用户编程的参阅。 规则ISP功用的发动指令为“[ISP START]”。当下位机收到上位机传输的该条指令时,便跳转到用户自编的ISP程序中,此刻上下位机经过用户的协议就可完结用户空间程序的擦除、查空、编程、校验等功用,直到上位机传来“[ISP END]”指令停止。这就表明一切的程序现已传输结束并校验成功。此刻跳出ISP,使指针指向0000H单元,则体系依据晋级正常运转。有关流程如图2所示。 自编ISP程序具有以下特色: *自编ISP程序与上位机的协议参阅Philips公司的有关协议并予以简化,发动和结合指令由自己界说,开发比较简单; *自编ISP程序不用在复位时开端履行,晋级完结后,能够将程序指针转向新程序,不用从头发动体系; *能够运用固定的波特率,而且T1和T2都能够作为波特率发生器; *触发条件规则为一条一般的串口指令,当下位机接收到该条指令后,即跳转到自编的ISP程序空间中。 运用这种办法也存在必定的缺陷,因为自编ISP程序相当于一块固化程序,不能容易擦除,因而,这种办法一般不能对整片进行晋级。但考虑到 P89C51RD2具有64KB的Flash ROM,用户程序空间很少能运用到BLOCK4,所以该计划在一般情况下是切实可行的。