链路控制方法、装置、系统、设备及可读存储介质转让专利

申请号 : CN202210137399.2

文献号 : CN114398216B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 刘吉平李大林王翔

申请人 : 深圳市航顺芯片技术研发有限公司

摘要 :

本申请提出了一种链路控制方法、装置、系统、设备及可读存储介质,该方法包括:将初始化调试配置信息加载至调试控制寄存器,进入对应调试模式控制的初始化状态;在系统复位后,将调试控制寄存器更新的当前调试模式信息加载至对应的影子寄存器;通过影子寄存器将当前调试模式信息发送至调试控制装置;通过调试控制装置根据当前调试模式信息控制多个处理器的调试链路的连接。本申请能够对多核MCU芯片的调试链路灵活设置成各种需要的连接方式,实现单独对其中一核或者多核进行调试,不影响其它未参与调试的核的正常工作;并且可以同时进行分组调试,按照调试组内参与的调试处理器的优先级对JTAG菊花链进行上下级调节,实现调试接口的灵活配置。

权利要求 :

1.一种链路控制方法,其特征在于,包括如下步骤:

将初始化调试配置信息加载至调试控制寄存器,进入对应调试模式控制的初始化状态;

在系统复位后,将所述调试控制寄存器更新的当前调试模式信息加载至对应的影子寄存器;

通过所述影子寄存器将当前调试模式信息发送至调试控制装置;

通过所述调试控制装置根据所述当前调试模式信息控制多个处理器的调试链路的连接,包括:根据所述当前调试模式信息及各个处理器的调试使能位分别判断各个处理器是否参与调试链路的连接;根据参与调试链路的连接的处理器所选择的JTAG调试接口对处理器进行分组;按照处理器的调试优先级及处理器的名称对各个分组内的处理器进行调试链路排序;将每个分组内的处理器分别与排序后对应的调试链路进行连接。

2.根据权利要求1所述的链路控制方法,其特征在于,所述将初始化调试配置信息加载至调试控制寄存器,进入对应调试模式控制的初始化状态,包括:在系统上电成功后的一个时钟周期内将所述初始化调试配置信息加载至调试控制寄存器对应的比特位;

根据所述初始化调试配置信息确定对应调试模式,进入所述对应调试模式控制的初始化状态。

3.根据权利要求1所述的链路控制方法,其特征在于,在所述将每个分组内的处理器分别与排序后对应的调试链路进行连接之后,所述方法还包括:当检测到任一调试链路连接失败时,通过修改初始化调试配置信息对调试链路进行修正。

4.根据权利要求1所述的链路控制方法,其特征在于,在所述将初始化调试配置信息加载至调试控制寄存器之前,所述方法还包括:根据设计需求确定默认调试模式,并生成所述默认调试模式对应的初始化调试配置信息;

将所述初始化调试配置信息存储至闪存选项字节区域。

5.根据权利要求1所述的链路控制方法,其特征在于,在所述将初始化调试配置信息加载至调试控制寄存器之后,所述方法还包括:当检测所述初始化调试配置信息不满足当前开发需求时,通过所述调试控制寄存器的密钥区对当前输入密钥进行验证;

在验证所述当前输入密钥与所述调试控制寄存器的密钥区存储的安全密钥一致后,将接收到的修改调试配置信息替代所述初始化调试配置信息,并存储至闪存选项字节区域。

6.一种链路控制装置,其特征在于,包括:

初始化模块,用于将初始化调试配置信息加载至调试控制寄存器,进入对应调试模式控制的初始化状态;

同步模块,用于在系统复位后,将所述调试控制寄存器更新的当前调试模式信息加载至对应的影子寄存器;

发送模块,用于通过所述影子寄存器将当前调试模式信息发送至调试控制装置;

控制模块,用于通过所述调试控制装置根据所述当前调试模式信息控制多个处理器的调试链路的连接;

其中,所述控制模块包括:

判断单元,用于根据所述当前调试模式信息及各个处理器的调试使能位分别判断各个处理器是否参与调试链路的连接;

分组单元,用于根据参与调试链路的连接的处理器所选择的JTAG调试接口对处理器进行分组;

排序单元,用于按照处理器的调试优先级及处理器的名称对各个分组内的处理器进行调试链路排序;

连接单元,用于将每个分组内的处理器分别与排序后对应的调试链路进行连接。

