原创 自制51芯片仿真器

2011-8-11 16:02 2323 6 6 分类: MCU/ 嵌入式

自制51芯片仿真器完全手册

p2.gif作者:温正伟 出处:磁动力电子 www.cdle.net

  很多朋友来索要PCB图纸,在这我把它出来,有需要的朋友可以下载查看。  点击下载:PCB图纸protel.gif

  后记:此文是在2003年编写的,现在SST89C58已停产,大家可以参考本文使用89E564RD等芯片来制作,相关的EASYIAP程序可以到SST官方网站下载。祝你成功!

  初学51单片机或是业余玩玩单片机开发,每次总要不断的调试程序,如没有仿真器又不喜欢用软件仿真,那只有每次把编译好的程序烧录到芯片上,然后在应用电路或实验板上观察程序运行的结果,对于一些小程序这样的做好也可以很快找到程序上的错误,但是程序大了,变量也会变的很多,而直接烧片就很难看到这些变量的值了,在修改程序时还要不断的烧片实验,确实很麻烦,这时如果有一台仿真器就会变得很好方便了。但一台好的仿真器对于业余爱好者来说确实有一些贵,在这里介绍这种易于自制的51芯片仿真器虽然有一些地方不够完善,但还是非常适于初学51单片机的朋友和经济能力不是很好的业余爱好者。

  这个仿真器的仿真CPU是使用SST公司的SST89C58或SST89C54(其它相容的芯片也可,这里主要讲述SST89C58),对于没有可以烧写SST89C58芯片的朋友应该选用CA版本的SST89C58芯片,这个CA型号的芯片出厂时已内置了BSL1.1E的固件程序。那什么是BSL呢?BSL就是英文BOOT-Strap Loader,意思就是可引导装载,形象来说就像电脑用DOS起动盘起动后可以装载应用程序并运行。只不过SST89C58是用串口来输入程序资料的。为了能把编译好的单片机程序HEX或BIN文件下载到SST89C58芯片上,SST公司还提供了一种叫EasyIAP的软件,IAP为In-Application Programming,有了这个软件就可以把SST89C54变为在线下载的实验器。在这里不详述EasyIAP的使用,只讲述如何利用它去把SST89C58升级为带SoftICE固件程序的51仿真器。

