关键词:微控制器 在线仿真 开发系统 Flash SRAM电子园51单片机学习网3EC@4D#R s
电子园51单片机学习网Uhlk.q由于市场对MCU功能的要求总是不断变化和升级,MCU应用的领域也不断扩展,因此往往需要对最初的设计进行修改。Flash MCU与以往OTP/MASK MCU相比,最大的优点就在于可进行高达上万次的擦写操作,顺应了MCU功能不断修改的需求;另一方面,Flash MCU市场价格也在不断下降。因此,许多OEM已将Flash MCU用于产品的批量生产。对于Flash MCU,基于内部Flash的在线仿真器更接近于程序真实的运行特性,程序调试的效果更好,效率更高。实际上,Flash MCU工作时Flash的延时、读写时充等特性是非常,程序存储在MCU外部仿真板上的SRAM中,由额外的硬件逻辑来模拟Flash的这些特性是费时低效的;同时将Flash和MCU内嵌的其他类型存储器如SRAM、ROM等区分开来也是十分重要的。如果在程序的调试阶段就可以反映出这特性,有且于实现程序从仿真器到商用MCU芯片的无缝转移。电子园51单片机学习网;|tJ%I?rz"F I
ul?PcS446061 关于Flash MCU
[ D'w#q"u+Z5g~44606 电子园51单片机学习网!m/r"](oqH\+D'TjFlash MCU的构成如图1所示,主要由CPU核、Flash IP及其控制模块、SRAM IP及基控制模块、WatchDog、PMU(Power Manage Unit,功耗管理单元)、I/O端口以及ISP在线编程接口等组成。不同功能的Flash MCU还包含一些各自独特的应用模块单元,如用于寻呼的Flash MCU所包含的解码模块。对于用来构成在线仿真器的Flash MCU还可能包括仿真接口单元。本文在讨论Flash MCU的在线仿真时,指的都是包含仿真接口的Flash MCU。
:LR7U]QY44606[Pi`g7Tg44606Flash存储器几乎拥有现今追求个性化的用户所需要的所有优点:掉电数据不丢失、快速的数据存取时间、电可擦除、容量大、在线(系统)可编程、价格低廉以及足够多的擦写次数的高可靠性等,已成为新一代嵌入式应用的首选存储器。与Flash MCU相比,MASK(掩膜)MCU尽管在大指生产时仍具备一定价格优势,但其升级不便的缺点,随着今后Flash成本的进步降低和MCU功能需求的逐渐增多,将表现得更为显著。
X6t7M~4GE&aq,y44606 电子园51单片机学习网f3~3c0M CSN2 基于外部SRAM的MCU在线仿真器
I%F'Y%T!Mq!AUl44606)q*{^yw4B.^u44606MCU 仿真器的一种常见做法是,将用户的待调试程序(以下简称用户程序)存储在MCU外部仿真板的SRAM(以下简称外部SRAM)中,在bond-out MCU的外部结构仿真监控硬件(以下简称外部仿真逻辑),通过监视和控制仿真接口信号即bond-out的信号,来获取MCU的状态,是指将MCU内部的某种信号连接到封装的管脚上,使得外部仿真逻辑可以监视和控制MCU内部的状态。这种非商用芯片专用于构成在线仿真器,当用户程序在仿真器中调试完成后,编程到商用MCU芯片中,应用到用户系统。在商用MCU中,这些仿真接口信号不会出现在芯片封装的管脚上。
"u&LBhz*W44606 电子园51单片机学习网)Kp;pOc0h$Qn_H4|在Flash MCU没有被广泛应用之前,仿真器设计公司通常将用户程序和监控程序都存储在外部SRAM中,这种做法基本上可以反映SRAM MCU真实的运行情况,对用户程序的调度效果影响不大。但是对于Flash MCU而言,则存在一定的问题。毕竞SRAM和Flash在工艺和读写时序上相去甚远,CPU运行存储在SRAM和Flash中的程序,情况是完全不同的。有可能出现程序存储的仿真器的外部SRAM中运行良好,但是编程到商用MCU中工作起来却不正常。随着Flash MCU在 MCU市场中的比重越来越大,这一问题显得越来越突出,有必要加以重视。
*T#A nL;?2n0Q44606.Ih7O0k(x!U44606本文介绍的Flash MCU仿真器的设计方法,几乎不增加MCU的仿真接口信号和芯片设计的复杂程度,就可以接近程序在商用MCU中的运行情况,实现用户程序从仿真器到商用MCU的良好转移。电子园51单片机学习网X)L*eme7iPt#i
电子园51单片机学习网.|fL!p}/T3 基于MCU内部Flash的在线仿真器的一种设计方法电子园51单片机学习网4V |[ x/SK$}(U
电子园51单片机学习网,~"ej&]W9o`2xu图2是Flash MCU仿真器系统构成示意图,其中的虚线接口信号是MCU的仿真接口,通常包括仿真使能信号,bond-out MCU中的CPU的地址、数据、读/写和取指等信号,以及少数几个用于仿真的控制信号。仿真接口是Flash MCU与外部仿真逻辑之间的桥梁,使得外部仿真逻辑能够监控MCU的内部状态。
'Y6|J3en44606电子园51单片机学习网e ^R5?1{
3.1 仿真器的工作原理
仿真器复位后,CPU开始运行存储在MCU内部Flash(以下简称内部Flash)中的用户程序,外部仿真逻辑实时监测仿真接口信号,取得当前CPU运行指令的地址,判断是否断点。一旦遇到断点,外部仿真逻辑停止用户程序的运行,切换程序运行的地址空间,开始运行存储在外部SRA模块的监控程序。监控程序取得MCU的当前状态,并根据软件的调试要求,改变MCU内部的一个或多个寄存器的值,控制MCU的下一步运行。当监控程序完成使命,需要将程序的运行空间切换回用户程序空间,CPU取指从外部回到内部,继续运行用户程序。在用户程序运行过程中,软件通过并口发送的调试指令可以控制外部仿真逻辑,随时打断程序运行,或者单步调试,工作的过程与断点相心。断点、单步及软件中断在下文中断称为程序中断事件。电子园51单片机学习网,L)KN$U,W7] j3J
电子园51单片机学习网({ z$\:R,k仿真器工作时,CPU的取指空间需要在内外存储器之间反复切换。CPU地址空间划分示意图如图3所示。总体上,仿真器的工作受图4所示的状态机控制。该状态机共有四个状态:
;c6H(sq*|]?| Ia _44606 电子园51单片机学习网9D Q aMxw3N'_·用户程序运行态(简称用户态)
x}*]7v]$s,]44606pEAq7Z)Y44606仿真器复位后,处在运行用户程序的状态。在该状态下,CPU运行存储在内部Flash中的用户程序;外部仿真逻辑实时监测仿真接口,等待程序中断事件的发生,进入下一状态-跳转态。
9P K-U$y(V7J2G5o44606,Z0F&V0~N'B{"wU44606用户程序通过MCU的ISP(在线编程接口)编程到内部Flash中,由Flash MCU的专用编程器完成。在设计bond-out MCU时,应该考虑与非bond-out MCU在编程时管脚的一致性。电子园51单片机学习网e1uk-G}]
~5WoF$c.On9l44606外部SRAM用来存储监控程序和监时数据。电子园51单片机学习网 c*A.RY{f8ej-r
0Y6J5SIu$IU44606·跳转态电子园51单片机学习网+y!Y/h,y!Yl kf
Q;e)J%]9rF*t44606一旦程序中断事件发生,需要切换CPU的取指空间,跳转到监控程序窗口。电子园51单片机学习网['w `:Xt QrHt
电子园51单片机学习网 g-yd0R]a}8`*M由于在程序中何处中断是不可预知的,因此不可能在用户程序中预先安插好用于空间切换的跳转指令。所以需要一个专门的状态来插入跳转指令码和跳转的目的地址,即监控程序的入口地址,强制CPU运行监控程序。监控程序窗口是划分CPU地址空间时,为仿真功能预留的地址空间,空间大小视所需的监控程序的大小而定,监控程序的大小在一定程序上取决于仿真功能的强弱。电子园51单片机学习网{{ il4E.UB
电子园51单片机学习网&gRJ-E Z{ ^'w6G5o EsCPU从仿真接口读跳转指令码和跳转地址。MCU外部仿真逻辑同时使能程序空间切换信号,屏蔽MCU的所外部中断,停止MCU中CPU外围模块的时钟,也就相当于屏蔽了MCU的所有内部中断。当程序空间的切换完成后,仿真器进入监控态,运行存储在外部SRAM中的监程序。
/i7|9U }r2T&z4Y44606 电子园51单片机学习网EG~z?+V·监控态电子园51单片机学习网/B+pp*oG{ ~
f&cl2S(lL r.}:h44606在监控状态下,CPU运行存储在外部SRAM中的监控程序;继续禁止MCU的所有外部中断,停止MCU中CPU外围硬件模块的时钟。
*zY4a JF~44606 电子园51单片机学习网#qp)_0sui }\e监控程序的任务是获取MCU当前的状态,接受软件的调试命令,控制MCU的下一步运行。监控程序可以写得很简单,仅仅获取CPU特殊寄存器和外围硬件寄存器的值,实现监视功能。也可以有比较完备的功能,例如接收用户的调试指令,修改其中一些寄存器的值,命使得MCU再次运行时,按照用户的调试要求往下运行。这需要在MCU设计时,保证在CPU外围模块的时钟停止时,也可以读写外部硬件寄存器。至于CPU的5个特殊寄存器;PC、ACC、IDX、CCR和 SP,可以通过进入监控程序执行特定的程序段得到。如MOTOROLA的HC6808就可以通过在监控程序开始处加入以下程序段得到这些寄存器的值。对于 CPU指令集不支持读取全部特殊寄存器的MCU,可以通过在MCU内部增加测试逻辑得到。PC值即为程序中断处CPU的取指地址。电子园51单片机学习网7U,i1t"qF.q8l"|#d
.cy!O3vL9\%]~44606PSHA ;将ACC的值压入堆栈
j+o2BJR.A44606 电子园51单片机学习网!vwu0` ^ w/i._TPA ;将CCR的值传送给ACC
Y _;gF;_44606 电子园51单片机学习网pQsz*c7dDe!vSTA $2FEB ;将CCR的值存入存储器,地址为$2FEB电子园51单片机学习网\7D[4jFq4O`4o
p&m/vjQ|Q44606PULA ;将ACC弹出堆栈
hB;yA~#C#Vf[b44606@1bz!Q}/n [2u?M44606STA $2FEA ;将ACC有值存入存储器,地址为$2FEA
xryc#y^lc!B44606 电子园51单片机学习网;y$Yc6[F K^r#WSTHX $5F ;将IDX(H:X)的值存入存储器,地址为$005F
1m0@/{Vb44606*J tv*C^ A:D|0{44606TSX ;将SP的值传送给IDX(H:X)
y`{Mz\c1qJ1s`1t44606%KYc MC0Hp*^T44606STHX $5D ;将SP的值存放存储器,地址为$005D
/l r:mU }`Xox44606 电子园51单片机学习网+qv S acxZZ.c当不再继续调试,给出开始运行的命令,监控程序结束对运行命令的等待,并且将CPU特殊寄存器的值恢复。继续运行监控程序,直到最后一条指令即跳转指令进行返回态。
(P!o$l8]@z]UbM44606 电子园51单片机学习网RIev9w)s1pP·返回态电子园51单片机学习网I*zb ]A3co
电子园51单片机学习网{5aRjRCPU 执行监控程序的最后一条指令-跳转指令。外部仿真逻辑在指令码后紧接着插入本次中断事件的中断点地址(进入监控程序之前的用户程序指令地址),CPU的取指空间需要跳回到用户程序空间。取消对外部中断的屏蔽,恢复CPU外围模块的工作时钟,监控程序完成使命,回到用户态,继续运行内部Flash中的用户程序。电子园51单片机学习网rtR)s u&f
^u KJ e N446063.2 内部仿真逻辑
uv1[a!bk1P44606 电子园51单片机学习网1RFuUb4Ta7@z为了构造合适的MCU的仿真接口,必须在MCU设计时,在MCU内部增加一个仿真接口模块,称为内部仿真接口模块。负责对仿真接口所需的CPU端口信号进行处理(如出于减少bond-out信号线的考虑,将地址和数据总线复用),并产生外部仿真逻辑所需的控制信号如地址锁存信号,接收来自外部仿真逻辑的控制信号如程序文凭间切换使能信号等。电子园51单片机学习网B nY2k:es{
电子园51单片机学习网Eda7oj3.3 外部仿真逻辑
ti nAL-X44606r;BI/c,s4@&iV44606外部仿真逻辑如图2左部所示,负责接收计算机通过并口发送的仿真命令,监视MCU的仿真接口,控制仿真器的工作状态。外部仿真逻辑由外部仿真接口模块、断点判断模块、轨迹纪录模块、并口接口模块和外部SRAM读写控制模块等部分组成。各个模块的作用简单介绍如下:电子园51单片机学习网l)x o Kj$H
R|qhp\;rVng44606·外部仿真接口模块电子园51单片机学习网0k-@7j/Tq g
电子园51单片机学习网 i.O8Rm(tbBZG8M;t该模块是外部仿真逻辑中仿真状态机所在的核心模块。功能包括:接收业自MCU的地址、数据、读/写、取指、地址锁存等信号;根据并口接口模块给出的来自软件的仿真命令,给出仿真控制信号;在程序空间切换时插入跳转指令和地址;将来自MCU的地址和取指信号送给断点判断模块,并接收来自断点判断模块的断点标志信号;产生送给MCU的程序空间切换使能信号;运行监控程序时,给出读写外部SRAM所需信号,并接收读出的数据,将其送给MCU。
BV*Si'Iw44606 电子园51单片机学习网Pz9KX H|F·断点判断模块电子园51单片机学习网4W6F9J'I"V$cW/BtM
Ny,` WzW];z}Op44606根据外部仿真接口模块送来的CPU地址,读取断点标志存储器中的相应值。如果读出的标志为有效值,表示当前地址为断地址。接收来自并口接口模块的设置和清除断点命令,将断点存储器的相应位置1或置0。允许设置任意数目的硬件断点。电子园51单片机学习网3fR#u Q*z.T){1Fl
U6z V*EIe-O"U%s#{)J44606·轨迹纪录模块电子园51单片机学习网e3PF-_9j ~|%]e
o(WpIl~44606将外部仿真接口模块送来的CPU取指地址,存储在轨迹纪录的存储器中。轨迹纪录的存储器采用的FIFO的方式,所能纪录的轨迹长度是有限的,存满刷新。软件读取该存储器,可以得到CPU的运行轨迹。电子园51单片机学习网6r,w4u7of b.i
3urrF,Z(K1y8b1gX+[44606·并口接口模块
M i1l%r)Jt5K44606 电子园51单片机学习网sQ*X%@:qPp提供仿真器和计算机并口之间的通信接口,可以针对不同的并口模式设计,以满足不同模式的通信时序要求。电子园51单片机学习网(A ru4}4n
T0~|#pz-v"}44606·外部SRAM读写控制模块
6a ?%_ T;{'A(d;k ^ o44606 电子园51单片机学习网a2lb fG Pq8Z仿真过程中,仿真器的不同部分需要分时读写外部SRAM,包括:并口接口模块下装程序到外部SRAM;MCU在监控态从外部SRAM中读取程序指令,存储临时数据等。
xQq|wgY44606eCh!@^ Q,f44606对于Flash MCU而言,这种将用户的待调试程序存储在MCU内部的Flash中,将监控程序存储在MCU外部的SRAM中,并在MCU外部构造仿真逻辑,通过对采用 bond-out技术的MCU的bond-out管脚进行监控,来实现在线仿真的做法,在芯片设计时不需要做太多的工作,而且可以反映程序真实的运行效果。相对于完全在芯片仿真(on-chip debugger),该方法简单,MCU的设计周期短;而相对于用硬件平台如FPGA仿真,则价格低廉许多,是一种种权衡折衷的方法。作者提取了一个简单的Flash MCU模型,用这种方法完成了仿真器的逻辑设计,用Synopsys DC综合,用Quartus布线Altera APEX 20K200 FPGA中,用ModelSim5.4进行了后仿真,完成了仿真验证。结果证明这样的做法是可行的。电子园51单片机学习网3jOTm,f7r
文章评论(0条评论)
登录后参与讨论