支持多种底层接口的在线仿真器装置的制作方法

文档序号:6437483阅读:184来源:国知局
专利名称:支持多种底层接口的在线仿真器装置的制作方法
技术领域
本发明涉及一种嵌入式CPU在线仿真器,尤其涉及一种支持多种与目标CPU连接的底层接口的在线仿真器。
背景技术
目前,嵌入式技术应用已经在现实生活中无处不在,居家旅行,交通控制,无线通信,多媒体娱乐等都应用到了嵌入式技术。在嵌入式CPU程序开发调试过程中,程序开发人员一般都会使用到在线仿真下载调试程序,设置断点、单步执行、观察、修改处理器寄存器以及内存变量。在线仿真器是连接PC机上处理器调试程序和目标CPU的中间体,实现PC上调试软件与目标CPU之间通信。而PC调试软件与目标CPU的通信实际上在线仿真器接收来自PC调试软件的调试命令,并解析命令,告知CPU该进行如何操作,如果CPU有返回值, 在线仿真器则继续读取CPU返回数据,并回传给PC调试软件。调试软件以此得到CPU内部数据,而程序开发人员根据这些数据判断程序是否正确执行。目前,在线仿真器与PC调试软件之间一般都通过USB接口通信,在线仿真器在PC 调试软件接口端,对数据的处理方式基本统一。而另一方面,虽然大多数CPU都支持以JTAG 通信方式进行在线调试,但是,不同嵌入式CPU与在线仿真器的底层接口却还各不相同。以至于,如果程序开发人员需要选用其它的处理器,就需要重新购买新的在线仿真器,增加了成本;还需要重新学习新的在线仿真器的使用,增加了程序开发的难度。

发明内容
为了克服现有在线仿真器与CPU接口不统一而造成的生产成本和开发难度增加的不足,本发明提供一种同时支持多种与CPU通信的底层接口、有效降低生产成本、减少程序开发的难度的支持多种底层接口的在线仿真器装置。本发明解决其技术问题所采用的技术方案是一种支持多种底层接口的在线仿真器装置,所述在线仿真器装置包括调试命令接收单元,用以接收来自PC机调试软件的命令数据,并对命令的格式进行正确性检查,对于格式正确的命令,调试命令接收单元会向命令解析与执行单元发出操作请求,对于格式错误的命令不作处理;命令解析与执行单元,用以对来自调试命令接收单元的操作请求进行解析,并根据解析得到的命令类型将操作分解成微操作,以微操作的形式向所述JTAG接口驱动单元发出接口转换请求;JTAG接口驱动单元,用以接收命令解释与执行单元的微操作转换请求,向目标 CPU发送JTAG接口驱动信号,或从目标CPU读取数据;JTAG驱动单元在每个微操作驱动完成之后向所述命令解析与执行单元发出JTAG接口驱动完成信号;数据封装单元,用以在读调试命令下,接收JTAG接口驱动单元返回的数据并将数据按照设定格式封装后按字节发回给PC机调试软件。
作为优选的一种方案所述命令解析与执行单元中,解析执行的命令包括目标 CPU通用寄存器读写命令、目标CPU控制寄存器读写命令、目标CPU中辅助调试单元寄存器读写命令以及与目标CPU相连的存储器读写命令。作为优选的另一种方案所述命令解析与执行单元中,微操作包括备份CPU通用寄存器,恢复CPU通用寄存器,更新CPU通用寄存器,读取CPU通用寄存器,备份CPU辅助调试单元现场寄存器,恢复CPU辅助调试单元现场寄存器和更新CPU辅助调试单元现场寄存器。进一步,所述命令解析与执行单元将PC机的调试命令解析为多个微操作,并控制 JTAG接口驱动单元按序完成各个微操作步骤。所述命令解析与执行单元对相同的调试命令解析为相同的微操作组合,而与连接目标CPU的底层接口无关。作为优选的再一种方案所述JTAG接口驱动单元包含微操作控制状态机和一个公用的TAP状态机,每个微操作控制状态机与TAP控制器对应一种底层接口。进一步,所述JTAG接口驱动单元中,微操作控制状态机首先解析微操作及其对应的参数,然后将解析得到的一些参数输入到TAP状态机,微操作控制状态机启动TAP状态机,并等待TAP状态机运行结束。更进一步,所述JTAG接口驱动单元中,通过设置装置中的寄存器选择使用其中一个微操作控制状态机,由此实现对多种底层接口的支持。本发明的有益效果主要表现在1)调试命令执行过程统一化。本发明通过将调试命令分解成微操作组合,实现了对于不同底层接口的命令执行过程统一。2、可扩展性好。 本发明通过将上层命令的执行与底层接口的驱动分离开,使得整体架构清晰,可扩展性好, 只要设计一个微操作控制状态机就能实现对一种新的底层接口的支持。


