一种芯片调试方法与装置的制造方法

文档序号:9375428阅读:208来源:国知局
一种芯片调试方法与装置的制造方法
【技术领域】
[0001]本发明涉及一种芯片调试方法,特别的,涉及一种JTAG片上调试方法。
【背景技术】
[0002]随着集成电路技术的快速发展,片上系统的功能和复杂度越来越高,在开发过程中,不可避免的会出现各种错误,只有经过反复的调试修正才能满足设计要求。据统计,调试一般占用整个系统开发时间的20% -50%,俨然已成为集成电路开发的关键环节,因此调试工具的开发就变得尤为重要。
[0003]如何有效地访问集成电路内部的信号是对片上系统进行调试的关键。通过增加可访问测试端口来实现调试的方法会使得芯片面积过大,引起信号完整性问题,甚至需要重新进行设计。这就需要在芯片面积与可访问能力之间寻求一个平衡,即以尽量小的代价增加可访问的信号。
[0004]JTAG的出现解决了这一问题。目前,工业界和学术界都在IEEE1149.1的基础上对JATG进行了广泛的应用开发,金辉等人发表的《基于JTAG标准的处理器片上调试的分析和实现》中设计的JTAG片上调试系统实现了调试的基本功能,但它对处理器内核进行了一系列修改;ARM的JTAG已经很成熟,但是它的指令具有固定编码长度,这对于指令插入等操作更容易,而IC设计应用范围最广的DW-8051指令的编码长度和执行周期并不相同。本发明为了增强该系统的可调试性以及提高系统可靠性,基于IEEE1149.1标准,在几乎不改动内核的基础上,设计了 JTAG片上调试系统。

【发明内容】

