微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > STC Monitor-51的单片机在线仿真调试

STC Monitor-51的单片机在线仿真调试

时间:10-15 来源:互联网 点击:

摘要:51内核单片机在线仿真调试是一种取代专业仿真器的有效手段。利用ISP/IAP方法和STC Monitor-51监控程序,以及单片机集成开发环境Keil C51的在线仿真功能的支持,STC公司的IAP15F2K61S2单片机实现了在线仿真调试功能,为单片机教学和应用开发提供了一条新的途径。

引言

当今很多院校中,单片机的教学仍以经典的51内核单片机为主。其实验与应用开发中最重要的环节是软、硬件综合调试,通常采用的方法主要有两种:一种是使用仿真器,优点是功能齐全,但是价格较高,一般厂家研发采用;另一种是使用软件仿真和芯片直接烧写验证的方法,其成本虽然低,但在程序或硬件出现疑难问题时,很难找到原因。

实际上,还有一种成本低且具有在线仿真调试功能的技术是在线仿真调试,它特别适合初学者。“在线仿真调试”是指:通过Keil C51编译器,结合单片机中的监控程序,对系统的应用程序和硬件进行仿真调试,可以让单片机以单步、断点、全速等运行模式来执行程序。在线仿真调试是单片机应用开发过程中的高效方法,国内STC公司的51内核单片机IAP15F2K61S2便具有在线仿真调试功能。

1 在线仿真调试概述

Keil C51编译器开放了调试器与目标芯片的接口,只要芯片厂商提供自己特有的驱动程序(动态链接库DLL),就能使Keil调试器在不改变图形界面的情况下支持相应的硬件仿真调试。

STC Monitor-51是STC公司开发的内嵌Keil C51编译器的目标系统调试模块,它是一个实时监控程序,可利用PC机的USB口与目标端进行通信。在线仿真调试系统的结构示意图如图1所示。

a.jpg

PC机端由Keil调试器和STC Monitor-51的驱动程序stcmon51.DLL组成,stcmon51.DLL是STC公司自主开发的Keil仿真驱动协议,功能相比于 Keil自带的Mon51.DLL有较大的突破,例如:更改通信接口为真正的USB口,支持Keil Flash Download功能,支持软件复位,增加断点数量等。目标端由USB转串口芯片CH340、51内核单片机及STC Monoitor-51监控程序组成。Keil调试器将用户的调试指令通过PC机的USB口传送给目标端;目标端的USB转串口芯片将其转换为TTL电平后发送给单片机,最后由单片机中驻留的STC Monitor-51监控程序分析并执行。

2 在线仿真调试实现

2.1 IAP15F2K61S2的存储器结构

STC Monitor-51具有载入并执行用户程序的功能,所以要求单片机的程序存储器为Flash ROM,并具有ISP功能。ISP(In System Programming,在系统编程)指电路板上器件不用取出,就可以写入用户代码,已经编程的芯片也可以用ISP方式擦除或再编程。

IAP15F2K61S2单片机的程序存储器与数据存储器是独立编址的。IAP15F2K61S2单片机内部在物理上有4个相互独立的存储器空间;程序存储器(程序Flash)、片内基本RAM、片内扩展RAM与EEPROM(数据Flash)。IAP15F2K61S2单片机片内集成了61 KB的程序Flash存储器,其地址为0000H~F3FFH。用户可以使用的最大程序空间为55 KB,整个程序Flash存储器的分布图如图2所示。

b.jpg

很多单片机在出厂时已经将具有Boot loader功能的程序固化在系统区中,因此无需编程器就可通过ISP下载软件将用户程序下载到Flash ROM中。STC公司的单片机可以进行ISP串行下载程序,就是因为系统区中有芯片出厂时就已经固化的ISP引导码。如果想要下载应用程序至单片机,先要在下载软件界面上进行相应选择,然后再上电,当单片机检测到上位机中有特定的下载条件时,便启用ISP下载功能将程序下载至用户程序区;否则,单片机便会从用户应用程序区中开始执行代码。

STC公司的最新ISP下载软件stc-isp-15xx-v6.77.exe还可以将STC Monoitor-51监控程序下载到监控程序区,从而实现在线仿真调试功能。

2.2 IAP15F2K61S2的ISP和IAP实现

在线仿真调试功能的实现依赖于用户系统内部的监控程序和PC机上的下载程序。其具体实现主要利用IAP(In Applicatin Programming,在应用编程)技术,即在程序运行时程序存储器可由程序自身进行擦写。IAP15F2K61S2单片机的IAP功能,与以下几个特殊功能寄存器有关。

IAP_DATA:ISP/IAP数据寄存器,从Flash读出的数据放在此处,写入Flash的数据也需放在此处。

IAP_ADDRH:ISP/IAP地址寄存器高8位。

IAP_ADDRL:ISP/IAP地址寄存器低8位。

IAP_CMD:ISP/IAP命令寄存器,须IAP_TRIG触发方可生效。

IAP_TRIG:ISP/IAP命令触发寄存器。

IAP_CONTR:ISP/IAP控制寄存器。

当IAPEN(IAP_CONTR.7)=1时,只有对IAP_TRIG先写入0x5A、再写入0xA5,ISP/IAP命令才会生效。

ISP/IAP操作完成后,IAP命令寄存器、IAP地址高8位地址寄存器和低8位地址寄存器的内容都

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

网站地图

Top