基于P89C51RD2 IAP功能的数据存取与软件升级

[09-12 17:48:49]   来源:http://www.88dzw.com  单片机学习   阅读:8814

文章摘要:前面已经指出,ISP和IAP是一脉相承的,ISP功能的实现调用了IAP功能的子程序。所以完全可以利用IAP功能来设计自己的ISP程序,这样,就可以不必在闪存空间和Boot ROM空间之间跳来跳去。由于用户程序一般不会超过48KB,故可将BLOCK4留出,作为用户自编ISP功能区空间。在下面的自编ISP程序中,如果上位机误传来擦除BLOCK4的指令,将被认为是错误指令而不予执行,这样就可以保证该部分程序不会被擦除。整个ISP功能程序的编制可以参照参考文献3分析的Boot ROM中ISP功能的有关程序。不过,可以将波特率自动跟踪去掉,使用固定波特率,并且将整个协议进行简化,将所有功能规划为擦除、编

基于P89C51RD2 IAP功能的数据存取与软件升级,标签:单片机开发,单片机原理,单片机教程,http://www.88dzw.com

前面已经指出,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,所以该方案在一般情况下是切实可行的。




上一页  [1] [2] [3] 


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