微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 8031+PSD813实现在线编程

8031+PSD813实现在线编程

时间:01-30 来源:互联网 点击:

图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电缆或芯片编程工具(

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top