7.一种链路控制系统,其特征在于,包括调试控制寄存器和调试控制装置,所述调试控制寄存器包括影子寄存器,所述调试控制寄存器根据获取的初始化调试配置信息进入对应调试模式控制的初始化状态,并在系统复位后,将当前调试模式信息加载至对应的影子寄存器,通过影子寄存器将当前调试模式信息发送至调试控制装置;所述调试控制装置根据接收的所述当前调试模式信息控制多个处理器的调试链路的连接,包括:根据所述当前调试模式信息及各个处理器的调试使能位分别判断各个处理器是否参与调试链路的连接;根据参与调试链路的连接的处理器所选择的JTAG调试接口对处理器进行分组;按照处理器的调试优先级及处理器的名称对各个分组内的处理器进行调试链路排序;将每个分组内的处理器分别与排序后对应的调试链路进行连接。

8.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至5中任一项所述的链路控制方法的步骤。

9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至5中任一项所述的链路控制方法的步骤。

说明书 :

链路控制方法、装置、系统、设备及可读存储介质

技术领域

[0001] 本申请涉及芯片设计技术领域,具体涉及一种链路控制方法、装置、系统、设备及可读存储介质。

背景技术

[0002] 随着科技不断的发展和提高,微控制芯片(Micro Control Unit,MCU)的应用场景也是越来越丰富,因此相应地对于MCU芯片的要求也越来越高,高吞吐量、高能效、小外形以及低成本均成为了MCU芯片的性能指标,双核或多核MCU则是通过使用多个模块化的CPU来提升MCU的性能。目前主流的MCU芯片的CPU核都支持JTAG在线仿真调试,程序员通过源码级调试和单步调试可以方便的分离出软件bug,极大地缩短了软件开发的周期。
[0003] 对于目前市面上的双核或多核MCU芯片而言,每个CPU核都需要单独的调试口或者通过JTAG菊花链拓扑链接多个CPU核的调试口,但是这些固定调试口连接方式不利于双核或多核芯片的调试,如果出现调试链路连接失败或者需要port资源的重定义,将会对MCU芯片编程和调试带来巨大困难。因此,如何灵活的更改双核或多核的调试链路方式尤为关键。
[0004] 在构思及实现本申请过程中,本申请的发明人发现至少存在如下问题:目前已有的多核MCU芯片通常只为芯片提供单一的JTAG接口,虽然IC设计厂商为多核MCU预留了固定的调试链路,多核MCU内部各CPU核主要通过菊花链拓扑链接进行连接,但是这样的固定连接不利于多核芯片的调试,如果出现调试链路连接失败或者需要port资源的重定义,会导致编程调试极其的困难,提高了开发难度,导致开发周期延长。
[0005] 前面的叙述在于提供一般的背景信息,并不一定构成现有技术。

发明内容