[0005]本发明涉及一种芯片调试方法,在不改变内核的条件下,解决了指令编码长度不一以及指令执行周期不一致给调试带来的困难,实现了单步执行、指令插入等功能。具体的,该方法包括以下步骤:
[0006]系统接收调试信号,进入调试模式,同时进行时钟切换,由调试时钟控制芯片的内核与外设;
[0007]根据调试需要,可选的进行单步调试、指令插入、内核执行、外部数据存储器调试、特殊寄存器调试或内部寄存器调试。
[0008]其中,进入调试模式的途径可以是状态位置低、调试接口单元发出的请求信号、触发断点或者触发观察点,其中,只有在系统处于非安全模式下才可以通过后三种方法进入调试模式。
[0009]其中,采用门控时钟和多路选择器来实现时钟切换,即进入调试模式后,内核和外设的时钟被门控,内核停止指令执行,芯片调试模块输出状态位有效信号,重新给外设时钟驱动,这时外设时钟为调试时钟。
[0010]其中,所述的内核程序重启、运行、停止通过时钟切换协助完成,即在调试过程中,内核时钟是停止的,只有当单步执行和插入指令执行时,内核才有时钟驱动,此时时钟来源于调试模块输出调试时钟。根据权利要求I所述的芯片调试方法,其特征在于,单步调试和指令插入操作时,内核与内部ram、外部数据存储器、外设重新建立连接,操作完成连接关系解除。
[0011]其中,系统处于调试状态时,除了单步调试和指令插入的指令执行阶段,内核与内部寄存器,外部数据存储器以及特殊功能寄存器是断开连接的。
[0012]相应的,本发明提供了一种芯片调试装置,该装置包括:信号接收模块、调试状态判断模块、单步调试模块、指令插入模块、内核执行模块、外部数据存储器调试模块、特殊寄存器调试模块以及内部寄存器调试模块。
[0013]从上述技术方案可以看出,本发明具有以下有益效果:几乎没有改动内核,不需要繁多的现场保护措施,结构简单、代价小;时钟控制网络利用门控时钟和设计上严格保证门控单元控制信号的时序关系,时钟切换具有稳定有效的时钟输出;解决了指令编码长度不一、指令执行周期不一致给调试带来的困难。
【附图说明】
[0014]图I芯片调试硬件结构图;
[0015]图2调试入口及进入调试状态后系统各部分的时钟状态;
[0016]图3单步调试、指令插入流程图。
【具体实施方式】
[0017]为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明进一步详细说明。
[0018]如图I所示,本发明实施例中芯片调硬件结构图。硬件平台采用8位MCU,该平台采用DW-8051内核,采用16位地址总线,8位数据总线的方式,进行数据传输。可以看出,所述系统结构基于8051内核,包括ADC、CAN、LIN、PffM等外设,一个32k的外部数据存储器,一个64k的程序存储器和256Byte的内部ram。内核通过访问特殊功能寄存器sfr,控制外设的工作状态,通过存储器地址和数据线读写数据和程序存储器,通过内部ram地址和数据线读写内部ram。
[0019]具体的,本发明实例将结合系统进入调试模式、单步调试、指令插入、访问内部ram、外部数据存储器、特殊功能寄存器、退出调试状态等过程分别进行详细说明。
[0020]首先,系统进入调试模式,根据本发明,系统可通过四条途径进入调试模式,如图2所示,下面将对这四种情况逐一说明。
[0021]在实施例I中,复位时PO. 7/DEBUG置低,系统自动进入调试模式,之后指令寄存器中移入4’ bOOll,执行go指令,系统由调试状态回到正常工作状态。
[0022]在实施例2中,系统在非安全模式下,通过JTAG调试接口控制单元发出request请求信号,内核在执行完当前指令后,进入调试状态,之后指令寄存器移入指令4’ b0100,执行指令Debug_Register,选择调试接口寄存器,配置断点、观察点、单步调试等调试信息;最后令寄存器中移入4’ bOOll,执行go指令,系统由调试状态回到正常工作状态。
[0023]在实施例3中,系统在非安全模式下,内核输出pc值,即当前执行指令的地址与断点寄存器地址匹配,通过触发断点进入调试状态,内核在执行完当前指令后,进入调试状态;之后执行单步调试操作,指令插入操作;最后指令寄存器中移入4’ bOOll,执行go指令,系统由调试状态回到正常工作状态。
[0024]在实施例4中,系统在非安全模式下,内核访问外部数据存储器,且当前执行的地址和数据与断点寄存器地址和数据匹配,通过触发观察点进入调试状态,内核在执行完当前指令后,进入调试状态;之后根据调试需要访问内部ram、外部数据存储器或特殊功能寄存器;最后指令寄存器中移入4’ bOOll,执行go指令,系统由调试状态回到正常工作状态。
[0025]系统进入调试模式的同时,采用门控时钟和多路选择器进行时钟切换,内核和外设的时钟被门控,内核停止指令执行,调试模块输出状态位有效信号,重新给外设时钟驱动,这时外设时钟为调试时钟TCK。
[0026]系统进入调试模式后,根据调试需要选择单步调试、内核执行等不同的调试过程,下面将结合图3,对单步调试和内核执行的过程进行详细说明。
[0027]在实施例5中,系统进入调试模式之后,进行单步调试操作,具体步骤如下:
[0028]在步骤SlOl中,系统进入调试状态后,指令寄存器移入指令4’ b0100,执行指令Debug_Register,选择调试接口寄存器,单步调试控制寄存器移入“ I ”,调试模块发起单步调试命令。
[0029]在步骤S102中:调试模块输出单步执行时钟使能信号,作为调试时钟TCk门控控制信号,其输出作为内核时钟输入;
[0030]在步骤S103中:内核与程序存储器重新建立起连接关系;内核与内部ram、外部数据存储器、外设也重新建立连接关系;
[0031]在步骤S104中:内核根据pc值,从程序存储器取指令,开始执行指令,这时pc值按照程序运行正常变化;
[0032]在步骤S105中:当该条指令执行完,调试模块检测到指令执行完毕标志;调试模块停止调试时钟输出到内核,内核程序运行停止,同时内核与程序存储器断开连接,单步调试操作完成。
[0033]在实施例6中,系统进入调试模式之后,进行指令插入操作,具体步骤如下:
[0034]在步骤S201中,系统进入调试状态后,指令寄存
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1