由于商场对MCU功用的要求总是不断改变和晋级,MCU使用的范畴也不断扩展,因而往往需求对开端的规划进行修正。Flash MCU与以往OTP/MASK MCU比较,最大的长处就在于可进行高达上万次的擦写操作,适应了MCU功用不断修正的需求;另一方面,Flash MCU商场价格也在不断下降。实际上,Flash MCU作业时Flash的延时、读写时充等特性是十分,程序存储在MCU外部仿真板上的SRAM中,由额定的硬件逻辑来模仿Flash的这些特性是费时低效的;一起将Flash和MCU内嵌的其他类型存储器如SRAM、ROM等区别开来也是十分重要的。假如在程序的调试阶段就能够反映出这特性,有且于完结程序从仿真器到商用MCU芯片的无缝搬运。
1 关于Flash MCU
Flash存储器简直具有如今寻求个性化的用户所需求的一切长处:掉电数据不丢掉、快速的数据存取时间、电可擦除、容量大、在线(体系)可编程、价格低廉以及足够多的擦写次数的高可靠性等,已成为新一代嵌入式使用的首选存储器。与Flash MCU比较,MASK(掩膜)MCU虽然在大指出产时仍具有必定价格优势,但其晋级不方便的缺陷,跟着往后Flash本钱的前进下降和MCU功用需求的逐步增多,将表现得更为明显。
2 依据外部SRAM的MCU在线仿真器
SRAM不需求改写电路即能保存它内部存储的数据。而DRAM(Dynamic Random Access Memory)每隔一段时间,要改写充电一次,不然内部的数据即会消失,因而SRAM具有较高的功用,可是SRAM也有它的缺陷,即它的集成度较低,相同容量的DRAM内存能够规划为较小的体积,可是SRAM却需求很大的体积,且功耗较大。所以在主板上SRAM存储器要占用一部分面积。
一种是置于CPU与主存间的高速缓存,它有两种规范:一种是固定在主板上的高速缓存(Cache Memory );另一种是插在卡槽上的COAST(Cache ON A STIck)扩大用的高速缓存,另外在CMOS芯片1468l8的电路里,它的内部也有较小容量的128字节SRAM,存储咱们所设置的装备数据。还有为了加快CPU内部数据的传送,自80486CPU起,在CPU的内部也规划有高速缓存,故在PenTIum CPU就有所谓的L1 Cache(一级高速缓存)和L2Cache(二级高速缓存)的名词,一般L1 Cache是内建在CPU的内部,L2 Cache是规划在CPU的外部,可是PenTIum Pro把L1和L2 Cache一起规划在CPU的内部,故PenTIum Pro的体积较大。Pentium II又把L2 Cache移至CPU内核之外的黑盒子里。
MCU仿真器的一种常见做法是,将用户的待调试程序(以下简称用户程序)存储在MCU外部仿真板的SRAM(以下简称外部SRAM)中,在bond-out MCU的外部结构仿真监控硬件(以下简称外部仿真逻辑),当用户程序在仿真器中调试完结后,编程到商用MCU芯片中,使用到用户体系。在商用MCU中,这些仿真接口信号不会呈现在芯片封装的管脚上。
在Flash MCU没有被广泛使用之前,仿真器规划公司一般将用户程序和监控程序都存储在外部SRAM中,这种做法基本上能够反映SRAM MCU实在的作业状况,对用户程序的调度作用影响不大。可是关于Flash MCU而言,则存在必定的问题。毕竞SRAM和Flash在工艺和读写时序上相去甚远,CPU作业存储在SRAM和Flash中的程序,状况是彻底不同的。有或许呈现程序存储的仿真器的外部SRAM中作业杰出,可是编程到商用MCU中作业起来却不正常。跟着Flash MCU在 MCU商场中的比重越来越大,这一问题显得越来越杰出,有必要加以注重。
本文介绍的Flash MCU仿真器的规划办法,简直不添加MCU的仿真接口信号和芯片规划的杂乱程度,就能够挨近程序在商用MCU中的作业状况,完结用户程序从仿真器到商用MCU的杰出搬运。
3 依据MCU内部Flash的在线仿真器的一种规划办法
图2是Flash MCU仿真器体系构成示意图,其间的虚线接口信号是MCU的仿真接口,一般包含仿真使能信号,bond-out MCU中的CPU的地址、数据、读/写和取指等信号,以及少量几个用于仿真的操控信号。仿真接口是Flash MCU与外部仿真逻辑之间的桥梁,使得外部仿真逻辑能够监控MCU的内部状况。
3.1 仿真器的作业原理
仿真器内部的P口等硬件资源和51系列单片机基本是彻底兼容的。仿真主控程序被存储在仿真器芯片特别的指定空间内,有一段特别的地址段用来存储仿真主控程序,仿真主控程序就象一台电脑的操作体系相同操控仿真器的正确作业。仿真器和电脑上的上位机软件(即KEIL)是经过串口相连的,经过仿真器芯片的RXD和TXD担任接纳电脑主机发来的操控数据,TXD担任给电脑主机发送反应信息。操控指令由KEIL宣布,由仿真器内部的仿真主控程序担任履行接纳到的数据,并且进行正确的处理。然后驱动相应的硬件作业,这其间也包含把接纳到的BIN或许其它格局的程序寄存到仿真器芯片内部用来存储可履行程序的存储单元(这个进程和把程序烧写到51芯片里边是相似的,只是仿真器的擦写是以掩盖办法来做的),这样就完结了相似编程器重复烧写来实验的功用!不同的是经过仿真主控程序能够做到让这些方针程序做特定的作业,比方单步、指定断点、指定地址等,并且经过KEIL可不时观察到单片机内部各个存储单元的状况。仿真器和电脑主机联机后就象是两个精细的齿轮彼此咬合的联络,一量强行中止这种联络(比方强行给仿真器手动复位或都拨支联机线等),电脑就会提示联机呈现问题,这也表现了硬件仿真的特性,即“所见即所得”。这些都是编程器无法做到的。这些给调试、修正、以及生成终究程序发明了比较有力的确保,然后完结较高的功率。
仿真器作业时,CPU的取指空间需求在内外存储器之间重复切换。CPU地址空间区分示意图如图3所示。总体上,仿真器的作业受图4所示的状况机操控。该状况机共有四个状况:
•用户程序作业态(简称用户态)
仿真器复位后,处在作业用户程序的状况。在该状况下,CPU作业存储在内部Flash中的用户程序;外部仿真逻辑实时监测仿真接口,等候程序中止事情的发生,进入下一状况-跳转态。
用户程序经过MCU的ISP(在线编程接口)编程到内部Flash中,由Flash MCU的专用编程器完结。在规划bond-out MCU时,应该考虑与非bond-out MCU在编程时管脚的一致性。
外部SRAM用来存储监控程序和监时数据。
•跳转态
一旦程序中止事情发生,需求切换CPU的取指空间,跳转到监控程序窗口。
由于在程序中何处中止是不行预知的,因而不或许在用户程序中预先安插好用于空间切换的跳转指令。所以需求一个专门的状况来刺进跳转指令码和跳转的意图地址,即监控程序的进口地址,强制CPU作业监控程序。监控程序窗口是区分CPU地址空间时,为仿真功用预留的地址空间,空间巨细视所需的监控程序的巨细而定,监控程序的巨细在必定程序上取决于仿真功用的强弱。
CPU从仿真接口读跳转指令码和跳转地址。MCU外部仿真逻辑一起使能程序空间切换信号,屏蔽MCU的所外部中止,中止MCU中CPU外围模块的时钟,也就相当于屏蔽了MCU的一切内部中止。当程序空间的切换完结后,仿真器进入监控态,作业存储在外部SRAM中的监程序。
•监控态
在监控状况下,CPU作业存储在外部SRAM中的监控程序;持续制止MCU的一切外部中止,中止MCU中CPU外围硬件模块的时钟。
监控程序的使命是获取MCU当时的状况,承受软件的调试指令,操控MCU的下一步作业。监控程序能够写得很简略,只是获取CPU特别寄存器和外围硬件寄存器的值,完结监督功用。如MOTOROLA的HC6808就能够经过在监控程序开端处参加以下程序段得到这些寄存器的值。关于CPU指令集不支持读取悉数特别寄存器的MCU,能够经过在MCU内部添加测验逻辑得到。PC值即为程序中止处CPU的取指地址。
PSHA ;将ACC的值压入仓库
TPA ;将CCR的值传送给ACC
STA $2FEB ;将CCR的值存入存储器,地址为$2FEB
PULA ;将ACC弹出仓库
STA $2FEA ;将ACC有值存入存储器,地址为$2FEA
STHX $5F ;将IDX(H:X)的值存入存储器,地址为$005F
TSX ;将SP的值传送给IDX(H:X)
STHX $5D ;将SP的值寄存存储器,地址为$005D
当不再持续调试,给出开端作业的指令,监控程序完毕对作业指令的等候,并且将CPU特别寄存器的值康复。持续作业监控程序,直到最终一条指令即跳转指令进行回来态。
•回来态
CPU履行监控程序的最终一条指令-跳转指令。外部仿真逻辑在指令码后紧接着刺进本次中止事情的中止点地址(进入监控程序之前的用户程序指令地址),CPU的取指空间需求跳回到用户程序空间。撤销对外部中止的屏蔽,康复CPU外围模块的作业时钟,监控程序完结使命,回到用户态,持续作业内部Flash中的用户程序。
3.2 内部仿真逻辑
为了结构适宜的MCU的仿真接口,必须在MCU规划时,在MCU内部添加一个仿真接口模块,称为内部仿真接口模块。担任对仿真接口所需的CPU端口信号进行处理(如出于削减bond-out信号线的考虑,将地址和数据总线复用),并发生外部仿真逻辑所需的操控信号如地址锁存信号,接纳来自外部仿真逻辑的操控信号如程序文凭间切换使能信号等。
3.3 外部仿真逻辑
外部仿真逻辑如图2左部所示,担任接纳计算机经过并口发送的仿真指令,监督MCU的仿真接口,操控仿真器的作业状况。外部仿真逻辑由外部仿真接口模块、断点判别模块、轨道纪录模块、并口接口模块和外部SRAM读写操控模块等部分组成。各个模块的作用简略介绍如下:
•外部仿真接口模块
该模块是外部仿真逻辑中仿真状况机地点的中心模块。功用包含:接纳业自MCU的地址、数据、读/写、取指、地址锁存等信号;依据并口接口模块给出的来自软件的仿真指令,并接纳来自断点判别模块的断点标志信号;发生送给MCU的程序空间切换使能信号;作业监控程序时,给出读写外部SRAM所需信号,并接纳读出的数据,将其送给MCU。
•断点判别模块
依据外部仿真接口模块送来的CPU地址,读取断点标志存储器中的相应值。假如读出的标志为有效值,表明当时地址为断地址。接纳来自并口接口模块的设置和铲除断点指令,将断点存储器的相应方位1或置0。答应设置恣意数意图硬件断点。
•轨道纪录模块
将外部仿真接口模块送来的CPU取指地址,存储在轨道纪录的存储器中。轨道纪录的存储器选用的FIFO的办法,所能纪录的轨道长度是有限的,存满改写。软件读取该存储器,能够得到CPU的作业轨道。
•并口接口模块
并口接口(并行接口),简称并口,也便是LPT接口,是选用并行通讯协议的扩展接口。并口的数据传输率比串口快8倍,规范并口的数据传输率为1Mbps。并口选用的是25针D形接头。所谓“并行”,是指8位数据一起经过并行线进行传送,这样数据传送速度大大提高,但并行传送的线路长度受到限制,由于长度添加,搅扰就会添加,数据也就简略犯错。现在,并行接口首要作为打印机端口等。
供给仿真器和计算机并口之间的通讯接口,能够针对不同的并口形式规划,以满意不同形式的通讯时序要求。
•外部SRAM读写操控模块
仿真进程中,仿真器的不同部分需求分时读写外部SRAM,包含:并口接口模块下装程序到外部SRAM;MCU在监控态从外部SRAM中读取程序指令,存储暂时数据等。
关于Flash MCU而言,这种将用户的待调试程序存储在MCU内部的Flash中,将监控程序存储在MCU外部的SRAM中,并在MCU外部结构仿真逻辑,经过对选用bond-out技能的MCU的bond-out管脚进行监控,来完结在线仿真的做法,在芯片设计时不需求做太多的作业,并且能够反映程序实在的作业作用。而相关于用硬件渠道如FPGA仿真,则价格低廉许多,是一种种权衡折衷的办法。作者提取了一个简略的Flash MCU模型,用这种办法完结了仿真器的逻辑规划,用Synopsys DC归纳,用Quartus布线Altera APEX 20K200 FPGA中,用ModelSim5.4进行了后仿真,完结了仿真验证。成果证明这样的做法是可行的。