图1是在线仿真器装置总体结构示意图。图2是写存储调试命令格式的示例图。图3是调试命令接收单元内部结构示意图。图4是命令解析与执行单元内部结构示意图。图5是JTAG接口驱动单元内部结构示意图。图6是数据封装单元内部结构示意图。
具体实施例方式下面结合附图对本发明做进一步描述。参照图1 图6,一种支持多种底层接口的在线仿真器装置,所述在线仿真装置是以帧的形式接收调试命令的。帧是由若干字节组成的,第一个字节总是为0x68,标识命令帧的开始,紧接着的一个字节为命令码,其后是命令带的参数,最后一个字节总是0x16标识帧的结束。所述在线仿真器装置包括调试命令接收单元,参照图3,该单元以8比特并行的方式接收PC调试软件发过来的调试命令,单元中包含一个状态机控制数据的读取行为。该单元在调试命令缓存不为空,并且该单元为空闲状态或者命令解析与执行单元需要数据时发出读请求信号;在单元为空闲状态下读出的数据被认为是命令帧开始标识,如果数据不为0x68,则单元返回空闲状态,如果帧开始标识正确则继续读下一个字节数据,并认为该数据为命令码,读出命令码之后将该命令码与当前所支持的所有命令进行格式比较,如果命令格式错误则不作处理, 单元重新回到空闲状态;如果命令格式正则从命令码中分离出命令类型作为操作请求发给命令解析与执行单元,并等待命令解析与执行单元执行完调试命令并发出命令执行完成信号;然后调试命令接收单元读出命令帧的最后一个字节,命令帧结束标识,并重新回到空闲状态。命令解析与执行单元参照图4,负责对来自调试命令接收单元的操作请求进行解析,并根据解析得到的命令将操作分成多个微操作,并以微操作形式向JTAG接口驱动单元发出接口转换请求。该单元根据调试命令接收单元发出的操作请求,分析出具体命令,这些命令包含存储器读写命令,CPU寄存器读写命令和CPU辅助调试单元寄存器读写命令。命令解析与执行单元中包含3个状态机负责对这3类命令的执行,并由上述命令解析的结果激活相应的状态机。每个上述微操作对应状态机中的一个或两个状态,称之为微操作状态 对于在一个状态能完成的微操作,状态机在一个微操作状态发出微操作请求并在下一个状态等待微操作的完成;对于两个状态完成的微操作,状态机在前一个状态初始化一些微操作所需的参数,包括发出调试命令中数据读取命令帧中的数据,在第二个状态发出微操作请求并在下一个状态等待微操作完成。命令解析与执行单元在读类型的调试命令开始执行的时候向数据封装单元发出数据封装请求,单元在状态机完成命令的时候会发出命令完成信号。在该单元中3个状态机都会发出调试命令数据读请求信号,这3个信号通过一个或门输出到调试命令接收单元;也都会发出命令完成信号,同样通过一个或门输出到调试命令接收单元;三个状态机发出的微操作请求信号通过一个数据选择器输出,选择器的选择信号依赖于上述命令解析结果,调试命令数据则通过调试命令接收单元直通到该单元,同时该数据还会直通到JTAG接口驱动单元。JTAG接口驱动单元参照图5,该单元负责执行来自命令解析与执行单元的微操作命令,向目标CPU发送JTAG接口驱动信号,或从目标CPU读取数据JTAG驱动单元在每个微操作驱动完成之后向所述命令解析与执行单元发出JTAG接口驱动完成信号。JTAG接口驱动单元中包含若干个微操作控制状态机和一个公用的TAP状态机以及进行JTAG通信的数据移位寄存器,每个微操作控制状态机对应一种底层接口,该单元能够根据用户的设置在接收到微操作请求的时候选择激活其中一个微操作控制状态机。在微操作控制状态机中,通过解析微操作命令得到TAP状态机所需的参数并激活TAP状态机开始接口转换,多个微操作控制状态机输出的TAP状态机参数通过数据选择器共同驱动TAP状态机,输出的TAP 状态机参数包括指令、指令长度、数据和数据长度。微操纵控制状态机在执行读类型的微操作时,会通过驱动TAP状态机读出目标CPU返回的数据并传给数据封装单元,并在向数据封转单元传送数据之前传送数据的长度信息,同时会在所有有效数据发送完成之后,发出信号告知数据封装单元数据已经全部读取完成。数据封装单元参照图6,该单元负责在需要有数据返回到调试软件的调试命令的执行过程中,接收来自JTAG接口驱动单元的数据,并将数据按照调试命令帧相似的格式
5封装成一帧,然后传回给PC端。该单元中包含一个状态机控制数据的读取与封装发送过程,状态机在空闲状态收到来自调试命令与解析单元发来的数据封装请求时被初始化,然后读取JTAG接口驱动单元传来的数据,封装数据,并回传给PC端。数据的读取,封装与回传过程是同步执行的,封装过程就是在数据头加入帧开始标识0x68和数据长度,在数据末加入结束标识0x16。该单元在收到JTAG接口驱动单元发来的数据读取完成信号之后,向 PC端发出最后一个结束字节,重新回到空闲状态。本实施实例中对“读存储器”命令进行解析执行。PC调试软件8发过来的调试命令数据如图2所示,具体表示是向存储器地址OxSOOOFCAO处写入一个32位的数据 0x4433AA55o调试命令接收单元2在空闲状态下接收到调试命令数据的第一个字节0x68时,表示一次新的调试命令数据传输的开始,并在下一次接收的数据将是命令字节;调试命令接收单元2接收到命令字节0x44后,将该命令与当前支持的所有命令码比较看是否为有效命令;命令格式正确,调试命令接收单元2向命令解析与执行单元3发出操作请求,同时会继续接收调试命令数据并发给命令解析与执行单元3和JTAG接口转换单元5。命令解析与执行单元3在空闲状态下接收到调试命令接收单元2发来的操作请求信号之后,对命令码0x44进行命令解析;解析得知该命令为“存储器写命令”,且要写数据的宽度为32位。命令解析与执行单元接收下一个字节数据0x03,表示需要向存储器写入 4个字节,也就是一次写操作。该单元对该命令的执行过程是将该命令分解成备份CPU辅助调试单元现场寄存器、备份CPU通用寄存器RO和Rl、更新CPU通用寄存器RO和Rl、更新 CPU辅助调试单元现场寄存器、恢复CPU通用寄存器RO和Rl、恢复CPU辅助调试单元现场寄存器这9个微操作组合。命令解析与执行单元3依次对每一个微操作作如下处理向JTAG 接口驱动单元5发出JTAG接口转换请求,并等待JTAG接口驱动单元完成该次转换。JTAG接口驱动单元5在空闲状态下接收到命令解析与执行单元3发来的JTAG接口转换请求之后,与当前目标CPU底层接口对应的微操作控制状态机4解析要处理的微操作,并产生控制TAP状态机的4个参数IR_data、IR_length、DR_data、DR_length,其中IR_ length为IR_data的比特长度,DR_length为DR_data的比特长度;微操作控制状态机将参数传给TAP状态机6,并启动TAP状态机转换;TAP状态机6在转换完成之后向微操作控制状态机4发出转换完成信号,微操作控制状态机4在收到转换完成信号之后会向命令解析与执行单元3发出JTAG接口驱动完成信号。每个微操作执行过程依次如下1)在执行备份CPU辅助调试单元现场寄存器微操作中,TAP状态机6产生JTAG信号驱动与目标CPU连接的JTAG接口,目标CPU辅助调试单元会将现场寄存器通过JTAG接口返回到JTAG接口驱动单元5 JTAG接口驱动单元在TAP转换完成之后,将目标CPU返回的值保存在寄存器中完成当前微操作;2)在执行备份CPU通用寄存器RO微操作中,微操作控制状态机4需要两次启动 TAP状态机首先,微操作控制状态机请求写CPU辅助调试单元现场寄存器,设置TAP状态机的4个参数并启动TAP状态机,此时参数中的DR_data为CPU的一条指令“mov r0, r0” 的指令码,CPU执行这条指令并将需要回写的值(R0寄存器的值)写入到CPU辅助调试单元现场寄存器;然后微操作控制状态机4第二次启动TAP状态机进行转换,读出CPU辅助调试单元现场寄存器,并将目标CPU返回的值保存在寄存器中完成当前微操作;
3)执行备份CPU通用寄存器Rl微操作与备份CPU通用寄存器RO微操作类似;4)在执行更新CPU通用寄存器RO微操作中,微操作控制状态机需要读出调试命令接收单元2发来的数据首先,微结构4接收调试命令接收单元2发来的4个字节,组成一个32位的数据OxSOOOFCAO作为写存储器的地址,然后启动TAP状态机,将上述地址信息和一条指令“mov r0, r0”的指令码组合写入CPU辅助调试单元现场寄存器,TAP状态机转换完成后,CPU执行这条指令并将尚儒地址信息写入到CPU寄存器RO中,完成更新CPU通用寄存器RO的微操作;5)按照上述相同的步骤,再以调试命令接收单元发来的32位数据0x4433AA55更新CPU通用寄存器Rl ;6)在执行更新CPU辅助调试单元现场寄存器微操作中,微操作控制状态机4产生 TAP状态机的4个参数并启动TAP状态机,其中DR_data为CPU的一条指令“st r0, rl”的指令码,TAP状态机转换完成后,CPU执行这条指令并将寄存器Rl中存储的数据写入寄存器 RO所指向的存储器地址中,完成写存储器的操作;7)执行恢复CPU通用寄存器Rl微操作和更新CPU通用寄存器Rl微操作类似,只是微操作控制状态机传给TAP状态机的参数DR_data为在第三步备份CPU通用寄存器Rl 微操作中保存的结果;8)恢复CPU通用寄存器RO微操作与恢复CPU通用寄存器RO微操作类似;9)在执行恢复CPU辅助调试单元现场寄存器微操作中,微操作控制状态机4启动 TAP状态机,请求写CPU辅助调试单元现场假寄存器操作转换,其中,TAP状态机的参数DR_ data为在第一步备份CPU辅助调试单元现场寄存器微操作中保存的结果。在命令解析与执行单元3接收到最后一次微操作完成信号时,表示当前调试命令已经完成,而此时调试命令接收单元2继续读出最后的一个字节0x16,调试命令接收单元2 将此字节认为是调试命令结束标识,之后调试命令接收单元2重新回到空闲状态准备接收新的命令。
权利要求
1.一种支持多种底层接口的在线仿真器装置,其特征在于所述在线仿真器装置包括调试命令接收单元,用以接收来自PC机调试软件的命令数据,并对命令的格式进行正确性检查,对于格式正确的命令,调试命令接收单元会向命令解析与执行单元发出操作请求,对于格式错误的命令不作处理;命令解析与执行单元,用以对来自调试命令接收单元的操作请求进行解析,并根据解析得到的命令类型将操作分解成微操作,以微操作的形式向所述JTAG接口驱动单元发出接口转换请求;JTAG接口驱动单元,用以接收命令解释与执行单元的微操作转换请求,向目标CPU发送JTAG接口驱动信号,或从目标CPU读取数据;JTAG驱动单元在每个微操作驱动完成之后向所述命令解析与执行单元发出JTAG接口驱动完成信号;数据封装单元,用以在读调试命令下,接收JTAG接口驱动单元返回的数据并将数据按照设定格式封装后按字节发回给PC机调试软件。
2.如权利要求1所述的支持多种底层接口的在线仿真器装置,其特征在于所述命令解析与执行单元中,解析执行的命令包括目标CPU通用寄存器读写命令、目标CPU控制寄存器读写命令、目标CPU中辅助调试单元寄存器读写命令以及与目标CPU相连的存储器读写命令。
3.如权利要求1或2所述的支持多种底层接口的在线仿真器装置,其特征在于所述命令解析与执行单元中,微操作包括备份CPU通用寄存器,恢复CPU通用寄存器,更新CPU 通用寄存器,读取CPU通用寄存器,备份CPU辅助调试单元现场寄存器,恢复CPU辅助调试单元现场寄存器和更新CPU辅助调试单元现场寄存器。
4.如权利要求1或2所述的支持多种底层接口的在线仿真器装置,其特征在于所述命令解析与执行单元将PC机的调试命令解析为多个微操作,并控制JTAG接口驱动单元按序完成各个微操作步骤。
5.如权利要求1或2所述的支持多种底层接口的在线仿真器装置,其特征在于所述命令解析与执行单元对相同的调试命令解析为相同的微操作组合,而与连接目标CPU的底层接口无关。
6.如权利要求1所述的支持多种底层接口的在线仿真器装置,其特征在于所述JTAG 接口驱动单元包含微操作控制状态机和一个公用的TAP状态机,每个微操作控制状态机与 TAP控制器对应一种底层接口。
7.如权利要求6所述的支持多种底层接口的在线仿真器装置,其特征在于所述JTAG 接口驱动单元中,微操作控制状态机首先解析微操作及其对应的参数,然后将解析得到的一些参数输入到TAP状态机,微操作控制状态机启动TAP状态机,并等待TAP状态机运行结束ο
8.如权利要求6所述的支持多种底层接口的在线仿真器装置,其特征在于所述JTAG 接口驱动单元中,通过设置装置中的寄存器选择使用其中一个微操作控制状态机,由此实现对多种底层接口的支持。
全文摘要
一种支持多种底层接口的在线仿真器装置,包括调试命令接收单元,用以接收和检查来自PC机的调试命令;命令解析与执行单元,用以解析命令,并将命令分解成多个微操作;JTAG接口与驱动单元,用以解析与执行微操作,将微操作转换成JTAG接口信号驱动目标CPU,或从目标CPU读取数据;数据封装单元,用以对于不同的目标CPU底层接口,命令解析与执行单元对相同的命令有相同的分解,而JTAG接口驱动单元中有多个微操作控制状态机分别对应于不同的底层接口,通过设置,使用其中一个与底层接口对应的微操作控制状态机。本发明同时支持多种与CPU通信的底层接口、有效降低生产成本、减少程序开发的难度。
文档编号G06F11/36GK102508777SQ201110345228
公开日2012年6月20日 申请日期2011年11月4日 优先权日2011年11月4日
发明者严晓浪, 葛海通, 黄欢欢 申请人:杭州中天微系统有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1