微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 一种片内硬件调试支持单元设计

一种片内硬件调试支持单元设计

时间:03-07 来源:互联网 点击:

省主设备(default master),其选择停靠的主机号依赖选取的仲裁算法。split传送是AHB的一个显著特点,它在防止系统死锁和充分利用总线方面起到了积极作用,这里为了解决分块锁定(split locked)这一矛盾以及地址未命中问题,设计实现了一个虚拟从设备(dummy slave),当以上问题出现时,将由虚拟从设备代为发送回应信号。
1.2 Trace Buffer
为了实现引言中提到的调试的可观察性,本系统中就必须具备能够记录总线通信信息以及指令执行情况的模块。AHB Trace Buffer就是一个循环缓冲存储体,被用来存储AHB上通信的所有信息。AHB总线上的地址、数据和各种控制信号存储在其中,并且可以在以后的分析中读出;同时在需要调试写入的时候也可以通过AHB写总线写入数据。本模块因每个周期需记录的信息位宽为128 b,所以设计的AHB TraceBuffer存储器将采用4个位宽为32 b的同步SRAM构成,深度可配置。若整个Buffer的容量为1 KB,则每一个SRAM大小为64×32 b,若容量为2 KB,则每一个SRAM大小为128×32 b,依次类推。
在正常总线通信中,每一笔AHB传输将被循环存储到Buffer中,在处理器进入调试模式后,AHB TraceBuffer被暂时挂起,这时可由外部调试设备利用AHB总线访问Buffer,通过地址译码控制4块SRAM各自的使能信号,进而完成读/写操作。Buffer的数据输入端为128 b,包含的有地址、数据、控制信号和控制寄存器值等,详细见表1。

同样在微处理器内部实现一个指令TraceBuffer,用来存储执行过的指令。该部件同样循环存储,位宽128 b,利用4块SRAM构成。该存储器中将记录指令执行过程中指令运行状态,操作码、操作数和操作结果,以及PC指针等值,用以方便以后读出进行诊断定位。
两块Buffer在系统正常运转时记录数据,所以为了保证其内容的正确性,仅允许系统进入调试模式时对其进行读写访问,而正常状态下将禁止对其访问。
1.3 DSU单元
对于嵌入式系统而言,其内部的大部分信号与微处理器的工作状态对于开发者都是不可见的,本设计就是通过提高在系统开发过程中用户对系统的可观察性和可控制性从而帮助开发者更为有效的定位设计中的错误,从而加速开发周期。为此,本系统必须在片上集成单独的调试单元用于监测系统运转并能接管处于异常状态时的微处理器。
借鉴CPU中程序状态字的作用,DSU中首先需要一些寄存器能够控制与管理整个调试单元的行为,它应该能接收来自调试主机发布的调试命令,同时也能够对系统内部断点等触发行为做出实时响应以及在任何时刻都能被调试主机所访问,为此,该调试单元设计了如图3所示的部分关键寄存器。

图3(a)为AHB Trace Buffer控制寄存器。其中EN位将控制AHB Trace Buffer的使能;DM位表示Buffer处于延迟计数模式,设计这种模式是为了方便观察断点发生前后定长时间内系统的运转状态;BR位则表示AHB断点命中;高16位DCNT表示在延迟计数模式下的延迟计数值。AHB断点寄存器有两路,可写入30位的精确断点地址,当AHB地址总线上广播的地址与该断点地址相吻合时,将会立即冻结AHBTrace Buffer,同时清除AHB控制寄存器的使能位。如果控制寄存器中的延迟模式被置位,那么在断点命中的同时,将启动内置自减计数器,该计数值将由DCNT域控制,当计数器自减至零时才能引起冻结行为。
图3(b)为DSU控制寄存器,它与程序状态字作用相似,能够直接控制微处理器的行为模式,决定微处理器如何进入调试状态。TE位将控制处理器中指令Buffer的使能;第1~5位将作为处理器能够被挂起的条件位,BE表示处理器发生错误可进入调试模式,BW表示触发IU监测点可进入调试模式,BS表示执行断点指令(tal)可进入调试模式,BX表示任何陷阱可进入调试模式,BZ是在特定陷阱才能进入调试模式;DM将用来指示处理器进入调试状态;EE位和EB位为只读,将记录DSU外部使能和调试信号;PE位用来记录处理器是否进入错误状态;HL位记录处理器是否暂停;PW位记录处理器是否进入省电模式;其他位均未定义。
图3(c)为DSU中断和单步寄存器,由于该系统设计的AHB总线系统最大可支持16个主设备,所以这里的中断和单步控制寄存器以及屏蔽寄存器也将能够控制16个主设备。当前面所述的引起系统进入调试模式的条件触发时,则相应的BNx(break now)位将被置位,而SS(single st-ep)位则可通过外部写入而使得处理器执行单步操作,这些位将直接驱动对应每一个微处理器的控制部件,由各处理器负责监测并做出相应的调试反应,如PC现场保护、冻结流水和定时器、关闭看门狗等。
图3(d)为DSU屏蔽寄存器,考虑在多处理器系统中一个处理器进入调试对其他处理器的影响,特设计此寄存器。EDx表示一个处理器进入调试模式时,处理器x是否强制进入调试模式;DMx表示处理器x是否屏蔽其他处理器进入调试模式。当某一处理器因触发断点或满足。DSU控制寄存器所设定的条件时,调试单元内部的屏蔽逻辑将会查询该寄存器,对其中的EDx和DMx进行相与运算,得出的结果将直接写入DSU中断和单步寄存器中对应BNx位,由此可直接决定其他处于正常状态的处理器是否连带进入调试模式。
调试单元的设计初衷,不仅是要能够控制整个系统接受调试控制,同样也需要用户能够对所有片上存储单元进行访问。整个片上存储单元可分为3类:一是两大Trace Buffer,包括AHB和指令追踪缓存;二是DSU内部寄存器,除前所述的四大关键寄存器,还包括用于记录时间值的时间索引寄存器,用于控制AHBTrace Buffer内部地址的AHB Trace Buffer地址索引寄存器,用于存储精确断点地址的AHB断点寄存器和与其配套的掩码寄存器;三是微处理器内部寄存器,包括cache,IU寄存器堆,SPR,PSR,FSR,窗口寄存器,PC和NPC指针,陷阱寄存器等。为了能对如此多的寄存器和存储器进行准确定位,必须有一套完整的寻址机制,所以在DSU设计过程中设计了一套多级译码体体系,将片上所有存储部件地址映射入此体系中。基于以上对DSU功能的设计考虑,其具体的结构组成如图4所示。

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

网站地图

Top