8051单片机在线升级软件的方法

[09-12 17:53:34]   来源:http://www.88dzw.com  单片机学习   阅读:8370

文章摘要:for(j=0;j<16;j++)XBYTE[I++]=buf[j];WDI=~WDI;}if(shake_hand==1) {/*shake_hand由串口中断收到握手命令后置1*/rcv_data(); /*该函数负责从上位机获取程序*/}XBYTE[0x1fff]=0xaa;/*置程序拷贝好标志*/RESET=0;/*复位单片机并执行外部RAM内的程序*/while(1);}为了确保程序在装载完全正确后才开始执行,装载程序使用了外部RAM 0x1fff地址内容作为装载成功的标志。那么相应的应用程序应判断此标志后再执行。调试结束的装载程序烧结在单片机中,而实际的系统应用程序则存储于外

8051单片机在线升级软件的方法,标签:单片机开发,单片机原理,单片机教程,http://www.88dzw.com
for(j=0;j<16;j++)
XBYTE[I++]=buf[j];
WDI=~WDI;
}
if(shake_hand==1) {
/*shake_hand由串口中断收到握手命令后置1*/
rcv_data(); /*该函数负责从上位机获取程序*/
}
XBYTE[0x1fff]=0xaa;/*置程序拷贝好标志*/
RESET=0;/*复位单片机并执行外部RAM内的程序*/
while(1);
}

  为了确保程序在装载完全正确后才开始执行,装载程序使用了外部RAM 0x1fff地址内容作为装载成功的标志。那么相应的应用程序应判断此标志后再执行。

  调试结束的装载程序烧结在单片机中,而实际的系统应用程序则存储于外部E2PROM内。应用中,将单片机直接焊装在电路板上,而编程者只需通过串口或者其他形式的通信链路甚至无线的方式来更改升级目标应用程序。

4 几点讨论 

  在实际应用中,最好使用严格的校验及复查方法来确保程序拷贝无误。 另外, 在从上位机下载程序时应该制定一个可靠的通信协议, 从而保证获取的程序完全正确。 单片机在接收到上位机的代码数据时,不要急于写入外部E2PROM,而应先全部放在外部RAM区内,待代码获取完毕并且通过校验检查后再把RAM的内容一次性写入E2PROM。这样防止在获取程序的时候通信异常中断而E2PROM内将没有一个可以执行的程序。

  从原理上看,如果片外RAM是非易失的,就可以不再使用E2PROM。但是这样系统成本变高且可靠性降低,因为当单片机程序跑飞时很容易产生MOVX指令而改变RAM区的内容,造成程序永久性不可恢复。而在程序跑飞的情况下,很难产生符合外部E2PROM接口的I2C写时序,同时E2PROM还有写保护功能。

  虽然上述方法能使8051单片机系统具有远程升级代码的能力,但是程序装载过程将使系统的启动时间延长数秒,在对启动时间要求较短的场合不能应用本文中介绍的方法。



上一页  [1] [2] 


Tag:单片机学习单片机开发,单片机原理,单片机教程单片机学习
分类导航
最新更新
热门排行