基于P89C51RD2 IAP功能的数据存取与软件升级
发布时间:2008/6/3 0:00:00 访问次数:581
    
    
     来源:单片机与嵌入式系统应用 作者:宁光电工有限公司 赵四海
    
     摘要:分析boot rom中的部分源代码,重点是iap功能以及isp和iap的相互关系;应用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个特点,在一些对时间要求不是很荷刻的场合,都可以将剩余的闪存空间作为数据空间来使用。例如,作者在海洋气象监测仪器的研制中,有些关键数据需要存储,如整点的风速、风向、温度、湿度、气压和降水量
    
    
     来源:单片机与嵌入式系统应用 作者:宁光电工有限公司 赵四海
    
     摘要:分析boot rom中的部分源代码,重点是iap功能以及isp和iap的相互关系;应用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个特点,在一些对时间要求不是很荷刻的场合,都可以将剩余的闪存空间作为数据空间来使用。例如,作者在海洋气象监测仪器的研制中,有些关键数据需要存储,如整点的风速、风向、温度、湿度、气压和降水量
上一篇:介绍时钟日历芯片DS12C887