cdle050035_01.jpg
图1 SST89C58

 一、制作带串口的的最小化应用板
  无论是EasyIAP还是仿真器,都需要用串行口使SST89C58芯片和PC上位机进行通讯传输数据,因此我们先要制作一个带RS232/TTL转换的应用板,如果你的51实验电路板或目标电路板已带有这样的电路那么你就可以跳过这一段了。图二是笔者所设计的可以用于制作SST89C58/54仿真器、S51系列下载器或51系列实验应用的小型应用板。它的电路是很简单的,用两个NPN的小功率三极管和一些电阻二极管做RS232/TTL转换(可参看http://www.cdle.net/web/alldata/CDLE/cdle050012.htm),其它元件则做复位和时钟振荡电路。图三是我以前做的51应用板,刚好可以用就拿来用了,省却了用万用板做图四那样的东西,但这块应用板不能像图4那个可以当芯片插到目标板上。在晶振方面最好使用11.0592M或12M。

点击看大图
图2 原理图(点击看大图)

cdle050035_03.jpg
图3 应用板做的仿真器

cdle050035_04.jpg
图4 网友做的仿真器

 二、有编程器的做法
  做好以上所说的电路后,那么就可以把仿真CPU的HEX文件烧到SST89C58里面,再把它插到上面的电路中就可以了。因为SST89C58有两个程序存储区,在这里要注意的是在烧写时就把仿真监控程序烧到SST89C58的第二个存储区也就是的RB1。烧写时要求用支持SST89C58的编程器,站长所用的是TOP2000。烧写设置画面如图五,在这里要注意的是如果你要烧写BSL固件程序做IAP在线下载器是不要对加密位SB1-3进行加密,并设存储位为RB1,否则无法用IAP功能。各编程器的设置不一样具体参看编程口的说明书

cdle050035_05.gif
图5 TOP2000B烧写SST89C58做仿真器时的设置

文件下载
文件名称
说明
SoftIce58.hex SST89C58仿真监控程序
softICE54.hex SST89C54仿真监控程序
SSTEasyIAP11F.exe EasyIAP11F在线下载控制程序
SoftICE_58.zip 压缩包内包含SoftIce58.hex,SSTEasyIAP11F.exe
easyiap_58_11.zip 包含11.0592M的BSL3,EasyIAP11E
easyiap_58_12.zip 包含12M的BSL3,EasyIAP11E
easyiap54_12.zip 包含11.0592M的58,BSL3,EasyIAP11E
easyiap_54_11.zip 包含12M的BSL3,EasyIAP11E
BSL1.1F_User's_Guide.pdf BSL5 EasyIAP11F使用手册
SoftICE-UG.pdf SoftICE-UG.pdf使用手册

 三、没有编程器的做法
   如果你手头上没有支持SST89C58的编程器,那么你就要购卖CA版的SST89C58芯片,当然不是CA版的也是可以做的,只是相对来说比较麻烦这里就不做讨论了,可以对参看红日网友发起的贴子(http://www.cdle.net/bbs/dispbbs.asp?boardID=18&ID=940&page=1)。
  
  1.首先把CA版的SST89C58芯片插到上面介绍的电路板中,因CA版上已装入了BSL3,你可以先下载EasyIAP11E,测试一下你的电路板是否是正常工作的。(用EasyIAP11F也可以)如果你能保证你的电路是正常工作的可以跳过这一步。把你的电路接到电脑串口上,打开EasyIAP11E软件。

点击看大图
图6 EasyIAP11E(点击看大图)

  按菜单上的RS232弹出串口设置画面,设好你要用的串口和波特率,选用波特率选用默认的38400就可。确定后按菜单的“Auto DetectChip”图七中1所示。

点击看大图
图7 电路正常程序的画面 (点击看大图)

当你的电路正常时就会图七的画面,并在2所示位置显示芯片的型号,BSL版本等信息。如果你无法到这一步就请检查你的电路是否有正常的复位和起振,串口电路是否正常或芯片是否损坏等等问题。

  2.升级BSL11E到BSL11F。下载EaspIAP11F并运行。下面是操作截图和注意事项。

cdle050035_08.gif
图8

  图八中选中的菜单项是把11E升级到11F的命令,下面一个则可以用检测固件版本连接固件,如固件是11E也会提示是否升级到11F,最上一个则用于11F连接EaspIAP用。

cdle050035_09.gif
图9

cdle050035_10.gif
图10

cdle050035_11.gif
图11 提示
  一路按确定,到了这一步会提示是否升级11E到11F,按“是”继续升级。

cdle050035_12.gif
图12 出错提示

  如果你用于升级的SST89C58芯片做了加密操作的话就会在升级过程中出现图十二的出错提示,如真是加密了只有用编程器擦除后直接烧入仿真监控程序或BSL11F程序了。出现这样的提示也可能是串口线接触不好,或电路有问题。

cdle050035_13.gif
图13

cdle050035_14.gif
图14 版本提示

  一切正常的话就会出现图十三的成功升级11F提示。升级成功后,会在图十四位置中显示V1.1F的固件版本号。到了这一步11E升级就成功升级到11F。

  3.下载仿真监控固件程序。从11E升级到11F后就可以进行下面的操作了。下面的操作和上一步基本相同,这里就不详述了。

cdle050035_15.gif
图15

cdle050035_16.gif
图16

cdle050035_17.gif
图17 选择对应你的电路板的晶振频率

cdle050035_18.gif
图18 下载SoftICE

cdle050035_19.gif
图19 密码一般不用输入

cdle050035_20.gif
图20

cdle050035_21.gif
图21 升级成功提示

  升级成功后就可以把仿真器连接KEIL uv2或KEIL uv3进行仿真操作了。

cdle050035_22.gif
图22 项目设置菜单

cdle050035_23.gif
图23 项目设置

  在项目设置Debug页中选择对应本仿真器的KeilMon51驱动,如图23中1所示。图23的3中是选择在仿真时能使用的工具窗口,如内存显示,断点等等。按2进行图24中的仿真器设置。设置好串口号,波特率,晶振为11.0592M时选38400。Cache Options为仿真缓选取后会加快仿真的运行的速度。

cdle050035_24.gif
图24 仿真器设置
PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
6
关闭 站长推荐上一条 /3 下一条