8031+PSD813实现在线编程
图1显示了上电时系统存储器的映射情况。系统从EEPROM开始,检查是否要通过80C51的UART对Flash中的程序进行升级。此时, PSD中全部Flash存储器都处于80C51的数据空间,而EEPROM则处于80C51的程序空间。这是在WSI的PSDSOFT开发系统第二个步骤的“PSD Configuration”中设置的。在“Set VM Register Configuration at Power Up”框内,设置Flash为“Data Space”,EEPROM为“Program Space”。此时,VM寄存器在上电时自动被设置为12H。PSD813F1允许在程序执行中改变VM寄存器的内容,这对于实现IAP也是非常重要的。
在完成对Flash中程序升级或不需要升级时,写VM寄存器为06H,将Flash从80C51的数据空间“移”到程序空间(此时系统仍在EEPROM中运行)。图2显示了Flash被移到程序空间后的情况,这是在VM寄存器被写后立刻产生的。
下一步,80C51运行程序从PSD EEPROM中“跳”到Flash。在程序写1到“swap”位(上电时“swap”的值是0)进行地址“切换”,程序就进入Flash中运行了。注意:如果在EEPROM中运行时对“swap”写1,结果会立刻发生(就好像抽掉了你正坐的椅子一样)。所以,在此之前最好将程序转跳到“切换”影响不到的段(即公共访问区,如FS1)。现在,供MCU上电时引导(地址0000H)的EEPROM被Flash替代,如图3所示。
最后一步,程序已经在PSD的Flash中运行,写0CH到VM寄存器,把EEPROM从80C51的程序空间“移”到数据空间。并且,MCU 跳转到在PSD的FLSAH FS0块中的复位入口0000H,用户的程序开始真正执行。此时,系统存储器映射如图4所示(正常工作模式)。所有PSD的128KB Flash都在程序空间,其中32KB是公共访问区,96KB采用分页访问。同时,EEPROM全部位于数据空间,且可在任何页进行访问。请注意: EES2和EES3(地址是C000H至FFFFH)可以被用户当作一般数据存储器使用,而EES0和EES1则保留为系统引导代码区(地址是8000H 至BFFFH)。
这一方案还可以实现对PSD中EEPROM的引导程序进行升级,此时程序在PSD的Flash中运行。这对于使用EPROM作为引导的IAP系统是不可能实现的。
为了避免处于程序空间EES0、EES1中的引导代码被意外更改,还可以通过未用到的页寄存器位实现另外一个功能,对引导代码进行保护。定义 “enabledatahalf”位,将它写为1,一方面保护ESS0、ESS1,另一方面把EES2、EES3作为一般数据存储器使用。如果要升级引导代码,则须先将“enabledatahalf”置为0,下载新的引导代码到EES0、EES1,然后再将“enabledatahalf”置为1。必须保护好引导代码,因为引导程序一旦被破坏,系统就彻底崩溃;如果仅仅是用户程序被破坏,还可以通过UART重新下载。
三、 软件设计
通过上面的介绍可知,实现IAP的软件要包括系统启动和用户系统的载入两个部分。其中的关键是程序在Flash与EEPROM之间的切换。
系统启动的引导程序是放在EEPROM中的;用户程序则放到Flash中。如果用户仅希望实现对Flash中的用户程序的IAP功能,而不要对 EEPROM中引导程序的升级,那么用户程序可以像一般80C51程序一样,不用作任何修改,直接放入Flash。如果用户还要对引导程序进行升级,还要在用户程序模块中嵌入一个启动模块(详见第四节)。
引导程序(boot)和用户程序启动模块(startup)的流程图如图5和图6所示。
图5 EEPROM引导程序(boot)
图6 Flash引导程序(startup)
与之配合使用的PC机程序是RS-232接口通信程序,可参考相关例程,或直接使用Windows中的“超级终端”工具。
四、 系统实现
第一步,设计用户程序。
如果不需要对引导程序升级则不作修改,直接将程序代码下载到Flash中;反之,则要在用户程序模块中加入一个启动(startup)模块。方法是用L51(Franklin公司产品)将用户模块和startup模块链接在一起。方法如下:
L51 用户OBJ文件>, startup.obj
第二步,使用PSDsoft开发系统进行设计。
在PSDsoft开发系统中建立一个新项目,将PSD器件选定为PSD813F1。在流程图设计“degin entry”中增加新Abel模块,进行硬件描述设计,除用户的自定义功能外还应包括IAP部分(参见附录)。并且,在“device config”中设置MCU总线方式、JTAG、用户码等选项。特别注意的是在MCU总线中,设控制信号为“WR,RD,PSEN”,Flash为数据存储器,EEPROM为程序存储器。然后,对以上部分进行编译和装配。
第三步,把编译好的模块和MCU程序模块合并成一个文件。这里重要的是EEPROM中的引导程序。Flash中的程序可以同时装入,也可以在应用中通过UART装入。
最后一步,用DK800开发工具的Flash Link电缆或芯片编程工具(
8031 PSD813 在线编程IAP 存储器系统 映射 相关文章:
- 图像处理器6538与8031的接口技术 (05-19)
- 单片机8031,8051区别及引脚功能资料介绍(11-23)
- 用8031控制的BDJ-3A三相功率电能表(10-15)
- 14篇基于多种51单片机的技术分析、实用案例(05-07)
- 嵌入式控制系统电路抗干扰性的设计研究(10-31)
- 车用LIN控制交流发电机稳压器TC80310(02-20)