摘要:该模块通过AHB总线接口监听总线通信内容并将其实时记录于缓冲器中,用户可以通过该缓冲域观察系统运转;它支持在断点/观察点以及处理器陷阱等条件下通过挂起处理器进行系统诊断,同时其内部多级地址译码机制可以对所有片上控制存储单元进行定位,方便用户进行调试。通过专用的调试通信链路,用户可以方便地对嵌入式系统进行远程调试。
关键词:AHB;硬件调试;跟踪缓冲;通用异步收发器
0 引言
随着计算机体系结构的发展和半导体制造工艺的进步,单个芯片上可以集成更多的电路,如处理器、逻辑核、存储器核、模拟模块、RF模块等,这些共同构成了单芯片系统,也就是常说的片上系统(System on Chip,SoC)。片上系统的出现使得芯片可以实现更加复杂的功能,获取更高的性能,但同时其内部信号也变得越来越难以观察和控制,相应的测试和调试工作也遇到了难以克服的时间复杂性困难。国际半导体技术路线图(International Technology Roadmap for Semieonduc-tors,ITRS)指出,调试和定位问题所需要的时间将会随着工艺的进步呈指数型增长。由于测试和调试工作的复杂性,其费用往往比设计费用还要高,大约要占整个SoC总设计成本的1/3以上。在整个SoC的硬件
设计过程中,从第一次投片到最后成功的实现所有功能,硬件调试的时间已经接近整个时间的35%,而且这个数字随着集成度的提高还会增加。
在整个片上系统中,微处理器是核心,也是最复杂的模块,所以各个处理器内核的提供商也都投入了大量的研发力量,在其内核中集成了丰富的调试功能。当今流行的调试技术大多采用复用JTAG的调试方案,但是这种方法一般都是在目标系统内部插入扫描链,当处理器高速工作的时候,难免会限制处理器性能的提高。为此,该设计提出一种新的调试结构,它不依赖JTAG接口且需要较少的引脚开销,通过挂接在片上高速总线上来实时监测片内通信状况,同时它直接与处理器进行交互,能够在不影响处理器正常工作的情况下控制处理器以及访问所有片上存储单元,用户可以通过专用的数据输出链路进行远程调试,发布调试指令以及获取反馈信息。结合以上特点,该设计将以文献中提出的一个良好调试结构所需具备的三个基本特征作为设计出发点:调试的可观察性;调试的可控制性;高效的通信效率;低入侵性。
1 调试系统构成
以硬件调试模块DSU为核心,AMBA 2.0总线为构架,专用UART为调试链路接口的系统结构如图1所示。
调试主机通过总线接口UART对调试单元发出调试指令;调试单元将控制系统的调试状态,在满足触发条件时将通过与处理器的直接通信来挂起处理器,用户可以利用调试主机通过调试接口访问片上所有存储单元,获取系统状态信息;总线追踪缓存可以工作在两种模式下,在正常模式下通过DSU实时记录总线通信状态,而在调试模式下,将由调试主机对其进行访问,寻找问题发生的根源;指令追踪缓存处于微处理器内部,用来存储执行过的指令;调试接口UART将为调试主机和总线之间提供协议转换服务,实现串行数据与并行数据的相互转化。
1.1 AHB总线
在SoC设计中,芯片内部总线的设计往往决定了芯片的性能、功耗与各模块的复杂度。通常依据以下两个方面选取总线:一是芯片设计流程其内在的需求,二是对交换带宽、延时和效率灵活性的需求。该设计采用ARM公司提出的一种片内高速总线协议AHB,它具有以下特点:支持突发传输;支持分块传输;单周期总线控制权移交;单时钟沿操作;非三态执行;宽数据总线架构;数据和地址流水重叠。此外,该协议还支持静态时序分析以及友好的测试插入。
该系统设计的AHB结构如图2所示,由主从模块、仲裁器以及地址译码器构成,采用中央多路选择器的互联方式。作为核心部件,仲裁器接收最多16个主设备的总线请求,为实现“可配置”的设计初衷,采用基于分治的仲裁策略,实现了固定与轮询两种优先级算法,可以供用户灵活选用。AHB采用的集中式地址译码机制,有利于提高外围设备的可移植性,中央译码器根据地址总线发来的地址以及各个从机的身份信息进行译码以选择从设备,该设计为减少运算逻辑和降低功耗,仅对地址的高端位进行判别。整个AHB系统由多路选择器连接起来,避免了采用三态总线带来的功耗、速度以及可测性方面的问题,系统所需的控制信号和地址数据将由多路选择器路由到相应的目的设备,而根据路由的方向可将多路选择器分为主模块到从模块多路选择器和从模块到主模块的多路选择器。此外,为了解决在没有主机请求总线时的总线停靠(bus parking)问题,此系统还设计了一个缺省主设备(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所示。
当DSU被AHB总线译码器选中后,DSU内部的第一级译码器将对地址总线访问地址进行译码,它将判断当前访问的对象属于三类存储单元中的哪一类,如果是第二类即DSU内部寄存器,那么将继续进行第二级地址译码,译码的结果将决定当前调试主机将访问哪一个功能寄存器;如果是第一类存储部件,由于它们容量较大,并需要其128 b的位宽能与总线位宽相兼容,所以需要在这些循环存储体内设计一个独立的译码器,能够对AHB索引寄存器或一级译码送出的地址再译码;对于第三类存储部件,由于此类存储部件位于DSU外部,所以除了需要DSU内部的第一、二级译码外,在处理器内部仍然需要更深层次的辅助译码,因此在实际工作中,访问此类存储单元所需的时钟周期要多于其他几类存储单元。在图4中,左边5个寄存器将共同决定AHB Trace Buffer的工作情况,断点判别逻辑根据控制、断点和屏蔽寄存器的内容共同决定AHB TraceBuffer记录值来源于总线还是调试主机;时间索引寄存器值将随时钟周期自增加,同时也作为记录内容的一部分方便以后查询;而索引寄存器也将随时钟周期自增,为正常通信数据提供地址,而在调试模式下,将由一级译码器直接提供访问地址;右边3个寄存器将共同控制
微处理器的工作状态,在DSU外部使能信号下处理器进入调试模式后,处理器将程序指针入栈保护,同时输出信号指示当前调试状态并将定时器冻结。当DSU控制寄存器中的BN位被清零时,则处理器定时器解冻,程序指针恢复,退出调试状态。
1.4 调试通信链路
在图1中就已经提到在本系统设计中需要一个调试接口,该接口将连接调试主机与AHB总线,它包含一个连接在AHB总线上的专用UART。该系统为此设计了一个简单的通信协议,它支持数据在串口和AHB接口之间的格式转换。通过这个通信链路,一个读或写传输可以在任意的AHB地址上产生,其结构如图5所示。
该系统设计的UART包含一个波特率发生器,它利用一个18位宽的自减计数器产生所需的波特率,在时钟的驱动下,每当计数器下溢,则产生一个脉冲信号,同时将一个重载寄存器的预定值重新载入计数器,最终产生的UART脉冲频率将是所需波特率的8倍。
调试机的串口支持的数据帧结构为10位,包括1位起始位、8位数据位和1位停止位(高电平)。当进行的是读传输时,除了将读地址按照规定的帧格式进行拆分外,在开始阶段需另加1个控制帧,其中包含指明当前传输的类型以及连续传输的块数;若进行的是写传输,那么在地址发送完后,还需要按照帧结构发送调试数据。每次进行连续传输时,只需要发出1个首地址,以后地址将按照控制帧中指定的块数按字自增。
通过本接口,调试机的串行数据将能被此接口封装成符合AHB总线协议的传输格式,同样在读传输时,调试输出数据也能被此接口分解为单bit数据返回到调试串口。
2 结语
当今业界已经出现了较为成熟的硬件调试系统,如ARM公司的基于JTAG的Embeded ICE宏单元和Multi-ICE协议转换器,它通过扩展JTFAG测试端来实现通信,利用扫描链插入技术访问寄存器并向处理器施加指令来访问处理器及系统的状态。但是由于安全和商业因素的原因,ARM及其调试工具提供商都没有公开它们的细节,并且其高昂的价格也使得很多用户对其望而却步。本文所提出的一种硬件调试单元完全自主实
现,且顺利通过Modelsim的功能仿真,所以它不但能够有效的完成对片上处理器的诊断与调试,而且其拥有的跟踪技术也能对程序的运转以及片内的通信状况进行实时监控,同时专用的硬件协议转换模块在片内就实现了远程调试连接,能够方便的与调试机进行通信。
上一篇:Linux下IEEE1394组网技术研究及实现
下一篇:基于TMS320DM6446的H.264编码器的设计与优化
- CGD和Qorvo将共同革新电机控制解决方案
- 是德科技 FieldFox 手持式分析仪配合 VDI 扩频模块,实现毫米波分析功能
- 贸泽开售可精确测量CO2水平的 英飞凌PASCO2V15 XENSIV PAS CO2 5V传感器
- 玩法进阶,浩亭让您的PCB板端连接达到新高度!
- 长城汽车研发新篇章:固态电池技术引领未来
- 纳芯微提供全场景GaN驱动IC解决方案
- 解读华为固态电池新专利,2030 叫板宁德时代?
- 让纯电/插混车抓狂?中企推全球首款-40℃可放电增混电池,不怕冷
- 智驾域控知多少:中低端车型加速上车,行泊一体方案占主体
- Foresight推出六款先进立体传感器套件 彻底改变工业和汽车3D感知
- 村田感恩季:这份电子元器件使用攻略已备好,速来闯关!
- 揭秘正确选择探头的5大要素 (泰克原装探头促销,高贵不贵,199元起)
- 有奖直播:英飞凌工业半导体在电机驱动行业中的应用 2020年4月21日 上午10:00-11:30 准时开启!
- 【EE团】铁电MSP-EXP430FR5739低价来袭,让你的夏日清凉到底!
- 可配置处理器技术入门
- 据说,来挑战的都是“老司机”,TE答题排位赛火热进行中,不服来战!
- 下载有礼|精华课件汇编:泰克半导体器件的表征及可靠性研究交流会暨吉时利测试测量年度研讨会
- 实战分享|从零开始,设计一款靠谱的开关电源
- 有奖直播已结束【如何利用 TI MSPM0 汽车微控制器提高检测和控制性能】
- TE Connectivity利用传感和连接解决方案,赋能电动汽车发展 参与有好礼!