[0006] 针对上述技术问题,本申请提供一种链路控制方法、装置、系统、设备及可读存储介质,通过在MCU内部增加一组具有预装载功能的调试控制寄存器对多核MCU芯片的调试链路进行灵活设置,提高多核MCU调试功能的灵活性。
[0007] 为解决上述技术问题,本申请提供一种链路控制方法,包括如下步骤:
[0008] 将初始化调试配置信息加载至调试控制寄存器,进入对应调试模式控制的初始化状态;
[0009] 在系统复位后,将所述调试控制寄存器更新的当前调试模式信息加载至对应的影子寄存器;
[0010] 通过所述影子寄存器将当前调试模式信息发送至调试控制装置;
[0011] 通过所述调试控制装置根据所述当前调试模式信息控制多个处理器的调试链路的连接。
[0012] 可选地,所述将初始化调试配置信息加载至调试控制寄存器,进入对应调试模式控制的初始化状态,包括:
[0013] 在系统上电成功后的一个时钟周期内将所述初始化调试配置信息加载至调试控制寄存器对应的比特位;
[0014] 根据所述初始化调试配置信息确定对应调试模式,进入所述对应调试模式控制的初始化状态。
[0015] 可选地,所述通过所述调试控制装置根据所述当前调试模式信息控制多个处理器的调试链路的连接,包括:
[0016] 根据所述当前调试模式信息及各个处理器的调试使能位分别判断各个处理器是否参与调试链路的连接;
[0017] 根据参与调试链路的连接的处理器所选择的JTAG调试接口对处理器进行分组;
[0018] 按照处理器的调试优先级及处理器的名称对各个分组内的处理器进行调试链路排序;
[0019] 将每个分组内的处理器分别与排序后对应的调试链路进行连接。
[0020] 可选地,在所述将每个分组内的处理器分别与排序后对应的调试链路进行连接之后,所述方法还包括:
[0021] 当检测到任一调试链路连接失败时,通过修改初始化调试配置信息对调试链路进行修正。
[0022] 可选地,在所述将初始化调试配置信息加载至调试控制寄存器之前,所述方法还包括:
[0023] 根据设计需求确定默认调试模式,并生成所述默认调试模式对应的初始化调试配置信息;
[0024] 将所述初始化调试配置信息存储至闪存选项字节区域。
[0025] 可选地,在所述将初始化调试配置信息加载至调试控制寄存器之后,所述方法还包括:
[0026] 当检测所述初始化调试配置信息不满足当前开发需求时,通过所述调试控制寄存器的密钥区对当前输入密钥进行验证;
[0027] 在验证所述当前输入密钥与所述调试控制寄存器的密钥区存储的安全密钥一致后,将接收到的修改调试配置信息替代所述初始化调试配置信息,并存储至闪存选项字节区域。
[0028] 相应地,本申请还提供了一种链路控制装置,包括:
[0029] 初始化模块,用于将初始化调试配置信息加载至调试控制寄存器,进入对应调试模式控制的初始化状态;
[0030] 同步模块,用于在系统复位后,将所述调试控制寄存器更新的当前调试模式信息加载至对应的影子寄存器;
[0031] 发送模块,用于通过所述影子寄存器将当前调试模式信息发送至调试控制装置;
[0032] 控制模块,用于通过所述调试控制装置根据所述当前调试模式信息控制多个处理器的调试链路的连接。
[0033] 本申请还提供了一种链路控制系统,包括调试控制寄存器和调试控制装置,所述调试控制寄存器包括影子寄存器,所述调试控制寄存器根据获取的初始化调试配置信息进入对应调试模式控制的初始化状态,并在系统复位后,将当前调试模式信息加载至对应的影子寄存器,通过影子寄存器将当前调试模式信息发送至调试控制装置;所述调试控制装置根据接收的所述当前调试模式信息控制多个处理器的调试链路的连接。
[0034] 本申请还提出了一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述任一项所述的链路控制方法的步骤。
[0035] 本申请还提出了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任一项所述的链路控制方法的步骤。
[0036] 实施本发明实施例,具有如下有益效果:
[0037] 如上所述,本申请提供的一种链路控制方法、装置、系统、设备及可读存储介质,所述方法包括:将初始化调试配置信息加载至调试控制寄存器,进入对应调试模式控制的初始化状态;在系统复位后,将所述调试控制寄存器更新的当前调试模式信息加载至对应的影子寄存器;通过所述影子寄存器将当前调试模式信息发送至调试控制装置;通过所述调试控制装置根据所述当前调试模式信息控制多个处理器的调试链路的连接。本申请的链路控制方法,首先通过修改闪存选项字节设置调试默认配置信息,通过在MCU内部增加一组具有预装载调试配置信息功能的调试控制寄存器对多核MCU芯片的调试链路进行灵活设置,实现单独对其中一核或者多核进行调试同时,不影响其它未参与调试的核的正常工作,提高多核MCU调试功能的灵活性;并且可以对多核芯片同时进行分组调试,按照调试组内参与调试处理器的优先级对JTAG菊花链进行上下级调节,实现调试接口的灵活配置;另外,通过安全密钥匹配后重新设置调试配置信息,在系统复位后触发调试模式的更改,提高多核MCU芯片的调试链路的安全性。

附图说明

[0038] 此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。为了更清楚地说明本申请实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0039] 图1是本申请实施例提供的链路控制方法的第一种实施方式的流程示意图;
[0040] 图2是本申请实施例提供的调试链路连接的流程示意图;
[0041] 图3是本申请实施例提供的更改调试链路的示意图;
[0042] 图4是本申请实施例提供的修改调试模式的流程示意图;
[0043] 图5是本申请实施例提供的链路控制方法的第二种实施方式的流程示意图;
[0044] 图6是本申请实施例提供的链路控制装置的结构示意图;
[0045] 图7是本申请实施例提供的链路控制系统的结构示意图;
[0046] 图8是本申请实施例提供的安全加载装置内部的结构示意图;
[0047] 图9是本申请实施例提供的调试控制装置的工作流程示意图;
[0048] 图10是本申请实施例提供的计算机设备的结构示意图。
[0049] 本申请目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。通过上述附图,已示出本申请明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本申请构思的范围,而是通过参考特定实施例为本领域技术人员说明本申请的概念。

具体实施方式

