当前位置:首页 > 单片机 > 单片机
[导读]摘要:分析Boot ROM中的部分源代码,重点是IAP功能以及ISP和IAP的相互关系;应用IAP功能将剩余程序空间转化为数据空间,以及自编ISP程序来实现仪器的软件升级。 关键词:P89C51RD2 Boot ROM IAP(ISP)功能 软件升级

摘要:分析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,所以该方案在一般情况下是切实可行的。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

业内消息,日前欧洲软件巨头SAP宣布了一项重组计划推动人工智能增长,该计划将涉及大约8000名员工的岗位调整,这些员工将被纳入自愿休假计划和内部再培训措施,即鼓励员工自愿离职或进行内部转岗。

关键字: AI 重组 软件 裁员 SAP

业内消息,国家工信部近日公布了今年前三季度我国软件和信息技术服务业的具体情况,整体运行态势平稳,软件业务收入两位数增长,利润总额保持较快增长,软件业务出口降幅收窄。

关键字: 工信部 软件

嵌入式系统是一种特殊的计算机系统,它被嵌入到其他设备中,以完成特定的任务。嵌入式系统的结构组成是由硬件和软件两部器、输入输出设备和总线等组件,而软件部分则包括操作系统、应用程序和驱动程序等。

关键字: 嵌入式 计算机 软件

嵌入式软件系统是现代技术中广泛应用的一种软件形式,它通常嵌入在各种设备中,如汽车、电子设备、医疗设备等。由于这些设备的功能和性能对人们的生活至关重要,因此对嵌入式软件系统进行全面而有效的测试非常重要。本文将介绍如何对嵌入...

关键字: 嵌入式 设备 软件

安全态势可控、移动安全可及、安全开发可行

关键字: 软件 软件安全 智能终端

嵌入式系统已经成为现代生活中不可或缺的一部分,它们被广泛运用于各行各业,包括智能手机、汽车、家用电器、医疗设备等。在全球嵌入式软件市场中,中国作为制造业大国,自然也扮演着重要的角色。本文将详细分析国产嵌入式软件的发展趋势...

关键字: 嵌入式系统 软件 人工智能

在众多行业的数字化转型过程中,基于硬件的数据处理加速是构建高性能、高效率智能系统的关键之处,因而市场上出现了诸如FPGA、GPU和xPU等许多通用或者面向特定应用(如NPU)的硬件加速器。尽管它们的性能和效率都高于通用处...

关键字: 软件 硬件 FPGA GPU

上海2023年9月25日 /美通社/ -- 回顾"中国制造"的崛起之路,我们逐渐从「志造」、「制造」一路走到了「智造」,在如今智能化主导的时代中,制造仍然是有志者们的主战场,硝烟未散。亿个制造强者,才...

关键字: 软件 TOP P10 离散

上海2023年9月22日 /美通社/ -- 9月15日,第三方检测认证机构TÜV南德意志集团(以下简称"TÜV 南德")受邀出席由中国...

关键字: 人工智能 汽车 软件 机器学习

北京2023年9月21日 /美通社/ -- 第23届中国国际工业博览会(以下简称:工博会)于2023年9月19-23日在上海国家会展中心隆重举行。作为全球工业领域最具影响力的展览会之一,本届工博会汇聚了众多国内外知名企业...

关键字: 控制系统 防护 软件 智能工厂
关闭
关闭