[0050] 这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
[0051] 需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素,此外,本申请不同实施例中具有同样命名的部件、特征、要素可能具有相同含义,也可能具有不同含义,其具体含义需以其在该具体实施例中的解释或者进一步结合该具体实施例中上下文进行确定。
[0052] 应当理解,尽管在本文可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本文范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。再者,如同在本文中所使用的,单数形式“一”、“一个”和“该”旨在也包括复数形式,除非上下文中有相反的指示。应当进一步理解,术语“包含”、“包括”表明存在所述的特征、步骤、操作、元件、组件、项目、种类、和/或组,但不排除一个或多个其他特征、步骤、操作、元件、组件、项目、种类、和/或组的存在、出现或添加。本申请使用的术语“或”、“和/或”、“包括以下至少一个”等可被解释为包括性的,或意味着任一个或任何组合。例如,“包括以下至少一个:A、B、C”意味着“以下任一个:A;B;C;A和B;A和C;B和C;A和B和C”,再如,“A、B或C”或者“A、B和/或C”意味着“以下任一个:A;B;C;A和B;A和C;B和C;A和B和C”。仅当元件、功能、步骤或操作的组合在某些方式下内在地互相排斥时,才会出现该定义的例外。
[0053] 应该理解的是,虽然本申请实施例中的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,其可以以其他的顺序执行。而且,图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,其执行顺序也不必然是依次进行,而是可以与其他步骤或者其他步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
[0054] 取决于语境,如在此所使用的词语“如果”、“若”可以被解释成为“在……时”或“当……时”或“响应于确定”或“响应于检测”。类似地,取决于语境,短语“如果确定”或“如果检测(陈述的条件或事件)”可以被解释成为“当确定时”或“响应于确定”或“当检测(陈述的条件或事件)时”或“响应于检测(陈述的条件或事件)”。
[0055] 需要说明的是,在本文中,采用了诸如S10、S20等步骤代号,其目的是为了更清楚简要地表述相应内容,不构成顺序上的实质性限制,本领域技术人员在具体实施时,可能会先执行S20后执行S10等,但这些均应在本申请的保护范围之内。
[0056] 应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
[0057] 在后续的描述中,使用用于表示元件的诸如“模块”、“部件”或者“单元”的后缀仅为了有利于本申请的说明,其本身没有特定的意义。因此,“模块”、“部件”或者“单元”可以混合地使用。
[0058] 为了更好理解本申请,以下为相关专业术语及其注释。
[0059] MCU:Micro Control Unit,微控制器芯片,又称单片机;
[0060] JTAG:一种国际标准测试协议,主要用于芯片内部测试;
[0061] 菊花链:Daisy chain,一种沿总线传输信号的方法,其中设备串联,而信号则从一台设备传向下一台设备;
[0062] port资源:MCU的引脚端口资源;
[0063] 影子寄存器:寄存器和它的影子寄存器具有相同的访问地址,但在不同情况下指向访问的物理空间不一样;
[0064] Option Word:闪存选项字节,存放在flash特殊位置段的字节。
[0065] 首先介绍本申请可以提供的应用场景,如提供一种链路控制方法、装置、系统、设备及可读存储介质,能够通过在MCU内部增加一组具有预装载功能的调试控制寄存器对多核MCU芯片的调试链路进行灵活设置。
[0066] 请参阅图1,图1是本申请实施例提供的链路控制方法的第一种实施方式的流程示意图。该链路控制方法具体可以包括:
[0067] S1、将初始化调试配置信息加载至调试控制寄存器,进入对应调试模式控制的初始化状态。
[0068] 可选地,在一些实施例中,所述S1步骤,具体可以包括:
[0069] 在系统上电成功后的一个时钟周期内将所述初始化调试配置信息加载至调试控制寄存器对应的比特位;
[0070] 根据所述初始化调试配置信息确定对应调试模式,进入所述对应调试模式控制的初始化状态。
[0071] 在具体的实施例中,对于S1步骤,在Option Word区域设计存储了多核芯片的初始化调试配置信息,Option Word存储的调试信息将在上电成功后的一个时钟周期内加载到调试控制寄存器对应的bit位,通过加载option word初始值到调试控制寄存器,产生调试模式控制的初始化状态,或者在通过修改调试信息产生不同的调试模式。
[0072] S2、在系统复位后,将所述调试控制寄存器更新的当前调试模式信息加载至对应的影子寄存器。
[0073] 在具体的实施例中,对于S2步骤,MCU内部增加设计了一组具有预装载功能的调试控制寄存器,在MCU系统复位后,调试控制寄存器会根据当前调试模式信息获取存储的调试模式配置信息,并在系统复位时加载至其对应的影子寄存器上,寄存器和它的影子寄存器具有相同的访问地址,但在不同情况下指向访问的物理空间不一样,这样可以保证正在调试的过程中不会因修改调试模式而产生错误。
[0074] S3、通过所述影子寄存器将当前调试模式信息发送至调试控制装置。
[0075] 在具体的实施例中,对于S3步骤,影子寄存器将从调试控制寄存器获取的当前调试模式信息发送至对应的调试控制装置。
[0076] S4、通过所述调试控制装置根据所述当前调试模式信息控制多个处理器的调试链路的连接。
[0077] 可选地,如图2所示,在一些实施例中,所述S4步骤,具体可以包括:
[0078] S41、根据所述当前调试模式信息及各个处理器的调试使能位分别判断各个处理器是否参与调试链路的连接;
[0079] S42、根据参与调试链路的连接的处理器所选择的JTAG调试接口对处理器进行分组;
[0080] S43、按照处理器的调试优先级及处理器的名称对各个分组内的处理器进行调试链路排序;
[0081] S44、将每个分组内的处理器分别与排序后对应的调试链路进行连接。
[0082] 在具体的实施例中,对于S4步骤,调试控制装置根据从影子寄存器获取多核的调试模式信息,调试控制装置中的分组装置根据控制寄存器的DBG_ENx值选择各个处理器是否参与调试排序,参与调试排序的处理器根据其调试接口选择参与排序装置;排序装置综合处理器的调试优先级及处理器的名称对本序列中的处理器进行优先级排序,从而对处理器进行调试链路排序,并按照排序对分组的处理器进行debug接口的对接,并提供TMS和TCK。
[0083] 其中,排序装置按照DBG_PRIO_COREx[n:0]优先级划分对本序列中的Core进行优先级排序,DBG_PRIO_COREx[n:0]的值越小表示的优先级越高,反之优先级就越低,优先级最高的CPU核处于JTAG菊花链的第一级,优先级最低的CPU核处于JTAG菊花链的最后一级;排序装置对相同优先级的Core按照CoreID进行从小到大的方式排序(CoreID可认为是多核内部对CPU核划分的标识),默认状态即是按照CoreID排序,CoreID较小Core的处于JTAG菊花链的上一级,CoreID较大Core的处于JTAG菊花链的下一级。
[0084] 可选地,在一些实施例中,在所述S44步骤之后,所述方法具体还可以包括:
[0085] 当检测到任一调试链路连接失败时,通过修改初始化调试配置信息对调试链路进行修正。
[0086] 在具体的实施例中,如果当多核芯片出现调试链路连接失败时,可以通过option默认配置选择更改菊花链上下级的排列方式。如图3所示,例如当一个双核MCU调试链路Core0的TDO输出到Core1的TDI出现了故障(如图3a所示),JTAG调试链路就会出现无法成功连接。可以通过编程Core0和Core1的优先级改变JTAG菊花链上下级关系,把Core1的TDO输出到Core0的TDI(如图3b所示);或者通过改变双核的JTAG调试口分组实现单独调试;或者禁止掉其中一个核的调试,都可避免当前的调试链路故障。
[0087] 可选地,在一些实施例中,在所述S1步骤之前,所述方法具体还可以包括:
[0088] 根据设计需求确定默认调试模式,并生成所述默认调试模式对应的初始化调试配置信息;
[0089] 将所述初始化调试配置信息存储至闪存选项字节区域。
[0090] 在具体的实施例中,在将初始化调试配置信息加载至调试控制寄存器之前,开发人员可以根据需求设计通过修改Option Word区域的初始化调试配置信息多核MCU的默认调试模式。
[0091] 可选地,在一些实施例中,在所述S1步骤之后,所述方法还包括:
[0092] 当检测所述初始化调试配置信息不满足当前开发需求时,通过所述调试控制寄存器的密钥区对当前输入密钥进行验证;
[0093] 在验证所述当前输入密钥与所述调试控制寄存器的密钥区存储的安全密钥一致后,将接收到的修改调试配置信息替代所述初始化调试配置信息,并存储至闪存选项字节区域。
[0094] 在具体的实施例中,当现有调试模式不满足开发需求时,保持MCU上电状态,根据调试模式配置信息更改调试控制寄存器的值,新设置的调试模式将在系统复位时加载到调试控制装置。如图4所示,为了防止在调试运行过程中,调试方式被程序意外修改,在Option word区域中密码存放着开发人员更改调试模式时所需的密码,当输入密钥与option word区密码一致时,修改调试控制寄存器才生效,否则调试控制寄存器维持原有数据。
[0095] 可选地,在一些实施例中,本申请还提供了对Port资源的合理应用方法,例如当一个四核双调试接口的MCU进行调试时,多核双调试接口MCU的寄存器描述如下表:
[0096]
[0097] 如果需要对其中的几个核进行调试,可以将需要进行单独调试的核通过设置DBG_SEL_COREx分离到JTAG1组,分离到JTAG1调试组的各成员核按照优先级DBG_PRIO_COREx[2:0]排序连接JTAG1调试口,实现关联功能核的联调。当芯片由于不同封装导致Port资源紧张时,可以设置JTAGx_EN关闭其中一个JTAG调试口的调试功能,仅将其作为GPIO使用,同时配置另一个调试口参与调试的成员核,完成与调试主机的连接。
[0098] 如图5所示,本实施例还提供了链路控制方法的第二种实施方式的流程示意图,该链路控制方法包括:
[0099] 步骤101、MCU上电,产生上电复位POR。
[0100] 步骤102、通过POR产生系统复位,或者软件复位、NRST引脚触发系统复位。
[0101] 步骤103、通过加载option word初始值到调试控制寄存器,产生调试模式控制的初始化状态,或者在通过修改调试信息产生不同的调试模式。
[0102] 步骤104、通过系统复位,将调试寄存器的信息加载到调试控制影子寄存器中,这样可以保证正在调试的过程中不会因修改调试模式而产生错误。
[0103] 步骤105、根据调试信息,根据对应Core的调试使能位判断是否参与调试链路的连接,然后根据所选择的JTAG调试口进行分组。
[0104] 步骤106、按照Core对应的调试优先级以及CoreID进行排序,优先级越高的Core排在JATG菊花链的上一级,优先级低的Core排在JTAG菊花链的下一级,排序装置会按照排序对接分组里的Core的debug接口,并为分组0里的Core提供TMS和TCK。
[0105] 步骤107、JTAG0调试接口,是默认的调试接口,当JTAG0_EN不使能时,可以当成GPIO使用。
[0106] 步骤108、调试主机,可以对MCU进行编程。
[0107] 步骤109、与排序装置0一样,按照Core对应的调试优先级以及CoreID进行排序。
[0108] 步骤110、JTAG1调试接口,可以与其他JTAG同时进行调试。
[0109] 步骤111、在option word存放了调试模式默认信息,在上电复位POR时加载到调试控制器。
[0110] 步骤112、开发人员修改当前调试模式的输入。
[0111] 步骤113、在option word存放了修改调试模式寄存器的密码,开发人员可以修改密码,但是除存放0xFFFF FFFF以外读option word的值均为0xAAAA AAAA。
[0112] 步骤114、在调试控制寄存器KEY区输入密钥。
[0113] 步骤115、如果输入密钥与option word存放密码一致,则可以成功修改当前调试模式,通过系统复位加载生效。
[0114] 步骤116、根据设计需求,增设的排序装置与排序装置0一样,按照Core对应的调试优先级以及CoreID进行排序。
[0115] 步骤117、根据设计需求,增设JTAGn调试接口,可以与其他JTAG同时进行调试。
[0116] 综上所述,本实施例提供的一种链路控制的具体实施方式,为了使多核MCU调试功能变得灵活,在option words中存放多核调试默认配置信息,也可以通过安全密钥匹配后,通过安全加载装置修改option word重新设置调试默认配置信息,通过系统复位触发调试模式更改;根据需求设置调试核的JTAG分组,调试控制装置对芯片内部的CPU核分组排序并提供灵活的接口,调试分组内成员按照设置的优先级进行排序连接到JTAG调试口,实现灵活的多核调试链路。
[0117] 由上可知,本申请实施例提供的链路控制方法,包括:将初始化调试配置信息加载至调试控制寄存器,进入对应调试模式控制的初始化状态;在系统复位后,将所述调试控制寄存器更新的当前调试模式信息加载至对应的影子寄存器;然后通过所述影子寄存器将当前调试模式信息发送至调试控制装置;最后通过所述调试控制装置根据所述当前调试模式信息控制多个处理器的调试链路的连接。可见,本申请实施例的链路控制方法,首先通过修改闪存选项字节设置调试默认配置信息,通过在MCU内部增加一组具有预装载调试配置信息功能的调试控制寄存器对多核MCU芯片的调试链路进行灵活设置,实现单独对其中一核或者多核进行调试同时,不影响其它未参与调试的核的正常工作,提高多核MCU调试功能的灵活性;并且可以对多核芯片同时进行分组调试,按照调试组内参与调试处理器的优先级对JTAG菊花链进行上下级调节,实现调试接口的灵活配置;另外,通过安全密钥匹配后重新设置调试配置信息,在系统复位后触发调试模式的更改,提高多核MCU芯片的调试链路的安全性;以及分配所有调试核到同一个JTAG调试口,通过禁用另一未被使用JTAG调试口调试功能,达到节省PORT资源的目的。
[0118] 相应的,本申请还提供一种链路控制装置,请参阅图6,图6是本申请提供的链路控制装置的结构示意图,具体可以包括初始化模块100、同步模块200、发送模块300和控制模块400。
[0119] 其中,初始化模块100,用于将初始化调试配置信息加载至调试控制寄存器,进入对应调试模式控制的初始化状态。
[0120] 可选地,在一些实施例中,所述初始化模块100,具体可以包括:
[0121] 上电加载单元,用于在系统上电成功后的一个时钟周期内将所述初始化调试配置信息加载至调试控制寄存器对应的比特位;
[0122] 初始化状态单元,用于根据所述初始化调试配置信息确定对应调试模式,进入所述对应调试模式控制的初始化状态。
[0123] 同步模块200,用于在系统复位后,将所述调试控制寄存器更新的当前调试模式信息加载至对应的影子寄存器。
[0124] 发送模块300,用于通过所述影子寄存器将当前调试模式信息发送至调试控制装置。
[0125] 控制模块400,用于通过所述调试控制装置根据所述当前调试模式信息控制多个处理器的调试链路的连接。
[0126] 可选地,在一些实施例中,所述控制模块400,具体可以包括:
[0127] 判断单元,用于根据所述当前调试模式信息及各个处理器的调试使能位分别判断各个处理器是否参与调试链路的连接;
[0128] 分组单元,用于根据参与调试链路的连接的处理器所选择的JTAG调试接口对处理器进行分组;
[0129] 排序单元,用于按照处理器的调试优先级及处理器的名称对各个分组内的处理器进行调试链路排序;
[0130] 连接单元,用于将每个分组内的处理器分别与排序后对应的调试链路进行连接;
[0131] 修正单元,用于当检测到任一调试链路连接失败时,通过修改初始化调试配置信息对调试链路进行修正。
[0132] 可选地,在一些实施例中,本实施例的链路控制装置具体还可以包括:
[0133] 安全加载模块,用于当检测所述初始化调试配置信息不满足当前开发需求时,通过所述调试控制寄存器的密钥区对当前输入密钥进行验证;在验证所述当前输入密钥与所述调试控制寄存器的密钥区存储的安全密钥一致后,将接收到的修改调试配置信息替代所述初始化调试配置信息,并存储至闪存选项字节区域。
[0134] 综上所述,本申请实施例提供的链路控制装置,初始化模块100将初始化调试配置信息加载至调试控制寄存器,进入对应调试模式控制的初始化状态;同步模块200在系统复位后,将所述调试控制寄存器更新的当前调试模式信息加载至对应的影子寄存器;发送模块300通过所述影子寄存器将当前调试模式信息发送至调试控制装置;控制模块400通过所述调试控制装置根据所述当前调试模式信息控制多个处理器的调试链路的连接。可见,本申请实施例的链路控制装置,首先通过修改闪存选项字节设置调试默认配置信息,通过在MCU内部增加一组具有预装载调试配置信息功能的调试控制寄存器对多核MCU芯片的调试链路进行灵活设置,实现单独对其中一核或者多核进行调试同时,不影响其它未参与调试的核的正常工作,提高多核MCU调试功能的灵活性;并且可以对多核芯片同时进行分组调试,按照调试组内参与调试处理器的优先级对JTAG菊花链进行上下级调节,实现调试接口的灵活配置;另外,通过安全密钥匹配后重新设置调试配置信息,在系统复位后触发调试模式的更改,提高多核MCU芯片的调试链路的安全性;以及分配所有调试核到同一个JTAG调试口,通过禁用另一未被使用JTAG调试口调试功能,达到节省PORT资源的目的。
[0135] 本申请一实施例还提供了一种链路控制系统,包括调试控制寄存器和调试控制装置,所述调试控制寄存器包括影子寄存器,所述调试控制寄存器根据获取的初始化调试配置信息进入对应调试模式控制的初始化状态,并在系统复位后,将当前调试模式信息加载至对应的影子寄存器,通过影子寄存器将当前调试模式信息发送至调试控制装置;所述调试控制装置根据接收的所述当前调试模式信息控制多个处理器的调试链路的连接。
[0136] 在具体的实施例中,如图7所示,所述链路控制系统包括加载option_word模块、安全加载装置、调试控制寄存器和调试控制装置,所述调试控制寄存器分别与加载option_word模块、安全加载装置和调试控制装置连接,所述调试控制装置连接调试控制寄存器和调试主机,其中所述调试控制寄存器包括影子寄存器。
[0137] 对于安全加载装置,为了防止在调试运行过程中,调试方式被程序意外修改,在Option word区域中密码存放着开发人员更改调试模式时所需的密码,当输入密钥与option word区密码一致时,修改调试控制寄存器才生效,否则调试控制寄存器维持原有数据。如图8所示,当密码比较器判定成功时,写使能信号有效,CLK时钟驱使PWDATA记载到调试控制寄存器,密码比较器判定失败时,D触发器维持上一个CLK的信息。
[0138] 对于调试控制装置,如图9所示,调试控制装置从影子寄存器获取多核的调试模式信息。分组装置会根据控制寄存器的DBG_ENx值选择Corex是否参与调试排序,参与调试排序的Core根据其调试接口选择参与排序装置0或者排序装置1的排序或者排序装置n;排序装置按照DBG_PRIO_COREx[n:0]优先级划分对本序列中的Core进行优先级排序,DBG_PRIO_COREx[n:0]的值越小表示的优先级越高,反之优先级就越低,优先级最高的CPU核处于JTAG菊花链的第一级,优先级最低的CPU核处于JTAG菊花链的最后一级;排序装置对相同优先级的Core按照CoreID进行从小到大的方式排序(CoreID可认为是多核内部对CPU核划分的标识),默认状态即是按照CoreID排序,CoreID较小Core的处于JTAG菊花链的上一级,CoreID较大Core的处于JTAG菊花链的下一级。排序装置会按照排序对接分组里的Core的debug接口,并为本分组里的Core提供TMS和TCK。
[0139] 本实施例提供的一种链路控制系统,能够对多核MCU芯片的调试链路进行灵活设置,从而设置成各种需要的连接方式,可以实现单独地对其中一核或者多核进行调试,其他未参与调试的核可以正常工作;并且可以同时进行分组调试,按照调试组内参与的调试核的优先级对JTAG菊花链进行上下级调节,实现灵活的调试接口;分配所有调试核到同一个JTAG调试口,通过禁用另一未被使用JTAG调试口调试功能,达到节省PORT资源的目的。
[0140] 本申请实施例中还提供一种计算机设备,该计算机设备可以是服务器。请参阅图10,图10是本申请实施例提供的计算机设备的结构示意图。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设计的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于储存链路控制方法等数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种链路控制方法。所述链路控制方法,包括:将初始化调试配置信息加载至调试控制寄存器,进入对应调试模式控制的初始化状态;在系统复位后,将所述调试控制寄存器更新的当前调试模式信息加载至对应的影子寄存器;然后通过所述影子寄存器将当前调试模式信息发送至调试控制装置;最后通过所述调试控制装置根据所述当前调试模式信息控制多个处理器的调试链路的连接。
[0141] 本申请一实施例还提供一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现一种链路控制方法,包括步骤:将初始化调试配置信息加载至调试控制寄存器,进入对应调试模式控制的初始化状态;在系统复位后,将所述调试控制寄存器更新的当前调试模式信息加载至对应的影子寄存器;然后通过所述影子寄存器将当前调试模式信息发送至调试控制装置;最后通过所述调试控制装置根据所述当前调试模式信息控制多个处理器的调试链路的连接。
[0142] 上述执行的链路控制方法,本申请实施例首先通过修改闪存选项字节设置调试默认配置信息,通过在MCU内部增加一组具有预装载调试配置信息功能的调试控制寄存器对多核MCU芯片的调试链路进行灵活设置,实现单独对其中一核或者多核进行调试同时,不影响其它未参与调试的核的正常工作,提高多核MCU调试功能的灵活性;并且可以对多核芯片同时进行分组调试,按照调试组内参与调试处理器的优先级对JTAG菊花链进行上下级调节,实现调试接口的灵活配置;另外,通过安全密钥匹配后重新设置调试配置信息,在系统复位后触发调试模式的更改,提高多核MCU芯片的调试链路的安全性;以及分配所有调试核到同一个JTAG调试口,通过禁用另一未被使用JTAG调试口调试功能,达到节省PORT资源的目的。
[0143] 可以理解,上述场景仅是作为示例,并不构成对于本申请实施例提供的技术方案的应用场景的限定,本申请的技术方案还可应用于其他场景。例如,本领域普通技术人员可知,随着系统架构的演变和新业务场景的出现,本申请实施例提供的技术方案对于类似的技术问题,同样适用。
[0144] 上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
[0145] 本申请实施例方法中的步骤可以根据实际需要进行顺序调整、合并和删减。
[0146] 本申请实施例设备中的单元可以根据实际需要进行合并、划分和删减。
[0147] 在本申请中,对于相同或相似的术语概念、技术方案和/或应用场景描述,一般只在第一次出现时进行详细描述,后面再重复出现时,为了简洁,一般未再重复阐述,在理解本申请技术方案等内容时,对于在后未详细描述的相同或相似的术语概念、技术方案和/或应用场景描述等,可以参考其之前的相关详细描述。
[0148] 在本申请中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
[0149] 本申请技术方案的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本申请记载的范围。
[0150] 通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上的一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,被控终端,或者网络设备等)执行本申请每个实施例的方法。
[0151] 在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行计算机程序指令时,全部或部分地产生按照本申请实施例的流程或功能。计算机可以是通用计算机、专用计算机、计算机网络,或者其他可编程装置。计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。可用介质可以是磁性介质,(例如,软盘、存储盘、磁带)、光介质(例如,DVD),或者半导体介质(例如固态存储盘Solid State Disk(SSD))等。
[0152] 以上仅为本申请的优选实施例,并非因此限制本申请的专利范围,凡是利用本申请说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本申请的专利保护范围内。