CN115344308A - 安全启动装置及方法 - Google Patents

安全启动装置及方法 Download PDF

Info

Publication number
CN115344308A
CN115344308A CN202110730043.5A CN202110730043A CN115344308A CN 115344308 A CN115344308 A CN 115344308A CN 202110730043 A CN202110730043 A CN 202110730043A CN 115344308 A CN115344308 A CN 115344308A
Authority
CN
China
Prior art keywords
pin
circuit
interface
jtag
control circuit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202110730043.5A
Other languages
English (en)
Inventor
叶继龙
乔立忠
苟伟成
唐甜
郭志刚
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to PCT/CN2022/089774 priority Critical patent/WO2022237551A1/zh
Priority to EP22806520.7A priority patent/EP4318284A4/en
Publication of CN115344308A publication Critical patent/CN115344308A/zh
Priority to US18/507,879 priority patent/US20240095366A1/en
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/572Secure firmware programming, e.g. of basic input output system [BIOS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4406Loading of operating system
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01RMEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
    • G01R31/00Arrangements for testing electric properties; Arrangements for locating electric faults; Arrangements for electrical testing characterised by what is being tested not provided for elsewhere
    • G01R31/28Testing of electronic circuits, e.g. by signal tracer
    • G01R31/317Testing of digital circuits
    • G01R31/3181Functional testing
    • G01R31/3185Reconfiguring for testing, e.g. LSSD, partitioning
    • G01R31/318533Reconfiguring for testing, e.g. LSSD, partitioning using scanning techniques, e.g. LSSD, Boundary Scan, JTAG
    • G01R31/318597JTAG or boundary scan test of memory devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/575Secure boot
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/034Test or assess a computer or a system

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)
  • Tests Of Electronic Circuits (AREA)

Abstract

本申请提供了一种安全启动装置及方法,属于电子技术领域。该安全启动装置中的控制电路能够通过不可编程电路获取非易失性存储器中的启动代码,并采用信任根校验该启动代码。由此,即使处理器中未内置信任根,也能通过控制电路实现对启动代码的校验,从而有效降低了安全启动过程对处理器性能的依赖。并且,由于该不可编程电路能通过两种不同类型的接口分别与控制电路和非易失性存储器连接,因此有效降低了安全启动过程对控制电路的接口协议类型的要求,提高了安全启动方案的应用灵活性。又由于该不可编程电路不能够被编程,因此能确保通过该不可编程电路获取到的启动代码的可靠性。

Description

安全启动装置及方法
本申请要求于2021年5月12日提交的申请号为202110519403.7、发明名称为“一种系统启动的方法及装置”的中国专利申请的优先权,其全部内容通过引用结合在本申请中。
技术领域
本申请涉及电子技术领域,特别涉及一种安全启动装置及方法。
背景技术
为了实现电子设备的安全启动(secure boot),电子设备的处理器中一般内置有信任根(root of trust,ROT)。处理器上电后,可以采用该信任根对电子设备的闪存(flash)中存储的启动代码(也可以称为启动固件)进行校验,该启动代码可以为基本输入输出系统(basic input/output system,BIOS)。若该启动代码校验通过,则处理器可以正常加载该启动代码,以实现电子设备的安全启动;若该启动代码校验未通过,则处理器不会加载该启动代码,相应的,电子设备启动失败。
但是,上述安全启动的方法是基于处理器内置信任根的情况下,对处理器的性能的依赖性较高,若处理器中未内置信任根,则无法实现安全启动。
发明内容
本申请提供了一种安全启动装置及方法,可以解决安全启动方法对处理器的性能依赖性较高的技术问题,即在处理器未内置信任根的情况下,通过上述方法可以实现处理器的安全启动,有效降低了安全启动过程对处理器性能的依赖,提高了处理器启动的安全性。
一方面,提供了一种安全启动装置,该安全启动装置包括:控制电路和不可编程电路;该不可编程电路通过第一接口与控制电路连接,并通过第二接口与非易失性存储器连接;该控制电路中存储有信任根,该控制电路能够通过该不可编程电路获取非易失性存储器中存储的启动代码,并采用信任根校验该启动代码;其中,该第一接口和第二接口的接口协议类型不同。
基于本申请提供的安全启动装置,即使处理器中未内置信任根,也可以通过控制电路实现对启动代码的校验,有效降低了安全启动过程对处理器性能的依赖,提高了安全启动的灵活性。并且,由于不可编程电路能通过两种不同协议类型的接口分别与控制电路和非易失性存储器连接,因此即使控制电路不具备与非易失性存储器相匹配的接口,也能通过该不可编程电路获取到启动代码。由此,有效降低了安全启动过程对控制电路的接口协议类型的要求,进一步提高了安全启动方案的应用灵活性。又由于不可编程电路不能够被编程,因此通过上述不可编程电路获取的启动代码不能被修改,因此能确保通过该不可编程电路获取启动代码时的可靠性,进而确保校验过程的可信度较高。
可选地,该不可编程电路可以通过第一接口与控制电路的第三接口连接,并可以通过该第二接口与非易失性存储器的第四接口连接;其中,该第三接口的接口协议类型为串行外设接口(serial peripheral interface,SPI),该第四接口的接口协议类型为局部总线(local bus,LBUS)接口。由此,采用SPI的控制电路即可通过不可编程电路获取到采用LBUS接口的非易失性存储器中的启动代码。
由于控制电路的尺寸通常较小,其所能设置的引脚数量有限,而SPI所需的引脚数量较少,因此控制电路采用SPI获取启动代码,可以有效节约控制电路的引脚资源。
可选地,该不可编程电路可以为联合测试工作组(joint test action group,JTAG)电路,该JTAG电路包括第一接口,且该第一接口的接口协议类型可以为JTAG。由于JTAG电路不可编程,因此可以采用该JTAG电路作为不可编程电路,以确保获取启动代码时的可靠性。
可选地,该JTAG电路可以集成在电子器件中。该电子器件可以为需要进行安全启动的设备中的电子器件。由于可以直接采用该电子器件中集成的JTAG电路作为不可编程电路,因此可以避免额外增设专用于进行接口转换的电路,从而有效降低了安全启动装置的成本和结构复杂度。
可选地,该电子器件可以包括复杂可编程逻辑器件(complex programmablelogic device,CPLD)或第一处理器,且该电子器件包括第二接口。也即是,电子器件中集成的JTAG电路可以通过该电子器件的第二接口与非易失性存储器连接。
由于CPLD或第一处理器具有与非易失性存储器连接的第二接口,因此可以直接采用该CPLD或第一处理器中的JTAG电路作为不可编程电路。由此,可以有效减少对设备中原有器件的结构和连接关系的改动,进而降低该安全启动装置的实现成本。
可选地,通过该不可编程电路获取非易失性存储器中存储的启动代码的过程可以包括:控制该JTAG电路的工作模式为边界扫描模式,并获取该启动代码。
该JTAG电路处于边界扫描模式时,JTAG电路中与该第二接口连接的边界扫描单元可以将电子器件(例如CPLD或第一处理器)的第二接口与该电子器件的内部逻辑电路隔离,并可以获取该第二接口接收到的启动代码。由于第二接口与电子器件的内部逻辑电路隔离,因此控制电路通过该JTAG电路获取到的启动代码不会经过电子器件的内部逻辑电路,进而可以避免电子器件的内部逻辑电路被篡改而导致获取到的启动代码不可信的问题。
可选地,控制该JTAG电路的工作模式为边界扫描模式的过程可以包括:向该JTAG电路发送第一测试模式选择(test mode selection,TMS)信号,以控制该JTAG电路的状态为移位(shift)指令寄存器(instruction register,IR)状态;然后向该JTAG电路发送第一指令,以控制该JTAG电路的工作模式为边界扫描模式。
其中,JTAG电路的状态为移位IR状态时,控制电路发送的第一指令可以被写入至JTAG电路中的IR,从而控制该JTAG电路的工作模式为边界扫描模式。
可选地,控制电路获取启动代码的过程可以包括:向JTAG电路发送第二TMS信号,以控制该JTAG电路的状态为移位数据寄存器(data register,DR)状态;然后向JTAG电路发送地址信号和控制信号,该地址信号用于指示启动代码在非易失性存储器中的存储地址,该控制信号用于指示读取该非易失性存储器中的数据;之后向该JTAG电路发送移位数据,并获取启动代码。
JTAG电路的工作模式为边界扫描模式,且JTAG电路处于移位DR状态时,控制电路向JTAG电路发送地址信号和控制信号可以被加载至第二接口。非易失性存储器通过该第二接口获取到地址信号和控制信号后,即可向该第二接口传输启动代码,JTAG电路中与该第二接口连接的边界扫描单元进而可以获取到该启动代码。控制电路向JTAG电路发送移位数据后,该移位数据可以被移入至与第二接口连接的边界扫描单元,进而使得该边界扫描单元将获取到的启动代码移出至控制电路。
可以理解的是,由于该移位数据是用于将启动代码从边界扫描单元中移出的数据,其数据内容没有实质含义,因此本申请不对该移位数据的内容进行限定。例如,该移位数据可以是随机生成的数据,或者可以是全0或全1的数据。
可选地,对于该JTAG电路集成在CPLD中的场景,该安全启动装置还可以包括:第一多路选择器;控制电路分别与第一多路选择器的控制端和第一端连接,第一多路选择器的第二端与第二处理器的JTAG接口连接,第一多路选择器的第三端与JTAG电路的第一接口连接;该控制电路可以用于控制第一多路选择器的第三端与第一端导通,或者控制第一多路选择器的第三端与第二端导通;其中,该第一多路选择器的第一端、第二端和第三端均为JTAG接口。
可以理解的是,当第一多路选择器的第三端与第一端导通时,控制电路与JTAG电路的JTAG接口连通,此时控制电路可以通过该JTAG电路获取非易失性存储器中存储的启动代码。当第一多路选择器的第三端与第二端导通时,第二处理器的JTAG接口与JTAG电路的JTAG接口导通,此时第二处理器可以通过JTAG电路对CPLD的内部逻辑电路进行控制。例如,第二处理器可以对该CPLD的内部逻辑电路进行升级。
由于CPLD中通常仅集成一个JTAG电路,且JTAG电路仅包括一个JTAG接口,因此可以采用第一多路选择器将JTAG电路的JTAG接口与控制电路导通,或者与第二处理器导通。由此,可以在不影响第二处理器对CPLD的控制的基础上,实现控制电路对启动代码的获取。
可选地,对于该JTAG电路集成在第一处理器中的场景,该第一处理器中还集成有用于对非易失性存储器进行控制的存储器控制器,该存储器控制器包括该第二接口;相应的,通过该不可编程电路获取非易失性存储器中存储的启动代码的过程可以包括:控制该JTAG电路的工作模式为控制器控制模式,并获取该启动代码。
其中,JTAG电路的工作模式为控制器控制模式时,该JTAG电路能够对该存储器控制器进行控制,从而通过该存储器控制器获取启动代码。
可选地,控制电路控制该JTAG电路的工作模式为控制器控制模式的过程可以包括:向JTAG电路发送第一TMS信号,以控制该JTAG电路的状态为移位IR状态;向该JTAG电路发送第二指令,以控制该JTAG电路的工作模式为控制器控制模式。
可选地,控制电路获取启动代码的过程可以包括:向JTAG电路发送第二TMS信号,以控制该JTAG电路的状态为移位DR状态;向该JTAG电路发送地址信号和控制信号,该地址信号用于指示启动代码在非易失性存储器中的存储地址,该控制信号用于指示读取该非易失性存储器中的数据;接收该JTAG电路发送的启动代码,该启动代码是JTAG电路通过该存储器控制器获取到的。
其中,JTAG电路的工作模式为控制器控制模式,且JTAG电路处于移位DR状态时,控制电路向JTAG电路发送地址信号和控制信号可以被传输至存储器控制器的第二接口。非易失性存储器通过该第二接口获取到地址信号和控制信号后,即可向该第二接口传输启动代码。JTAG电路进而可以通过存储器控制器获取到该启动代码,并将获取到的启动代码发送至控制电路。
可选地,该JTAG电路的JTAG接口(即第一接口)可以与控制电路的SPI连接,即该控制电路的第三接口的接口协议类型为SPI;该控制电路还可以用于实现该SPI与JTAG接口之间的接口协议转换,即控制电路可以通过SPI模拟JTAG协议,并与JTAG电路的JTAG接口通信。由此,该控制电路即可通过SPI接口获取到JTAG电路传输的启动代码。
作为一种可能的示例,该安全启动装置还可以包括:第二多路选择器;该控制电路还具有第一IO引脚和第二IO引脚;该SPI包括串行时钟(serial clock,SCK)引脚、主发从收(master output slave input,MOSI)引脚和主收从发(master input slave output,MISO)引脚;第一接口(即JTAG接口)包括:测试时钟(test clock,TCK)引脚、测试数据输入(test data input,TDI)引脚、测试数据输出(test data output,TDO)引脚以及TMS引脚;其中,SCK引脚与TCK引脚连接,MISO引脚与TDO引脚连接,MOSI引脚与第二多路选择器的第一端连接,第二多路选择器的第二端与TMS引脚连接,第二多路选择器的第三端与TDI引脚连接,第二多路选择器的控制端与第一IO引脚连接,第二IO引脚与TDI引脚连接;该控制电路能够通过第一IO引脚控制第二多路选择器的第一端与第三端导通;或者,该控制电路通过第一IO引脚控制第二多路选择器的第一端与第二端导通,并通过第二IO引脚向TDI引脚发送信号。
在该示例中,控制电路通过MOSI引脚既可以模拟TMS信号,也可以模拟加载至TDI引脚的信号,且控制电路仅需通过第一IO引脚控制第二多路选择器的导通状态,以及通过第二引脚模拟少量的加载至TDI引脚的TDI信号。其中,通过MOSI引脚模拟的信号可以由控制电路内部的硬件控制器生成,而通过IO引脚模拟的信号则需由控制电路内部的软件生成。由于硬件控制器生成信号的效率更高,因此基于该示例提供的接口转接方式可以确保控制电路向JTAG电路传输信号的效率较高,进而确保启动代码的获取效率较高。
作为另一种可能的示例,该控制电路还具有第一IO引脚;SPI包括SCK引脚、MOSI引脚以及MISO引脚;第一接口包括TCK引脚、TDI引脚、TDO引脚以及TMS引脚;该TCK引脚与SCK引脚连接,TDO引脚与MISO引脚连接,TDI引脚和TMS引脚中的一个引脚与MOSI引脚连接,TDI引脚和TMS引脚中的另一个引脚与第一IO引脚连接。
在该示例中,控制电路仅需SPI和一个第一IO引脚即可实现与JTAG接口的连接,由于无需外部的转接电路,因此其结构较为简单。
可选地,该不可编程电路还可以为串并转换电路,该串并转换电路具有第一接口和第二接口,且该第一接口的接口协议类型可以为SPI;该第二接口的接口协议类型可以为LBUS。
由于串并转换电路为不可编程的硬件电路,且能够实现SPI与LBUS接口的转换,从而使得控制电路能够通过其SPI获取到采用LBUS的非易失性存储器中的启动代码。由此,不仅有效提高了安全启动的灵活性,且可以确保获取到的启动代码的可靠性。
可选地,该控制电路还可以与用于加载启动代码的处理器(即上文的第一处理器或第二处理器)连接,该控制电路还可以基于该启动代码校验通过,控制该处理器启动,以及基于该启动代码校验未通过,禁止该处理器启动。其中,控制电路控制该处理器启动后,该处理器即可从非易失性存储器中加载启动代码,以实现设备的安全启动。
可选地,该控制电路还可以基于该启动代码校验未通过,通过该不可编程电路将非易失性存储器中存储的启动代码擦除。由此,即使用于加载启动代码的处理器出现误启动的情况,也无法加载该启动代码,进一步确保了安全启动的可靠性。
可选地,该控制电路可以为微控制单元(micro-controller unit,MCU)。或者,该控制电路还可以是独立于上述第一处理器和第二处理器的中央处理器(centralprocessing unit,CPU)。
可选地,该安全启动装置还可以包括该非易失性存储器。该非易失性存储器可以是闪存,该闪存可以为或非门(NOR)闪存,或者与非门(NAND)闪存。
可选地,该安全启动装置还可以包括上述第一处理器或第二处理器,该第一处理器或第二处理器与该非易失性存储器连接,用于加载该非易失性存储器中的启动代码。其中,该第一处理器和第二处理器均可以是CPU。
可以理解的是,本申请提供的安全启动装置的产品形态可以为芯片、单板或设备。若该安全启动装置为芯片,则该非易失性存储器可以独立于该安全启动装置设置,即该安全启动装置不包括非易失性存储器。并且,若该不可编程电路未集成在用于加载启动代码的处理器中,则该安全启动装置也不包括该用于加载启动代码的处理器,例如不包括上述第二处理器。
若该安全启动装置的产品形态为单板,则该安全启动装置除了包括控制电路和不可编程电路,还可以包括非易失性存储器和/或用于加载启动代码的处理器,且该非易失性存储器和/或该用于加载启动代码的处理器,与该控制电路和不可编程电路可以集成在一个电路板上。
若该安全启动装置的产品形态为设备,则该安全启动装置不仅可以包括控制电路、不可编程电路、非易失性存储器和用于加载启动代码的处理器,且还可以包括其他部件。例如,还可以包括用于封装上述各个器件的外壳,和/或,用于为上述各个器件供电的供电电路等。
可选地,该设备可以包括服务器、终端设备或交换设备等。其中,终端设备可以包括计算机和物联网(Internet of things,IoT)设备等,交换设备可以包括交换机和路由器等。
另一方面,提供了一种安全启动方法,该安全启动方法应用于上述方面提供的安全启动装置中;该安全启动装置包括控制电路和不可编程电路;该不可编程电路通过第一接口与控制电路连接,并通过第二接口与非易失性存储器连接,该第一接口和第二接口的接口协议类型不同,且该控制电路中存储有信任根;该方法包括:控制电路通过不可编程电路获取非易失性存储器中存储的启动代码,并采用信任根校验启动代码。
可选地,该不可编程电路为JTAG电路,控制电路通过不可编程电路获取非易失性存储器中存储的启动代码的过程可以包括:控制电路控制JTAG电路的工作模式为边界扫描模式,并获取启动代码。
可选地,控制电路控制JTAG电路的工作模式为边界扫描模式的过程可以包括:控制电路向JTAG电路发送第一TMS信号;JTAG电路基于该第一TMS信号,将其状态设置为移位IR状态;之后,控制电路向JTAG电路发送第一指令;JTAG电路基于该第一指令,将工作模式设置为边界扫描模式。
可选地,控制电路获取启动代码的过程可以包括:控制电路向JTAG电路发送第二TMS信号;JTAG电路基于该第二TMS信号,将其状态设置为移位DR状态;之后,控制电路向JTAG电路发送地址信号和控制信号,该地址信号用于指示启动代码在非易失性存储器中的存储地址,该控制信号用于指示读取非易失性存储器中的数据;JTAG电路将该地址信号和控制信号加载至第二接口,并获取该第二接口接收到的启动代码;控制电路向JTAG电路发送移位数据;JTAG电路基于该移位数据,将获取到的启动代码发送至控制电路。
可选地,该不可编程电路可以为JTAG电路,且该JTAG电路集成在第一处理器中,该第一处理器中还集成有存储器控制器,该存储器控制器包括第二接口;控制电路通过不可编程电路获取非易失性存储器中存储的启动代码的过程可以包括:控制电路控制JTAG电路的工作模式为控制器控制模式,并获取启动代码。
可选地,控制电路控制JTAG电路的工作模式为控制器控制模式的过程可以包括:控制电路向JTAG电路发送第一TMS信号;JTAG电路基于该第一TMS信号,将状态设置为移位IR状态;之后,控制电路向JTAG电路发送第二指令;JTAG电路基于该第二指令,将工作模式设置为控制器控制模式。
可选地,控制电路获取启动代码的过程可以包括:控制电路向JTAG电路发送第二TMS信号;JTAG电路基于该第二TMS信号,将状态设置为移位DR状态;控制电路向JTAG电路发送地址信号和控制信号,该地址信号用于指示启动代码在非易失性存储器中的存储地址,该控制信号用于指示读取非易失性存储器中的数据;JTAG电路将该地址信号和控制信号加载至第二接口,并获取第二接口接收到的启动代码;JTAG电路将获取到的启动代码发送至控制电路。
可选地,该不可编程电路包括第一接口,该第一接口的协议类型为JTAG,且该第一接口与控制电路的SPI连接;控制电路通过不可编程电路获取非易失性存储器中存储的启动代码的过程还可以包括:控制电路将SPI的接口协议转换为第一接口的接口协议。
作为一种可能的示例,安全启动装置还包括:第二多路选择器;控制电路还具有第一IO引脚和第二IO引脚;SPI包括SCK引脚、MOSI引脚以及MISO引脚;第一接口包括TCK引脚、TDI引脚、TDO引脚以及TMS引脚;SCK引脚与TCK引脚连接,MISO引脚与TDO引脚连接,MOSI引脚与第二多路选择器的第一端连接,第二多路选择器的第二端与TMS引脚连接,第二多路选择器的第三端与TDI引脚连接,第二多路选择器的控制端与第一IO引脚连接,第二IO引脚与TDI引脚连接;控制电路将SPI的接口协议转换为第一接口的接口协议的过程可以包括:控制电路通过SCK引脚向TCK引脚发送TCK信号;控制电路通过MISO引脚接收来自TDO引脚的TDO信号;控制电路通过第一IO引脚控制第二多路选择器的第一端与第三端导通,并通过MOSI引脚向TDI引脚发送TDI信号;或者,控制电路通过第一IO引脚控制第二多路选择器的第一端与第二端导通,通过MOSI引脚向TMS引脚发送TMS信号,并通过第二IO引脚向TMS引脚发送TDI信号。
作为另一种可能的示例,控制电路还具有第一IO引脚;SPI包括SCK引脚、MOSI引脚以及MISO引脚;第一接口包括TCK引脚、TDI引脚、TDO引脚以及TMS引脚;TCK引脚与SCK引脚连接,TDO引脚与MISO引脚连接,TDI引脚和TMS引脚中的一个引脚与MOSI引脚连接,TDI引脚和TMS引脚中的另一个引脚与第一IO引脚连接;控制电路将SPI的接口协议转换为第一接口的接口协议的过程可以包括:控制电路通过SCK引脚向TCK引脚发送TCK信号;控制电路通过MISO引脚接收来自TDO引脚的TDO信号;控制电路通过MOSI引脚向TDI引脚和TMS引脚中的一个引脚发送信号;控制电路通过第一IO引脚向TDI引脚和TMS引脚中的另一个引脚发送信号。
可选地,该不可编程电路可以为串并转换电路,该串并转换电路具有第一接口和第二接口,且该第一接口的接口协议类型为SPI,该第二接口的接口协议类型为LBUS。
可选地,方法还可以包括:控制电路基于启动代码校验未通过,通过不可编程电路将非易失性存储器中存储的启动代码擦除。
可选地,控制电路可以为元MCU。
上述方面提供的安全启动方法的技术效果可以参考前述安全启动装置中的效果描述,此处不再赘述。
又一方面,提供了一种控制电路,该控制电路包括:可编程逻辑电路和/或程序指令,该控制电路用于实现上述方面所提供的安全启动方法中由控制电路执行的步骤。
再一方面,提供了一种控制电路,该控制电路包括至少一个模块,该至少一个模块可以用于实现上述方面所提供的安全启动方法中由控制电路执行的步骤。
再一方面,提供了一种处理器,该处理器可以包括JTAG电路、存储器控制器和处理芯片,其中,该JTAG电路的JTAG接口与控制电路连接,该存储器控制器的第二接口与非易失性存储器连接;该JTAG电路能够通过该存储器控制器的第二接口获取非易失性存储器中存储的启动代码,并将该启动代码传输至控制电路,以便控制电路校验该启动代码。该处理器中的处理芯片可以通过存储器控制器的第二接口获取启动代码,并加载该启动代码,以实现设备的安全启动。
可选地,该JTAG电路可以在控制电路的控制下处于控制器控制模式,并可以在该控制器控制模式下获取启动代码,以及将获取到的启动代码传输至控制电路。
再一方面,提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,该指令由处理器执行时,实现上述方面所提供的安全启动方法。
再一方面,提供了一种包含指令的计算机程序产品,当该计算机程序产品在计算机上运行时,实现上述任一方面及任一可能的实施方式所提供的安全启动方法。
本申请提供了一种安全启动方法及装置,该安全启动装置中的控制电路能够通过不可编程电路获取非易失性存储器中存储的启动代码,并采用信任根校验该启动代码。由此,即使用于加载该启动代码的处理器中未内置信任根,也可以通过控制电路实现对启动代码的校验,从而有效降低了安全启动过程对处理器性能的依赖,提高了安全启动的灵活性。
并且,由于该安全启动装置中的不可编程电路能够通过两种不同类型的接口分别与控制电路和非易失性存储器连接,因此即使控制电路不具备与非易失性存储器相匹配的接口,也能够通过该不可编程电路获取到非易失性存储器中的启动代码。由此,有效降低了安全启动过程对控制电路的接口协议类型的要求,提高了安全启动方案的应用灵活性。又由于该不可编程电路不能够被编程,因此能够确保通过该不可编程电路获取启动代码时的可靠性,进而确保校验过程的可信度较高,满足安全启动的要求。
附图说明
图1是本申请实施例提供的一种安全启动流程的示意图;
图2是本申请实施例提供的一种安全启动装置的结构示意;
图3是本申请实施例提供的另一种安全启动装置的结构示意图;
图4是本申请实施例提供的又一种安全启动装置的结构示意图;
图5是本申请实施例提供的一种集成有JTAG电路的电子器件的结构示意图;
图6是本申请实施例提供的一种控制电路通过JTAG电路获取启动代码的流程图;
图7是本申请实施例提供的一种TAP控制器的状态机的示意图;
图8是本申请实施例提供的另一种控制电路通过JTAG电路获取启动代码的流程图;
图9是本申请实施例提供的一种控制电路的SPI与JTAG接口连接的示意图;
图10是本申请实施例提供的另一种控制电路的SPI与JTAG接口连接的示意图;
图11是本申请实施例提供的一种安全启动方法的流程图;
图12是本申请实施例提供的一种控制电路的结构示意。
具体实施方式
下面结合附图详细介绍本申请实施例提供的安全启动装置及方法。
图1是本申请实施例提供的一种安全启动流程的示意图,如图1所示,设备上电后,可以先采用信任根对非易失性存储器(例如闪存)中的启动代码进行第一次(first,1st)启动(boot)校验,然后可以基于校验后的启动代码对加载程序(BootLoader)进而第二次(second,2nd)启动校验。之后,可以基于校验后的加载程序对设备的操作系统(operationsystem,OS)进行校验,再基于检验后的OS对设备中安装的应用程序(application,APP)进行校验。由此可见,设备在上电后,可以从信任根开始对启动代码、加载程序、OS和APP进行逐级校验。在逐级校验的过程中,若任一级校验失败,则设备启动失败;若各级均校验通过,则设备完成安全启动。
可以理解的是,若设备的处理器中内置有信任根,则该处理器上电后可以直接采用信任根对非易失性存储器中的启动代码进行校验。若处理器中未内置信任根,则可以通过独立于处理器的控制电路中的信任根(也称为片外信任根或外置信任根)来对该启动代码进行校验。也即是,可以将独立于处理器的控制电路与非易失性存储器连接,通过该控制电路获取该非易失性存储器中的启动代码,并对获取到的启动代码进行校验。
由于需要将控制电路与非易失性存储器连接,因此需确保该控制电路具有与该非易失性存储器适配的接口,也即是,需确保控制电路的接口的接口协议类型与非易失性存储器的接口的接口协议类型相同。由此,导致在采用片外信任根实现安全启动时,对控制电路的接口的接口协议类型的要求较高,安全启动方案的应用灵活性较差。
本申请实施例提供了一种安全启动装置,该安全启动装置在进行安全启动时,对处理器性能的依赖较低,且对控制电路的接口的接口协议类型的要求也较低,由此有效提高了安全启动的灵活性。图2是本申请实施例提供的一种安全启动装置的结构示意,该安全启动装置可以应用于需要实现安全启动的设备中,或者该安全启动装置即为需要实现安全启动的设备。如图2所示,该安全启动装置包括:控制电路10和不可编程电路20。
该不可编程电路20通过第一接口I1与控制电路10连接,并通过第二接口I2与非易失性存储器30连接,且该第一接口I1和第二接口I2的接口协议类型不同。例如,该第一接口I1的接口协议类型可以为SPI,该第二接口I2的接口协议类型可以为LBUS。
该控制电路10中存储有信任根10a,该控制电路10能够通过不可编程电路20获取非易失性存储器30中存储的启动代码30a,并采用信任根10a校验该启动代码30a。
在本申请实施例中,不可编程电路20是指逻辑功能在出厂后就无法再被编程的电路,即该不可编程电路20的逻辑功能无法被篡改。由此,可以确保通过该不可编程电路20获取到的启动代码30a无法给篡改,保证启动代码30a的可靠性较高,进而确保校验过程的可信度较高。
接口协议(interface protocol)是指需要进行信息交换的接口之间所需遵从的通信方式和要求,接口协议可以规定接口所包括的引脚的数量,以及各个引脚的功能。相应的,接口协议类型不同的两个接口的引脚数量不同,和/或,至少一个引脚的功能不同。可以理解的是,由于接口之间需通过总线连接,并通过该总线传输数据,因此某个接口的接口协议也可以是指该接口所连接的总线的总线协议。
该信任根10a也可以称为硬件信任根或可信根,其为写入在控制电路10内且不可被篡改的代码,该代码能够校验启动代码30a是否可信。
启动代码30a是指设备中的处理器在上电或者复位后运行的第一段代码,该启动代码30a可以用于在OS运行之前对设备的硬件及软件环境进行必要的初始化。例如,该启动代码30a可以是BIOS代码,片外安全启动代码(external secure boot code,ESBC),统一可扩展固件接口(unified extensible firmware interface,UEFI)代码或者通用引导加载程序(universal boot loader,UBOOT)等。
可以理解的是,需要进行安全启动的设备中还包括用于加载该启动代码30a的处理器,本申请实施例中的控制电路10为独立于该处理器的电路,即该控制电路10能够采用片外信任根对启动代码30a进行校验。
综上所述,本申请实施例提供了一种安全启动装置,该安全启动装置中的控制电路能够通过不可编程电路获取非易失性存储器中存储的启动代码,并采用信任根校验该启动代码。由此,即使用于加载该启动代码的处理器中未内置信任根,也可以通过控制电路实现对启动代码的校验,从而有效降低了安全启动过程对处理器性能的依赖,提高了安全启动的灵活性。
并且,由于该安全启动装置中的不可编程电路能够通过两种不同类型的接口分别与控制电路和非易失性存储器连接,因此即使控制电路不具备与非易失性存储器相匹配的接口,也能够通过该不可编程电路获取到非易失性存储器中的启动代码。由此,有效降低了安全启动过程对控制电路的接口协议类型的要求,提高了安全启动方案的应用灵活性。又由于该不可编程电路不能够被编程,因此能够确保通过该不可编程电路获取启动代码时的可靠性,进而确保校验过程的可信度较高,满足安全启动的要求。
在本申请实施例中,该控制电路10可以为MCU,该MCU也可以称为单片机。或者,该控制电路10还可以为CPU,且该CPU独立于用于加载启动代码30a的处理器。该非易失性存储器30可以为闪存,该闪存可以是NAND闪存或NOR闪存。
如图2所示,该不可编程电路20可以通过第一接口I1与控制电路10的第三接口I3连接,并可以通过第二接口I2与非易失性存储器30的第四接口I4连接。其中,该第三接口I3的接口协议类型可以为SPI,该第四接口I4的接口协议类型可以为LBUS。
其中,SPI协议中定义了4个引脚:SCK引脚、MOSI引脚、MISO引脚和片选(chipselect,CS)引脚,且采用SPI协议通信的两个设备以主从方式工作,即一个设备为主设备,另一个设备为从设备。该SCK引脚用于传输时钟信号,且该时钟信号由主设备产生;该MOSI引脚为主设备的数据输出引脚,从设备的数据输入引脚;MISO引脚为主设备的数据输入引脚,从设备的数据输出引脚;CS引脚为从设备的使能引脚,由主设备控制。可以理解的是,本申请实施例中的控制电路10为主设备。
LBUS协议中定义了如下信号线:数据/地址复用信号线、读使能(output enable)信号线、写使能(write enable)信号线和片选信号线等。其中,数据/地址复用信号线用于传输数据和地址信号,且该数据/地址复用信号线的根数一般为8、16或32。读使能信号线用于传输读使能信号(低电平有效),用于对被控器件(例如非易失性存储器)执行读操作。写使能信号线用于传输写使能信号(低电平有效),用于对被控器件执行写读操作。基于上述分析可知,LBUS协议中定义的信号线的数量较多,因此LBUS接口所需的引脚数量也较多。
由于控制电路10的尺寸通常较小,其所能设置的引脚数量有限,而SPI所需的引脚数量较少,因此控制电路10采用SPI获取启动代码30a,可以有效节约控制电路10的引脚资源。又由于该不可编程电路20能够通过第二接口I2与非易失性存储器30的LBUS接口连接,因此可以确保控制电路10能够获取到采用LBUS接口的非易失性存储器30中的启动代码30a,从而有效提高了安全启动方案的应用灵活性。
可以理解的是,该第三接口I3还可以是其他接口协议类型的串行接口,例如还可以是内置集成电路(inter-integrated circuit,I2C)接口。该第四接口I4还可以是其他接口协议类型的并行接口,例如还可以是开放式NAND闪存接口(open nand flashinterface,ONFI)或转换(toggle)接口。
还可以理解的是,该第二接口I2的接口协议类型与第四接口I4的接口协议类型可以相同,例如该第二接口I2的接口协议类型也可以为LBUS。该第一接口I1的接口协议类型与第三接口I3的接口协议类型可以相同,也可以不同。例如,该第一接口I1的接口协议类型可以为SPI或者JTAG。
在一种具体的实现方式中,该不可编程电路20可以是串并转换电路,且如图2所示,该不可编程电路20具有该第一接口I1和第二接口I2。其中,该第一接口I1的接口协议类型可以为SPI,该第二接口I2的接口协议类型可以为LBUS,该串并转换电路20能够实现SPI与LBUS之间的接口协议转换。
并且,在该实现方式中,控制电路10的第三接口I3的接口协议类型也可以为SPI,非易失性存储器30的第四接口I4的接口协议类型可以为LBUS。
由于串并转换电路20为不可编程的硬件电路,且能够实现SPI与LBUS之间的接口协议转换,从而使得控制电路10能够通过SPI获取到采用LBUS接口的非易失性存储器30中的启动代码30a。由此,不仅有效提高了安全启动的灵活性,且可以确保获取到的启动代码的可靠性,进而确保安全启动的可靠性。
可以理解的是,在该实现方式中,该第一接口I1的接口协议类型也可以为其他类型,例如可以是I2C,该第二接口I2的接口协议类型也可以为其他类型,例如可以为ONFI。
在另一种具体的实现方式中,该不可编程电路20可以为JTAG电路,该JTAG电路包括第一接口I1,且该第一接口I1的接口协议类型为JTAG。由于JTAG电路具有不可编程的特性,因此可以采用该JTAG电路作为不可编程电路20,以确保获取启动代码30a时的可靠性。并且,该JTAG电路20的时钟频率通常可以达到10兆赫兹(MHz),因此可以确保通过该JTAG电路20获取启动代码30的速率较快,进而确保校验效率较高。
JTAG协议定义了如下4个引脚:TCK引脚、TMS引脚、TDO引脚和TDI引脚。其中,TCK引脚用于传输时钟信号;TMS引脚用于传输TMS信号,该TMS信号用于控制JTAG电路的状态;TDO引脚用于串行输出数据,TDI引脚用于串行输入数据。
在该实现方式中,JTAG电路20可以集成在电子器件中,该电子器件可以为集成电路(integrated circuit,IC),且该电子器件可以为需要进行安全启动的设备中的电子器件。由于可以直接采用电子器件中集成的JTAG电路作为不可编程电路,因此可以避免额外增设专用于进行接口转换的电路,从而有效降低了安全启动装置的成本和结构复杂度。
可以理解的是,该电子器件具有与非易失性存储器30连接的第二接口I2,JTAG电路20可以通过该电子器件的第二接口I2与非易失性存储器30连接。
作为一种可能的示例,如图3所示,该JTAG电路20可以集成在CPLD中,即该电子器件可以为CPLD。在该示例中,JTAG电路20可以通过CPLD的第二接口I2与非易失性存储器30连接,且该第二接口I2可以由CPLD的多个输入输出(input/output,IO)引脚组成。
作为另一种可能的示例,如图4所示,该JTAG电路20可以集成在第一处理器40中,即该电子器件可以为第一处理器40。在该示例中,第一处理器40中还集成有用于控制非易失性存储器30的存储器控制器401,该存储器控制器401具有第二接口I2,且该第二接口I2可以由存储器控制器401的多个IO引脚组成。其中,若该非易失性存储器30为闪存,则该存储器控制器401可以为闪存控制器。
由于CPLD或第一处理器40具有与非易失性存储器30连接的第二接口I2,因此可以直接采用该CPLD或第一处理器40中的JTAG电路20作为不可编程电路。由此,可以有效减少对设备中原有器件的结构和连接关系的改动,降低该安全启动装置的实现成本。
可以理解的是,除了CPLD和第一处理器40之外,该电子器件还可以包括其他类型的芯片。例如,该电子器件还可以包括现场可编程门阵列(field-programmable gatearray,FPGA),专用集成电路(application-specific integrated circuit,ASIC)或通用阵列逻辑(generic array logic,GAL)电路等。
图5是本申请实施例提供的一种集成有JTAG电路的电子器件的结构示意图。参考图5,该JTAG电路20可以包括:测试访问端口(test access port,TAP)控制器201、旁路寄存器202、IR 203、DR 204以及多个边界扫描单元(boundary scan cell,BSC)205。该JTAG电路20的JTAG接口(即第一接口I1)可以包括:TCK引脚、TMS引脚、TDO引脚和TDI引脚。
如图5所示,每个边界扫描单元205可以分别与电子器件的一个IO引脚和该电子器件的内部逻辑电路连接。并且,该多个边界扫描单元205可以在JTAG接口的TDI引脚和TDO引脚之间依次串联构成一个边界扫描链。电子器件在正常工作时,每个边界扫描单元205能够在IO引脚与内部逻辑电路之间透传数据,即该多个边界扫描单元205构成的边界扫描链不影响电子器件的正常工作。
当JTAG电路20的工作模式为边界扫描模式时,该多个边界扫描单元205构成的边界扫描链能够将电子器件的内部逻辑电路与外围的IO引脚(例如第二接口I2包括的各个IO引脚)隔离。此时,该边界扫描链能够捕获(capture)各个IO引脚接收到的数据,并可以将捕获到的数据串行移出至JTAG接口的TDO引脚。并且,该JTAG接口的TDI引脚还能够向边界扫描链串行移入数据,该边界扫描链可以将串行移入的数据加载至各个IO引脚。
基于上述关于边界扫描模式的介绍可知,控制电路10可以控制JTAG电路20的工作模式为边界扫描模式,并可以在该JTAG电路20处于边界扫描模式时获取启动代码30a。
由于在边界扫描模式下,JTAG电路20所属的电子器件(例如CPLD或第一处理器40)的内部逻辑电路能够与外围的IO引脚隔离,因此控制电路10通过该JTAG电路20获取到的启动代码30a不会经过电子器件的内部逻辑电路。由此,可以避免电子器件的内部逻辑电路被篡改而导致获取到的启动代码30a不可信的问题,即确保了通过JTAG电路20获取到的启动代码30a的可靠性。
图6是本申请实施例提供的一种控制电路通过JTAG电路获取启动代码的流程图。如图6所示,控制电路获取启动代码的过程可以包括:
步骤S11、控制电路向JTAG电路20发送第一TMS信号。
在本申请实施例中,控制电路10可以向JTAG电路20的TMS引脚发送第一TMS信号,以控制该JTAG电路20的状态为移位IR状态。
步骤S12、JTAG电路基于该第一TMS信号,将状态设置为移位IR状态。
JTAG电路20处于移位IR状态时,控制电路10能够向JTAG电路20的IR 203写入指令。可以理解的是,JTAG电路20的状态是指该JTAG电路20中TAP控制器201的状态。
图7是本申请实施例提供的一种TAP控制器的状态机的示意图。如图7所示,该TAP控制器201共有16个状态:测试逻辑/复位(test-logic/reset),运行测试/空闲(run-test/idle),选择DR扫描(select-DR-scan),捕获DR(capture-DR),移位DR(shift-DR),退出1DR(exit1-DR),暂停DR(pause-DR),退出2DR(exit2-DR),更新DR(update-DR),选择IR扫描(select-IR-scan),捕获IR(capture-IR),移位IR(shift-IR),退出1IR(exit1-IR),暂停IR(pause-IR),退出2IR(exit2-IR)以及更新IR(update-IR)。其中,TAP控制器201的状态可以在TMS引脚接收到的TMS信号的控制下改变。在图7所示的状态机中,TMS=1表示TMS信号为高电平,TMS=0表示TMS信号为低电平。
参考图7可以看出,根据TAP控制器201的初始状态的不同,控制该TAP控制器201的状态切换为移位IR状态所需的第一TMS信号也有所不同。示例的,假设该TAP控制器201的初始状态为运行测试/空闲状态,则该TAP控制器201的状态需要先依次切换为选择DR扫描状态、选择IR扫描状态和捕获IR状态,然后再由捕获IR状态切换至移位IR状态。相应的,该第一TMS信号的电平变化可以依次为:高电平、高电平、低电平和低电平,即TMS的取值依次为1、1、0和0。
步骤S13、控制电路向JTAG电路发送第一指令。
在该JTAG电路20处于移位IR状态时,控制电路10可以向JTAG电路20的TDI引脚发送第一指令,该第一指令可以被写入至JTAG电路20的IR 203,从而使得JTAG电路20的工作模式切换为边界扫描模式。其中,该第一指令可以是控制电路10中预先存储的,且能够使得JTAG电路20的工作模式切换为边界扫描模式的指令。该第一指令的长度可以为8比特(bit)或16bit。
步骤S14、JTAG电路基于该第一指令,将工作模式设置为边界扫描模式。
该JTAG电路20的工作模式为边界扫描模式时,与电子器件的第二接口I2连接的边界扫描链可以将该第二接口I2与电子器件的内部逻辑电路隔离。并且,该边界扫描链可以捕获该第二接口I2接收到的数据,并可以向该第二接口I2加载数据。
步骤S15、控制电路向JTAG电路发送第二TMS信号。
控制电路10在将JTAG电路20的工作模式设置为边界扫描模式后,可以继续向该JTAG电路20的TMS引脚发送第二TMS信号,以将该JTAG电路20的TAP控制器201的状态切换为移位DR状态。
示例的,参考图7所示的状态机,若TAP控制器201的状态为移位IR状态,则该TAP控制器201的状态可以先依次切换至退出1IR状态、更新IR状态和运行测试/空闲状态。然后,再由运行测试/空闲状态依次切换为选择DR扫描状态、捕获DR状态和移位DR状态。相应的,该第二TMS信号的电平变化可以依次为:高电平、高电平、低电平、高电平、低电平和低电平,即TMS的取值依次为1、1、0、1、0和0。
步骤S16、JTAG电路基于该第二TMS信号,将状态设置为移位DR状态。
该TAP控制器201处于移位DR状态时,控制电路10能够通过JTAG电路20的TDI引脚向边界扫描链串行移入数据,该边界扫描链进而可以将串行移入的数据加载至第二接口I2。
步骤S17、控制电路向JTAG电路发送地址信号和控制信号。
控制电路10可以向JTAG电路20的TDI引脚发送地址信号和控制信号。该地址信号用于指示启动代码30a在非易失性存储器30中的存储地址,该控制信号用于指示读取该非易失性存储器30中的数据。也即是,该控制信号可以指示读取该地址信号指示的存储位置处的数据(即该启动代码30a)。其中,该启动代码30a在非易失性存储器30中的存储地址可以是控制电路10中预先存储的。
步骤S18、JTAG电路将该地址信号和控制信号加载至第二接口,并获取该第二接口接收到的启动代码。
在该JTAG电路20的工作模式为边界扫描模式,且状态为移位DR状态时,JTAG电路20通过TDI引脚接收到的地址信号和控制信号能够被串行移入至与第二接口I2连接的边界扫描链。该边界扫描链进而可以将串行移入的地址信号和控制信号加载至JTAG电路20所属电子器件的第二接口I2。与该第二接口I2连接的非易失性存储器30即可基于该地址信号和控制信号的指示,将其存储的启动代码30a传输至该第二接口I2。JTAG电路20中与第二接口I2连接的边界扫描链进而可以捕获该第二接口I2接收到的启动代码30a。
下文以第二接口I2和非易失性存储器30的第四接口I4均为LBUS接口为例,对上述步骤S18的实现过程进行说明。由于LBUS包括:数据/地址复用信号线、读使能信号线和写使能信号线等,因此该地址信号可以被加载至第二接口I2中与数据/地址复用信号线连接的IO引脚上,该控制信号可以被加载至第二接口I2中与读使能信号线连接的IO引脚上,即该控制信号可以为读使能信号。非易失性存储器30通过数据/地址复用信号线读取到地址信号,并通过读使能信号线读取到控制信号后,可以通过该数据/地址复用信号线将启动代码30a传输至该第二接口I2。
步骤S19、控制电路向JTAG电路发送移位数据。
在本申请实施例中,控制电路10可以在发送地址信号和控制信号之后的预设时长后,向该JTAG电路20的TDI引脚发送移位数据。其中,该预设时长可以大于或等于JTAG电路20将地址信号和控制信号加载至第二接口I2,非易失性存储器30基于该地址信号和控制信号将启动代码30a传输至第二接口I2,以及JTAG电路20的边界扫描链捕获该第二接口I2接收到的数据所需的总时长。也即是,在经过该预设时长之后,可以确保JTAG电路20的边界扫描链已捕获到非易失性存储器30传输的启动代码30a。其中,该预设时长的数量级可以为纳秒(ns)级,例如该预设时长可以为10ns至20ns。
步骤S20、JTAG电路基于该移位数据,将获取到的启动代码发送至控制电路。
在JTAG电路20处于边界扫描模式,且处于移位DR状态时,参考图5,该JTAG电路20的TDI引脚、与第二接口I2连接的边界扫描链以及该TDO引脚连通。控制电路10向JTAG电路20的TDI引脚发送移位数据后,该移位数据能够被串行移入至边界扫描链中。由此,可以使得该边界扫描链捕获到的启动代码30a被串行移出至TDO引脚,即JTAG电路20的边界扫描链可以通过TDO引脚向控制电路10传输启动代码。控制电路10进而可以获取到该启动代码30a。
基于上文描述可知,该移位数据是用于将边界扫描链中的启动代码30a串行移出至TDO引脚的数据,该移位数据的内容并不具备实质含义,因此本申请实施例不对该移位数据的内容做限定。例如,该移位数据可以是随机生成的数据,或者可以是全0的数据,又或者可以是全1的数据。
还可以理解的是,由于启动代码30a的数据量通常大于第二接口I2的数据位宽(即第二接口I2单次能够接收的数据的数据量),因此基于上述步骤S11至S20,控制电路10仅能获取到启动代码30a的一部分。相应的,该控制电路10和JTAG电路20可以通过重复执行上述步骤S11至S20,以获取完整的启动代码30a。
对于该JTAG电路20集成在第一处理器40的场景,控制电路10除了可以在JTAG电路20处于边界扫描模式时获取启动代码30a,还可以控制JTAG电路20的工作模式为控制器控制模式,并在该JTAG电路20处于该控制器控制模式时获取启动代码30a。图8是本申请实施例提供的另一种控制电路通过JTAG电路获取启动代码的流程图。如图8所示,该控制电路获取启动代码的过程可以包括:
步骤S21、控制电路向JTAG电路发送第一TMS信号。
该步骤S21的实现过程可以参考上述步骤S11,此处不再赘述。
步骤S22、JTAG电路基于该第一TMS信号,将状态设置为移位IR状态;
该步骤S22的实现过程可以参考上述步骤S12,此处不再赘述。
步骤S23、控制电路向JTAG电路发送第二指令。
在JTAG电路20处于移位IR状态时,控制电路10可以向JTAG电路20的TDI引脚发送第二指令,该第二指令可以被写入至JTAG电路20的IR 203,从而使得JTAG电路20的工作模式切换为控制器控制模式。其中,该第二指令可以是控制电路10中预先存储的,且能够使得JTAG电路20的工作模式切换为控制器控制模式的指令。例如,该第二指令的长度可以为8bit或16bit。
步骤S24、JTAG电路基于第二指令,将工作模式设置为控制器控制模式。
该JTAG电路20的工作模式为控制器控制模式时,该JTAG电路20能够对第一处理器40中的存储器控制器401进行控制,或者可以理解为,JTAG电路20能够接管该存储器控制器401。
步骤S25、控制电路向JTAG电路发送第二TMS信号。
该步骤S25的实现过程可以参考上述步骤S15,此处不再赘述。
步骤S26、JTAG电路基于该第二TMS信号,将状态设置为移位DR状态。
该步骤S26的实现过程可以参考上述步骤S16,此处不再赘述。
步骤S27、控制电路向JTAG电路发送地址信号和控制信号。
控制电路10可以向JTAG电路20的TDI引脚发送地址信号和控制信号。该地址信号用于指示启动代码01在非易失性存储器30中的存储地址,该控制信号用于指示读取非易失性存储器30中的数据。
步骤S28、JTAG电路将该地址信号和控制信号加载至第二接口,并获取该第二接口接收到的启动代码。
在JTAG电路20的工作模式为控制器控制模式,且该JTAG电路20的状态为移位DR状态时,JTAG电路20通过其TDI引脚接收到地址信号和控制信号后,可以将该地址信号和控制信号加载至存储器控制器401的第二接口I2。非易失性存储器30接收到存储器控制器401的第二接口I2传输的地址信号和控制信号后,可以基于该地址信号和控制信号的指示,将其存储的启动代码30a传输至该第二接口I2。JTAG电路20进而可以通过存储器控制器401获取该第二接口I2接收到的启动代码30a。
步骤S29、JTAG电路将获取到的启动代码发送至控制电路。
JTAG电路20获取到该启动代码30a后,可以将该启动代码30a通过TDO引脚发送至控制电路10。相应的,控制电路10可以接收到JTAG电路20的TDO引脚传输的启动代码30a。
可以理解的是,若第一处理器40中集成有JTAG电路20,且第一处理器40支持通过该JTAG电路20对存储器控制器401进行控制,则控制电路10可以采用上述步骤S21至步骤S29所示的方式来获取启动代码30a。若第一处理器40不支持通过该JTAG电路20对存储器控制器401进行控制,则控制电路10可以采用上述步骤S11至步骤S20所示的方式来获取启动代码30a。
对于该JTAG电路20集成在CPLD中的场景,如图3所示,该安全启动装置还可以包括:第一多路选择器(multiplexer,MUX)50,该多路选择器也可以称为数据选择器或多路开关。
参考图3,该控制电路10可以分别与第一多路选择器50的控制端C11和第一端I11连接,该第一多路选择器50的第二端I12与第二处理器60的JTAG接口连接,该第一多路选择器50的第三端I13与第一接口I1(即JTAG电路20的JTAG接口)连接。其中,该第二处理器60是指用于加载启动代码30a以实现安全启动的处理器。
该控制电路10可以控制该第一多路选择器50的第三端I13与第一端I11导通,或者控制该第一多路选择器50的第三端I13与第二端I12导通。其中,该第一多路选择器50的第一端I11、第二端I12和第三端I13均为JTAG接口。
可以理解的是,当该第一多路选择器50的第三端I13与第一端I11导通时,控制电路10的第三接口I3与该JTAG电路20的JTAG接口连通。此时,控制电路10可以通过该JTAG电路20获取非易失性存储器30中存储的启动代码30a。
当该第一多路选择器50的第三端I13与第二端I12导通时,第二处理器60的JTAG接口与该JTAG电路20的JTAG接口导通,第二处理器60可以通过JTAG电路20对CPLD的内部逻辑电路进行控制。例如,第二处理器60可以对该CPLD的内部逻辑电路进行升级。
由于CPLD中通常仅集成一个JTAG电路20,且该JTAG电路20仅包括一个JTAG接口,因此在本申请实施例中,可以采用第一多路选择器50将JTAG电路20的JTAG接口与控制电路10导通,或者与第二处理器60导通。由此,可以在不影响第二处理器60对CPLD的控制的基础上,实现控制电路10对启动代码30a的获取。
示例的,参考图3,该控制电路10还可以具有第一控制引脚PIN1,该第一控制引脚PIN1可以与第一多路选择器50的控制端C11连接。控制电路10可以通过该第一控制引脚PIN1向第一多路选择器50的第一端I11传输第一电平或第二电平的选择信号。若该选择信号为第一电平,则第一多路选择器50的第三端I13可以与第一端I11导通;若该选择信号为第二电平,则该第一多路选择器50的第三端I13可以与第二端I12导通。其中,该第一控制引脚PIN1可以为控制电路10的GPIO引脚。该第一电平相对于第二电平可以为高电平,也可以为低电平,本申请实施例对此不做限定。
可以理解的是,若CPLD中集成有多个JTAG电路,则该控制电路10和第二处理器60可以分别与CPLD中不同JTAG电路的JTAG接口连接。相应的,本申请实施例提供的安全启动装置中也可以无需设置该第一多路选择器50。
在本申请实施例中,对于该第一接口I1为JTAG电路20的JTAG接口,且控制电路10的第三接口I3为SPI的场景,该控制电路10还可以用于实现SPI与JTAG的接口协议转换。也即是,该控制电路10可以通过SPI向JTAG接口发送满足JTAG协议的信号。
作为一种可能的示例,参考图9,该控制电路10还具有第一IO引脚IO1,该第一IO引脚IO1可以为通用输入输出(general-purpose input/output,GPIO)引脚。
如图9所示,在该示例中,JTAG接口的TCK引脚与SPI的SCK引脚连接,JTAG接口的TDO引脚与SPI的MISO引脚连接。也即是,控制电路10可以通过SCK引脚模拟TCK信号,并向JTAG电路20的TCK引脚加载该TCK信号,且控制电路10可以通过MISO引脚接收JTAG电路20通过TDO引脚传输的TDO信号。
继续参考图9,JTAG接口的TDI引脚和TMS引脚中的一个引脚(例如图9中所示的TMS引脚)与SPI的MOSI引脚连接,TDI引脚和TMS引脚中的另一个引脚(例如图9中所示的TDI引脚)与该第一IO引脚IO1连接。也即是,控制电路10可以通过MOSI引脚和第一IO引脚IO1,分别模拟加载至TMS引脚的TMS信号和加载至TDI引脚的TDI信号。
可以理解的是,控制电路10通过SCK引脚和MOSI引脚模拟的信号均可以由控制电路10内部的硬件控制器生成。控制电路10通过第一IO引脚IO1模拟的信号则需由控制电路10内部的软件生成。
在该示例中,控制电路10仅需SPI和一个第一IO引脚IO1即可实现与JTAG接口的连接,由于无需外部的转接电路,因此其结构较为简单。
作为另一种可能的示例,参考图10,该安全启动装置10还可以包括:第二多路选择器70。该控制电路10还具有第一IO引脚IO1和第二IO引脚IO2,该IO1和IO2均可以为GPIO引脚。
如图10所示,在该示例中,SPI的SCK引脚与JTAG接口的TCK引脚连接,SPI的MISO引脚与JTAG接口的TDO引脚连接。SPI的MOSI引脚与第二多路选择器70的第一端I21连接,第二多路选择器70的第二端I22与JTAG接口的TMS引脚连接,第二多路选择器70的第三端I23与JTAG接口的TDI引脚连接,第二多路选择器70的控制端C21与第一IO引脚IO1连接。第二IO引脚IO2与该TDI引脚连接。
该控制电路10还可以用于:通过第一IO引脚IO1控制第二多路选择器70的第一端I21与第三端I23导通,或者控制第二多路选择器70的第一端I21与第二端I22导通,并通过第二IO引脚IO2向该TDI引脚发送TDI信号。
其中,当第二多路选择器70的第一端I21与第三端I23导通时,SPI中的MOSI引脚与TDI引脚导通,控制电路10可以通过MOSI引脚向TDI引脚传输TDI信号。例如,控制电路10可以通过MOSI引脚向TDI引脚传输第一指令,第二指令,地址信号和控制信号,或者移位数据。
当第二多路选择器70的第一端I21与第二端I22导通时,SPI中的MOSI引脚与TMS引脚导通,控制电路10可以通过MOSI引脚向TMS引脚传输TMS信号。例如,控制电路10可以通过MOSI引脚向TMS引脚传输第一TMS信号或第二TMS信号。
可以理解的是,SPI中的MOSI引脚被切换为与TMS引脚导通后,控制电路10可能还需向TDI引脚传输TDI信号,此时,即可通过该第二IO引脚IO2向TDI引脚传输TDI信号。例如,控制电路10可以通过第二IO引脚IO2向TDI引脚传输在移位IR状态或移位DR状态下,待写入寄存器(可以是IR 203或DR 204)的最后1bit数据。
还可以理解的是,当第二多路选择器70将MOSI引脚与TDI引脚导通时,加载至TMS引脚的TMS信号的电平即为低电平。当第二多路选择器70将MOSI引脚与TMS引脚导通时,加载至TDI引脚的信号的电平即为低电平。
基于上述分析可知,在该示例中,控制电路10通过MOSI引脚既可以模拟TMS信号,也可以模拟TDI信号,且控制电路10仅需通过第一IO引脚IO1控制第二多路选择器70的导通状态,以及通过第二引脚IO2模拟少量的TDI信号(例如1bit的数据)。也即是,TMS信号和大部分的TDI信号均可以由控制电路10内部的硬件控制器生成,仅少量信号需要由控制电路10内部的软件生成。由于硬件控制器生成信号的效率较高,因此基于该示例提供的接口转接方式可以确保控制电路10向JTAG电路20传输信号的效率较高,进而可以确保启动代码30a的获取效率较高。
如图10所示,在该示例中,安全启动装置10还可以包括第一限流电阻R1、第二限流电阻R2、第一下拉电阻R3和第二下拉电阻R4。其中,第一限流电阻R1的一端与SCK引脚连接,另一端与TCK引脚连接。第二限流电阻R2的一端与MOSI引脚连接,另一端与第二多路选择器70的第一端I21连接。第一下拉电阻R3的一端与TMS引脚连接,另一端接地(ground,GND);第二下拉电阻R4的一端与TDI引脚连接,另一端接地。
该第一限流电阻R1用于降低SCK引脚与TCK引脚之间的电流大小,该第二限流电阻R2用于降低MOSI引脚与第二多路选择器70之间的电流大小。由此,可以有效降低该安全启动装置的功耗。该第一下拉电阻R3可以用于确保该TMS引脚的电平的稳定性,第二下拉电阻R4可以用于确保TDI引脚的电平的稳定性。
在本申请实施例中,该控制电路10还可以与用于加载该启动代码30a的处理器连接。例如,对于图3所示的场景,该用于加载启动代码30a的处理器即为第二处理器60;对于图4所示的场景,该用于加载启动代码30a的处理器即为集成有JTAG电路20的第一处理器40。
控制电路10在采用信任根10a校验启动代码30a后,若确定该启动代码30a校验通过,则可以确定该启动代码30a满足安全启动的要求,进而可以控制该用于加载启动代码30a的处理器启动。该处理器启动后即可从非易失性存储器30中获取并加载启动代码30a,以实现设备的安全启动。
控制电路10若确定启动代码30a校验未通过,则可以确定该启动代码30a不满足安全启动的要求,进而可以禁止该处理器启动。由于处理器无法启动,因此无法加载启动代码30a,相应的,设备启动失败。可以理解的是,控制电路10在确定启动代码30a校验通过之前,均可以禁止该处理器启动。
示例的,参考图3和图4,该控制电路10还具有第二控制引脚PIN2,该第二控制引脚PIN2可以与处理器(第一处理器40或第二处理器60)的复位(reset,RST)引脚连接。控制电路10上电后可以先向该RST引脚传输第三电平的复位信号,以禁止处理器启动。控制电路10获取到启动代码30a并确定该启动代码30a校验通过后,可以向该RST引脚传输第四电平的释放信号,以使得该处理器启动并加载启动代码。若控制电路10确定启动代码30a校验未通过,则可以继续向该RST引脚传输第三电平的复位信号,以禁止处理器启动。其中,该第二控制引脚PIN2可以为控制电路10的GPIO引脚。该第三电平相对于该第四电平可以为高电平。
在本申请实施例中,控制电路10在确定启动代码30a校验未通过时,除了可以禁止处理器启动,还可以通过不可编程电路20将非易失性存储器30中的启动代码30a擦除。由此,即使处理器误启动也无法加载该启动代码30a,从而进一步确保了安全启动的可靠性。
一方面,对于该不可编程电路20为JTAG电路的场景,控制电路10可以先通过上述步骤S11、步骤S13和步骤S15所示的方法,或者上述步骤S21、步骤S23和步骤S25所示的方法,控制该JTAG电路20的状态为移位DR状态。
之后,作为一种可能的示例,控制电路10可以向JTAG电路20发送地址信号和擦除指令。该地址信号用于指示启动代码30a在非易失性存储器30中的存储地址,该擦除指令用于指示删除该地址信号指示的存储位置处的数据。JTAG电路20通过第二接口I2将该地址信号和擦除指令传输至非易失性存储器30后,非易失性存储器30即可删除该启动代码30a。其中,JTAG电路20通过第二接口I2向非易失性存储器30传输地址信号和擦除指令的过程可以参考上述步骤S18和步骤S28的相关描述,此处不再赘述。
作为另一种可能的示例,控制电路10可以向该JTAG电路20发送地址信号、写使能信号和擦除数据。该地址信号用于指示启动代码30a在非易失性存储器30中的存储地址,该写使能信号用于指示在该地址信号指示的存储位置处写入该擦除数据。JTAG电路20通过第二接口I2将地址信号、写使能信号和擦除数据传输至非易失性存储器30后,非易失性存储器30即可将该擦除数据存储至启动代码30a的存储位置,即非易失性存储器30可以采用该擦除数据覆盖启动代码30a,从而实现对启动代码30a的擦除。其中,JTAG电路20通过第二接口I2向非易失性存储器30传输地址信号、写使能信号和擦除数据的过程可以参考上述步骤S17和步骤S19的相关描述,此处不再赘述。
可以理解的是,该擦除数据是用于覆盖启动代码30a的数据,其数据内容可以是随机生成的,或者可以是全0或全1的数据。
另一方面,对于该不可编程电路20为串并转换电路的场景,控制电路10可以直接通过该串并转换电路20向非易失性存储器30发送地址信号和擦除指令,以指示非易失性存储器30将该启动代码30a擦除。或者,控制电路10可以直接通过该串并转换电路20向非易失性存储器30发送地址信号、写使能信号和擦除数据,以指示非易失性存储器30采用该擦除数据覆盖该启动代码30a擦除。
作为一种可能的实现方式,本申请实施例提供的安全启动装置的产品形态可以为芯片。在该实现方式中,安全启动装置至少包括控制电路10和不可编程电路20,且还可以包括第一多路选择器50和第二多路选择器70中的至少一个。并且,在该实现方式中,非易失性存储器30可以独立于该安全启动装置,即该安全启动装置不包括非易失性存储器30。若不可编程电路20集成在用于加载启动代码30a的处理器(例如上文的第一处理器40),则该安全启动装置可以包括该处理器;若不可编程电路20独立于用于加载启动代码30a的处理器(例如上文的第二处理器60),则该安全启动装置可以不包括该处理器。
作为另一种可能的实现方式,本申请实施例提供的安全启动装置的产品形态可以为单板。在该实现方式中,安全启动装置除了包括控制电路10和不可编程电路20,还可以包括非易失性存储器30,和/或,用于加载启动代码30a的处理器。例如,该安全启动装置可以包括第一处理器40或第二处理器60。
在该实现方式中,安全启动装置还可以包括该第一多路选择器50和第二多路选择器70中的至少一个。并且,该安全启动装置包括的各个器件均可以集成在一个电路板上。
作为又一种可能的实现方式,本申请实施例提供的安全启动装置的产品形态可以为设备,该设备可以为服务器、终端设备或交换设备等。其中,终端设备可以包括计算机和IoT设备等,交换设备可以包括交换机和路由器等。
在该实现方式中,该安全启动装置不仅包括控制电路10、不可编程电路20、非易失性存储器30和用于加载启动代码30a的处理器,还可以包括其他部件。例如,还可以包括用于封装上述各个器件的外壳,和/或,用于为上述各个器件供电的供电电路等。
综上所述,本申请实施例提供了一种安全启动装置,该安全启动装置中的控制电路能够通过不可编程电路获取非易失性存储器中存储的启动代码,并采用信任根校验该启动代码。由此,即使用于加载该启动代码的处理器中未内置信任根,也可以通过控制电路实现对启动代码的校验,从而有效降低了安全启动过程对处理器性能的依赖,提高了安全启动的灵活性。
并且,由于该安全启动装置中的不可编程电路能够通过两种不同类型的接口分别与控制电路和非易失性存储器连接,因此即使控制电路不具备与非易失性存储器相匹配的接口,也能够通过该不可编程电路获取到非易失性存储器中的启动代码。由此,有效降低了安全启动过程对控制电路的接口协议类型的要求,提高了安全启动方案的应用灵活性。又由于该不可编程电路不能够被编程,因此能够确保通过该不可编程电路获取启动代码时的可靠性,进而确保校验过程的可信度较高,满足安全启动的要求。
本申请实施例提供了一种安全启动方法,该方法可以应用于上述实施例提供的安全启动装置,例如可以应用于图2至图4中任一附图所示的装置。如图11所示,该安全启动方法包括:
步骤111、控制电路通过不可编程电路获取非易失性存储器中存储的启动代码。
在本申请实施例中,控制电路在上电后,可以先通过不可编程电路获取非易失性存储器中存储的启动代码。其中,该控制电路可以为MCU。
步骤112、控制电路采用信任根校验该启动代码。
控制电路可以采用其内置的信任根校验启动代码,由此即使用于加载该启动代码的处理器中未内置信任根,也可以由控制电路实现对启动代码的片外校验,从而有效降低了安全启动方案对处理器性能的依赖,提高了安全启动的灵活性。
该控制电路10还可以与用于加载启动代码30a的处理器连接,例如,参考图3,控制电路10可以与第二处理器60连接,或者参考图4,控制电路10可以与第一处理器40连接。相应的,继续参考图11,该方法还可以包括:
步骤113、控制电路基于该启动代码校验通过,控制处理器启动。
控制电路若确定启动代码校验通过,则可以确定该启动代码满足安全启动的要求,因此可以控制用于加载启动代码的处理器启动。该处理器启动后即可从非易失性存储器中获取启动代码,并可以加载该启动代码以进行后续的校验流程。例如,参考图1,该处理器可以加载启动代码并对加载程序、OS和APP进行逐级校验。
该控制电路可以与处理器的复位引脚连接。控制电路在上电后可以向该复位引脚传输第三电平的复位信号,以禁止该处理器启动,也即是,将该处理器复位。控制电路在获取到启动代码,并确定该启动代码校验通过后,则可以向处理器的复位引脚传输第四电平的释放信号,以控制处理器启动。其中,该第三电平相对于第四电平可以为高电平。
步骤114、控制电路基于该启动代码校验未通过,禁止处理器启动。
控制电路若确定该启动代码校验未通过,则可以确定该启动代码不满足安全启动的要求,因此可以禁止处理器启动。例如,该控制电路可以持续向处理器的复位引脚传输第三电平的复位信号,以禁止该处理器启动。
如图11所示,该方法还可以包括:
步骤115、控制电路基于该启动代码校验未通过,通过该不可编程电路将非易失性存储器中存储的启动代码擦除。
控制电路若确定该启动代码校验未通过,还可以将该启动代码擦除。由此,即使处理器误启动也无法加载该启动代码,从而进一步确保了安全启动的可靠性。
例如,控制电路可以通过不可编程电路向非易失性存储器发送擦除指令,非易失性存储器可以基于该擦除指令擦除(即删除)该启动代码。
或者,控制电路可以通过不可编程电路向非易失性存储器发送地址信号、写使能信号和擦除数据,其中,该地址信号用于指示启动代码在非易失性存储器中的存储地址。非易失性存储器可以基于该地址信号和写使能信号,在启动代码的存储位置处写入该擦除数据。也即是,非易失性存储器可以采用该擦除数据覆盖启动代码,从而实现对启动代码的擦除。
在一种具体的实现方式中,该不可以编程电路可以为串并转换电路,该串并转换电路具有第一接口和第二接口,且该第一接口的接口协议类型可以为SPI,该第二接口的接口协议类型可以为LBUS。
由于该串并转换电路能够实现SPI与LBUS的接口协议转换,因此该控制电路可以直接通过串并转换电路获取到非易失性存储器中存储的启动代码。
在另一种具体的实现方式中,该不可编程电路可以为JTAG电路,该JTAG电路可以集成在电子器件中,并可以通过该电子器件的第二接口与非易失性存储器连接。其中,该电子器件可以为CPLD或者第一处理器。
对于该不可编程电路为JTAG电路的场景,作为一种可能的示例,上述步骤111可以包括:控制电路控制JTAG电路的工作模式为边界扫描模式,并获取启动代码。
可以理解的是,JTAG电路处于边界扫描模式时,JTAG电路所属电子器件的第二接口与该电子器件的内部逻辑电路隔离。JTAG电路能够捕获该第二接口接收到的启动代码,并将该启动代码传输至控制电路。
其中,控制电路控制该JTAG电路的工作模式为边界扫描模式的过程可以参考上述步骤S11至S14的描述,控制电路在JTAG电路处于边界扫描模式时获取启动代码的过程可以参考上述步骤S15和S20的描述,此处不再赘述。
对于该不可编程电路为JTAG电路,且该JTAG电路集成在第一处理器中的场景,该第一处理器中集成的存储器控制器具有与非易失性存储器连接的第二接口。相应的,作为另一种可能的示例,上述步骤111可以包括:控制电路控制该JTAG电路的工作模式为控制器控制模式,并获取该启动代码。
可以理解的是,JTAG电路处于控制器控制模式时,JTAG电路能够接管该存储器控制器,进而可以获取该存储器控制器的第二接口接收到的启动代码,并将获取到的启动代码传输至控制电路。
其中,控制电路控制该JTAG电路的工作模式为控制器控制模式的过程可以参考上述步骤S21至S24的描述,控制电路在JTAG电路处于控制器控制模式时获取启动代码的过程可以参考上述步骤S25和S29的描述,此处不再赘述。
在本申请实施例中,对于该第一接口的接口协议类型为JTAG,控制电路的第三接口的接口协议类型为SPI的场景,即控制电路的SPI与JTAG电路的JTAG接口连接的场景,上述步骤111所示的通过不可编程电路获取启动代码的过程还可以包括:控制电路将SPI的接口协议转换为该第一接口的接口协议。也即是,控制电路在通过JTAG电路获取启动代码的过程中,还需要实现SPI与JTAG的接口协议转接。
作为一种可能的示例,参考图9,该控制电路还具有第一IO引脚。JTAG接口的TCK引脚与SPI的SCK引脚连接,JTAG接口的TDO引脚与SPI的MISO引脚连接。JTAG接口的TDI引脚和TMS引脚中的一个引脚与SPI的MOSI引脚连接,TDI引脚和TMS引脚中的另一个引脚与该第一IO引脚IO1连接。
在该示例中,控制电路将SPI的接口协议转换为JTAG接口的接口协议的过程可以包括:
S31、控制电路通过SCK引脚向TCK引脚发送TCK信号。
控制电路可以通过SCK引脚模拟TCK信号,并将该TCK信号加载至JTAG接口的TCK引脚。
S32、控制电路通过MISO引脚接收来自TDO引脚的TDO信号。
由于SPI中的MISO引脚为用于接收数据的引脚,JTAG接口中的TDO引脚为用于输出数据的引脚,因此控制电路可以通过其MISO引脚接收来自JTAG接口的TDO引脚的TDO信号。
S33、控制电路通过MOSI引脚向该TDI引脚和该TMS引脚中的一个引脚发送信号。
SPI中的MOSI引脚为用于输出数据的引脚,因此控制电路可以通过该MOSI引脚向该TDI引脚和该TMS引脚中的一个引脚发送信号,即控制电路可以通过MOSI引脚模拟用于加载至TDI引脚和该TMS引脚中的一个引脚的信号。
S34、控制电路通过第一IO引脚向TDI引脚和TMS引脚中的另一个引脚发送信号。
控制电路还可以采用SPI之外的第一IO引脚作为辅助引脚,并采用该辅助引脚向TDI引脚和TMS引脚中的另一个引脚发送信号,即控制电路可以通过该辅助引脚模拟用于加载至该另一个引脚的信号。
作为另一种可能的示例,参考图10,该安全启动装置还可以包括:第二多路选择器;该控制电路还具有第一IO引脚IO1和第二IO引脚IO2;SPI的SCK引脚与JTAG接口的TCK引脚连接,SPI的MISO引脚与JTAG接口的TDO引脚连接。SPI的MOSI引脚与第二多路选择器的第一端I21连接,第二多路选择器的第二端I22与JTAG接口的TMS引脚连接,第二多路选择器的第三端I23与JTAG接口的TDI引脚连接,第二多路选择器的控制端C21与第一IO引脚IO1连接。第二IO引脚IO2与该TDI引脚连接。
在该示例中,控制电路将SPI的接口协议转换为JTAG接口的接口协议的过程可以包括:
S41、控制电路通过SCK引脚向TCK引脚发送TCK信号。
该步骤S41的实现过程可以参考上述步骤S31,此处不再赘述。
S42、控制电路通过MISO引脚接收来自TDO引脚的TDO信号。
该步骤S42的实现过程可以参考上述步骤S32,此处不再赘述。
S43、控制电路通过第一IO引脚控制第二多路选择器的第一端与第三端导通,并通过MOSI引脚向该TDI引脚发送TDI信号;或者,控制电路通过第一IO引脚控制第二多路选择器的第一端与第二端导通,通过MOSI引脚向TMS引脚发送TMS信号,并通过第二IO引脚向TMS引脚发送TDI信号。
在本申请实施例中,当控制电路需要向JTAG接口的TDI引脚发送TDI信号时,可以先通过第一IO引脚控制第二多路选择器的第一端与第三端导通,然后再通过MOSI引脚模拟TDI信号,并将该TDI信号通过第二多路选择器加载至TDI引脚。其中,该TDI信号可以包括第一指令,第二指令,地址信号和控制信号,移位数据或擦除数据等。
当控制电路需要向JTAG接口的TMS引脚发送TMS信号时,可以先通过第一IO引脚控制第二多路选择器的第一端与第二端导通,然后再通过MOSI引脚模拟TMS信号,并将该TMS信号通过第二多路选择器加载至TMS引脚。其中,该TMS信号可以包括第一TMS信号或第二TMS信号。由于第二多路选择器将MOSI引脚与TMS引脚导通后,控制电路可能还需向TDI引脚传输TDI信号,此时,即可通过该第二IO引脚IO2向TDI引脚传输TDI信号。
可以理解的是,上述方法实施例中各步骤的执行顺序可以根据情况调节,步骤也可以根据情况增减。例如,上述步骤115可以根据情况删除,或者步骤115可以与步骤114同步执行。
综上所述,本申请实施例提供了一种安全启动装方法,安全启动装置中的控制电路能够通过不可编程电路获取非易失性存储器中存储的启动代码,并采用信任根校验该启动代码。由此,即使用于加载该启动代码的处理器中未内置信任根,也可以通过控制电路实现对启动代码的校验,从而有效降低了安全启动过程对处理器性能的依赖,提高了安全启动的灵活性。
并且,由于该安全启动装置中的不可编程电路能够通过两种不同类型的接口分别与控制电路和非易失性存储器连接,因此即使控制电路不具备与非易失性存储器相匹配的接口,也能够通过该不可编程电路获取到非易失性存储器中的启动代码。由此,有效降低了安全启动过程对控制电路的接口协议类型的要求,提高了安全启动方案的应用灵活性。又由于该不可编程电路不能够被编程,因此能够确保通过该不可编程电路获取启动代码时的可靠性,进而确保校验过程的可信度较高,满足安全启动的要求。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上文描述的方法实施例中各步骤的实现过程可以参考前述安全启动装置实施例中的相关描述,在此不再赘述。
应理解的是,上述方法实施例提供中由控制电路执行的步骤也可以通过软件实现,当通过软件实现上述步骤时,控制电路中可以包括用于实现上述步骤的软件模块。
图12是本申请实施例提供的一种安全启动装置中的控制电路的结构示意图,如图12所示,该控制电路10可以包括:存储模块101、通信模块102和校验模块103。该安全启动装置中的不可编程电路20可以通过第一接口I1与该通信模块102连接,且该不可编程电路20通过第二接口I2与非易失性存储器30连接,该第一接口I1和第二接口I2的接口协议类型不同。
其中,存储模块101,用于存储信任根。
通信模块102,用于通过该不可编程电路20获取该非易失性存储器30中存储的启动代码。该通信模块102的功能实现可以参考上述步骤111的相关描述。
校验模块103,用于采用该信任根校验该启动代码。该校验模块103的功能实现可以参考上述步骤112的相关描述。
该不可编程电路为JTAG电路,该通信模块102可以用于:控制该JTAG电路的工作模式为边界扫描模式,并获取该启动代码。
该通信模块102可以用于:向该JTAG电路发送第一TMS信号,以控制该JTAG电路的状态为移位IR状态;向该JTAG电路发送第一指令,以控制该JTAG电路的工作模式为边界扫描模式。该通信模块102的功能实现还可以参考上述步骤S11至步骤S14的相关描述。
该通信模块102可以用于:向该JTAG电路发送第二TMS信号,以控制该JTAG电路的状态为移位DR状态;向该JTAG电路发送地址信号和控制信号,该地址信号用于指示该启动代码在非易失性存储器中的存储地址,该控制信号用于指示读取该非易失性存储器中的数据;向该JTAG电路发送移位数据,获取该启动代码。该通信模块102的功能实现还可以参考上述步骤S15至步骤S20的相关描述。
该不可编程电路为JTAG电路,且该JTAG电路集成在第一处理器中,该第一处理器中还集成有存储器控制器,该存储器控制器包括第二接口;该通信模块102可以用于:控制该JTAG电路的工作模式为控制器控制模式,并获取该启动代码。
该通信模块102可以用于:向该JTAG电路发送第一TMS信号,以控制该JTAG电路的状态为移位IR状态;向该JTAG电路发送第二指令,以控制该JTAG电路的工作模式为控制器控制模式。该通信模块102的功能实现还可以参考上述步骤S21至步骤S24的相关描述。
该通信模块102可以用于:向JTAG电路发送第二TMS信号,以控制该JTAG电路的状态为移位DR状态;向JTAG电路发送地址信号和控制信号,该地址信号用于指示启动代码在该非易失性存储器中的存储地址,该控制信号用于指示读取该非易失性存储器中的数据;接收该JTAG电路发送的启动代码,该启动代码是该JTAG电路通过存储器控制器的第二接口获取到的。该通信模块102的功能实现还可以参考上述步骤S25至步骤S29的相关描述。
该不可编程电路包括第一接口,该第一接口的协议类型为JTAG,且该第一接口与通信模块102的SPI连接;该通信模块102还可以用于将SPI的接口协议转换为该第一接口的接口协议,即实现SPI与JTAG的接口协议转换。
作为一种可能的示例,该控制电路10中的通信模块102还具有第一IO引脚。参考图9,JTAG接口的TCK引脚与SPI的SCK引脚连接,JTAG接口的TDO引脚与SPI的MISO引脚连接。JTAG接口的TDI引脚和TMS引脚中的一个引脚与SPI的MOSI引脚连接,TDI引脚和TMS引脚中的另一个引脚与该第一IO引脚IO1连接。
在该示例中,通信模块102可以用于:通过SCK引脚向TCK引脚发送TCK信号;通过MISO引脚接收来自TDO引脚的TDO信号;通过MOSI引脚向TDI引脚和该TMS引脚中的一个引脚发送信号;通过第一IO引脚向TDI引脚和TMS引脚中的另一个引脚发送信号。
该通信模块102的功能实现还可以参考上述步骤S31至步骤S34的相关描述。
作为另一种可能的示例,参考图10,该安全启动装置10还可以包括:第二多路选择器70。该控制电路10中的通信模块102还具有第一IO引脚IO1和第二IO引脚IO2。如图10所示,在该示例中,SPI的SCK引脚与JTAG接口的TCK引脚连接,SPI的MISO引脚与JTAG接口的TDO引脚连接。SPI的MOSI引脚与第二多路选择器70的第一端I21连接,第二多路选择器70的第二端I22与JTAG接口的TMS引脚连接,第二多路选择器70的第三端I23与JTAG接口的TDI引脚连接,第二多路选择器70的控制端C21与第一IO引脚IO1连接。第二IO引脚IO2与该TDI引脚连接。
在该示例中,通信模块102可以用于:通过SCK引脚向TCK引脚发送TCK信号;通过MISO引脚接收来自TDO引脚的TDO信号;通过第一IO引脚控制第二多路选择器的第一端与第三端导通,并通过MOSI引脚向TDI引脚发送TDI信号;或者,通过第一IO引脚控制第二多路选择器的第一端与第二端导通,通过MOSI引脚向TMS引脚发送TMS信号,并通过第二IO引脚向该TMS引脚发送TDI信号。
该通信模块102的功能实现还可以参考上述步骤S41至步骤S43的相关描述。
该通信模块102,还可以用于基于该启动代码校验未通过,通过该不可编程电路将该非易失性存储器中存储的该启动代码擦除。该通信模块102的功能实现还可以参考上述步骤115的相关描述。
本申请实施例还提供了另一种控制电路,该控制电路可以包括可编程逻辑电路和/或程序指令,该控制电路用于实现上述方法实施例中由控制电路执行的步骤。例如可以用于实现上述步骤111至步骤115所示的方法,并且还可以实现上述步骤S11、步骤S13、步骤S15、步骤S17和步骤S19所示的方法,或者还可以实现上述步骤S21、步骤S23、步骤S25和步骤S27所示的方法。
本申请实施例还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,该指令由安全启动装置执行以实现上述方法实施例提供的安全启动方法。例如可以用于实现上述步骤111至步骤115所示的方法,并且还可以实现上述步骤S11至步骤S20所示的方法,或者步骤S21至步骤S29所示的方法。
本申请实施例还提供了一种包含指令的计算机程序产品,当该计算机程序产品在安全启动装置上运行时,使得安全启动装置执行上述方法实施例提供的安全启动方法。例如可以执行上述步骤111至步骤115所示的方法,并且还可以执行上述步骤S11至步骤S20所示的方法,或者步骤S21至步骤S29所示的方法。
上述实施例,可以全部或部分地通过软件、硬件、固件或其他任意组合来实现。当使用软件实现时,上述实施例可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载或执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以为通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集合的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质。半导体介质可以是固态硬盘(solid state drive,SSD)。
本申请中术语“至少一个”的含义是指一个或多个,本申请中术语“多个”的含义是指两个或两个以上,例如,多个IO引脚是指两个或两个以上的IO引脚。
在本文中提及的“和/或”,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
以上所述,仅为本申请的实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。

Claims (36)

1.一种安全启动装置,其特征在于,所述安全启动装置包括:控制电路和不可编程电路;
所述不可编程电路通过第一接口与所述控制电路连接,所述不可编程电路通过第二接口与非易失性存储器连接,所述第一接口和所述第二接口的接口协议类型不同;
所述控制电路中存储有信任根,所述控制电路用于通过所述不可编程电路获取所述非易失性存储器中存储的启动代码,以及采用所述信任根校验所述启动代码。
2.根据权利要求1所述的安全启动装置,其特征在于,所述不可编程电路通过所述第一接口与所述控制电路的第三接口连接,并通过所述第二接口与所述非易失性存储器的第四接口连接,所述第三接口的接口协议类型为串行外设接口SPI,所述第四接口的接口协议类型为局部总线LBUS。
3.根据权利要求1或2所述的安全启动装置,其特征在于,所述不可编程电路为联合测试工作组JTAG电路,所述JTAG电路包括所述第一接口,且所述第一接口的接口协议类型为JTAG。
4.根据权利要求3所述的安全启动装置,其特征在于,所述JTAG电路集成在电子器件中。
5.根据权利要求4所述的安全启动装置,其特征在于,所述电子器件包括复杂可编程逻辑器件CPLD或第一处理器,所述电子器件包括所述第二接口。
6.根据权利要求3至5任一所述的安全启动装置,其特征在于,所述通过所述不可编程电路获取所述非易失性存储器中存储的启动代码,包括:
控制所述JTAG电路的工作模式为边界扫描模式;
获取所述启动代码。
7.根据权利要求6所述的安全启动装置,其特征在于,所述控制所述JTAG电路的工作模式为边界扫描模式,包括:
向所述JTAG电路发送第一测试模式选择信号,以控制所述JTAG电路的状态为移位指令寄存器IR状态;
向所述JTAG电路发送第一指令,以控制所述JTAG电路的工作模式为所述边界扫描模式。
8.根据权利要求6或7所述的安全启动装置,其特征在于,所述获取所述启动代码,包括:
向所述JTAG电路发送第二测试模式选择信号,以控制所述JTAG电路的状态为移位数据寄存器DR状态;
向所述JTAG电路发送地址信号和控制信号,所述地址信号用于指示所述启动代码在所述非易失性存储器中的存储地址,所述控制信号用于指示读取所述非易失性存储器中的数据;
向所述JTAG电路发送移位数据,获取所述启动代码。
9.根据权利要求5至8任一所述的安全启动装置,其特征在于,所述JTAG电路集成在CPLD中,且所述安全启动装置还包括:第一多路选择器;
所述控制电路分别与所述第一多路选择器的控制端和第一端连接,所述第一多路选择器的第二端与第二处理器的JTAG接口连接,所述第一多路选择器的第三端与所述JTAG电路的所述第一接口连接;
所述控制电路用于控制所述第一多路选择器的第三端与第一端导通,或者控制所述第一多路选择器的第三端与第二端导通;
其中,所述第一多路选择器的第一端、第二端和第三端均为JTAG接口。
10.根据权利要求5所述的安全启动装置,其特征在于,所述JTAG电路集成在所述第一处理器中,所述第一处理器中还集成有存储器控制器,所述存储器控制器包括所述第二接口;
所述通过所述不可编程电路获取所述非易失性存储器中存储的启动代码,包括:
控制所述JTAG电路的工作模式为控制器控制模式;
获取所述启动代码。
11.根据权利要求10所述的安全启动装置,其特征在于,所述控制所述JTAG电路的工作模式为控制器控制模式,包括:
向所述JTAG电路发送第一测试模式选择信号,以控制所述JTAG电路的状态为移位IR状态;
向所述JTAG电路发送第二指令,以控制所述JTAG电路的工作模式为所述控制器控制模式。
12.根据权利要求10或11所述的安全启动装置,其特征在于,所述获取所述启动代码,包括:
向所述JTAG电路发送第二测试模式选择信号,以控制所述JTAG电路的状态为移位DR状态;
向所述JTAG电路发送地址信号和控制信号,所述地址信号用于指示所述启动代码在所述非易失性存储器中的存储地址,所述控制信号用于指示读取所述非易失性存储器中的数据;
接收所述JTAG电路发送的所述启动代码,所述启动代码是所述JTAG电路通过所述存储器控制器的所述第二接口获取到的。
13.根据权利要求3至12任一所述的安全启动装置,其特征在于,所述第一接口与所述控制电路的SPI连接;
所述控制电路还用于实现所述SPI与所述第一接口的接口协议转换。
14.根据权利要求13所述的安全启动装置,其特征在于,所述安全启动装置还包括:第二多路选择器;所述控制电路还具有第一IO引脚和第二IO引脚;
所述SPI包括串行时钟SCK引脚、主发从收MOSI引脚以及主收从发MISO引脚;所述第一接口包括测试时钟TCK引脚、测试数据输入TDI引脚、测试数据输出TDO引脚以及测试模式选择TMS引脚;
所述SCK引脚与所述TCK引脚连接,所述MISO引脚与所述TDO引脚连接,所述MOSI引脚与所述第二多路选择器的第一端连接,所述第二多路选择器的第二端与所述TMS引脚连接,所述第二多路选择器的第三端与所述TDI引脚连接,所述第二多路选择器的控制端与所述第一IO引脚连接,所述第二IO引脚与所述TDI引脚连接;
所述控制电路用于通过所述第一IO引脚控制所述第二多路选择器的第一端与第三端导通;
或者,所述控制电路用于通过所述第一IO引脚控制所述第二多路选择器的第一端与第二端导通,并通过所述第二IO引脚向所述TDI引脚发送TDI信号。
15.根据权利要求13所述的安全启动装置,其特征在于,所述控制电路还具有第一IO引脚;
所述SPI包括SCK引脚、MOSI引脚以及MISO引脚;所述第一接口包括TCK引脚、TDI引脚、TDO引脚以及TMS引脚;
所述TCK引脚与所述SCK引脚连接,所述TDO引脚与所述MISO引脚连接,所述TDI引脚和所述TMS引脚中的一个引脚与所述MOSI引脚连接,所述TDI引脚和所述TMS引脚中的另一个引脚与所述第一IO引脚连接。
16.根据权利要求1或2所述的安全启动装置,其特征在于,所述不可编程电路为串并转换电路,所述串并转换电路具有所述第一接口和所述第二接口,且所述第一接口的接口协议类型为SPI,所述第二接口的接口协议类型为LBUS。
17.根据权利要求1至16任一所述的安全启动装置,其特征在于,所述控制电路还用于基于所述启动代码校验未通过,通过所述不可编程电路将所述非易失性存储器中存储的所述启动代码擦除。
18.根据权利要求1至17任一所述的安全启动装置,其特征在于,所述控制电路为微控制单元MCU。
19.根据权利要求1至18任一所述的安全启动装置,其特征在于,所述安全启动装置还包括所述非易失性存储器。
20.根据权利要求5,或者权利要求10至12任一所述的安全启动装置,其特征在于,所述安全启动装置还包括所述第一处理器,所述第一处理器与所述非易失性存储器连接。
21.根据权利要求9所述的安全启动装置,其特征在于,所述安全启动装置还包括所述第二处理器,所述第二处理器与所述非易失性存储器连接。
22.一种安全启动方法,其特征在于,应用于安全启动装置,所述安全启动装置包括控制电路和不可编程电路;所述不可编程电路通过第一接口与所述控制电路连接,所述不可编程电路通过第二接口与非易失性存储器连接,所述第一接口和所述第二接口的接口协议类型不同,所述控制电路中存储有信任根;所述方法包括:
所述控制电路通过所述不可编程电路获取所述非易失性存储器中存储的启动代码;
所述控制电路采用所述信任根校验所述启动代码。
23.根据权利要求22所述的方法,其特征在于,所述不可编程电路为联合测试工作组JTAG电路,所述控制电路通过所述不可编程电路获取所述非易失性存储器中存储的启动代码,包括:
所述控制电路控制所述JTAG电路的工作模式为边界扫描模式;
所述控制电路获取所述启动代码。
24.根据权利要求23所述的方法,其特征在于,所述控制电路控制所述JTAG电路的工作模式为边界扫描模式,包括:
所述控制电路向所述JTAG电路发送第一测试模式选择信号;
所述JTAG电路基于所述第一测试模式选择信号,将状态设置为移位指令寄存器IR状态;
所述控制电路向所述JTAG电路发送第一指令;
所述JTAG电路基于所述第一指令,将工作模式设置为所述边界扫描模式。
25.根据权利要求23或24所述的方法,其特征在于,所述控制电路获取所述启动代码,包括:
所述控制电路向所述JTAG电路发送第二测试模式选择信号;
所述JTAG电路基于所述第二测试模式选择信号,将状态设置为移位数据寄存器DR状态;
所述控制电路向所述JTAG电路发送地址信号和控制信号,所述地址信号用于指示所述启动代码在所述非易失性存储器中的存储地址,所述控制信号用于指示读取所述非易失性存储器中的数据;
所述JTAG电路将所述地址信号和所述控制信号加载至所述第二接口,并获取所述第二接口接收到的所述启动代码;
所述控制电路向所述JTAG电路发送移位数据;
所述JTAG电路基于所述移位数据,将获取到的所述启动代码发送至所述控制电路。
26.根据权利要求22所述的方法,其特征在于,所述不可编程电路为JTAG电路,且所述JTAG电路集成在第一处理器中,所述第一处理器中还集成有存储器控制器,所述存储器控制器包括所述第二接口;
所述控制电路通过所述不可编程电路获取所述非易失性存储器中存储的启动代码,包括:
所述控制电路控制所述JTAG电路的工作模式为控制器控制模式;
所述控制电路获取所述启动代码。
27.根据权利要求26所述的方法,其特征在于,所述控制电路控制所述JTAG电路的工作模式为控制器控制模式,包括:
所述控制电路向所述JTAG电路发送第一测试模式选择信号;
所述JTAG电路基于所述第一测试模式选择信号,将状态设置为移位IR状态;
所述控制电路向所述JTAG电路发送第二指令;
所述JTAG电路基于所述第二指令,将工作模式设置为所述控制器控制模式。
28.根据权利要求26或27所述的方法,其特征在于,所述控制电路获取所述启动代码,包括:
所述控制电路向所述JTAG电路发送第二测试模式选择信号;
所述JTAG电路基于所述第二测试模式选择信号,将状态设置为移位DR状态;
所述控制电路向所述JTAG电路发送地址信号和控制信号,所述地址信号用于指示所述启动代码在所述非易失性存储器中的存储地址,所述控制信号用于指示读取所述非易失性存储器中的数据;
所述JTAG电路将所述地址信号和所述控制信号加载至所述第二接口,并获取所述第二接口接收到的所述启动代码;
所述JTAG电路将获取到的所述启动代码发送至所述控制电路。
29.根据权利要求22至28任一所述的方法,其特征在于,所述不可编程电路包括所述第一接口,所述第一接口的协议类型为JTAG,且所述第一接口与所述控制电路的串行外设接口SPI连接;所述控制电路通过所述不可编程电路获取所述非易失性存储器中存储的启动代码,还包括:
所述控制电路将所述SPI的接口协议转换为所述第一接口的接口协议。
30.根据权利要求29所述的方法,其特征在于,所述安全启动装置还包括:第二多路选择器;所述控制电路还具有第一IO引脚和第二IO引脚;所述SPI包括串行时钟SCK引脚、主发从收MOSI引脚以及主收从发MISO引脚;所述第一接口包括测试时钟TCK引脚、测试数据输入TDI引脚、测试数据输出TDO引脚以及测试模式选择TMS引脚;所述SCK引脚与所述TCK引脚连接,所述MISO引脚与所述TDO引脚连接,所述MOSI引脚与所述第二多路选择器的第一端连接,所述第二多路选择器的第二端与所述TMS引脚连接,所述第二多路选择器的第三端与所述TDI引脚连接,所述第二多路选择器的控制端与所述第一IO引脚连接,所述第二IO引脚与所述TDI引脚连接;
所述控制电路将所述SPI的接口协议转换为所述第一接口的接口协议,包括:
所述控制电路通过所述SCK引脚向所述TCK引脚发送TCK信号;
所述控制电路通过所述MISO引脚接收来自所述TDO引脚的TDO信号;
所述控制电路通过所述第一IO引脚控制所述第二多路选择器的第一端与第三端导通,并通过所述MOSI引脚向所述TDI引脚发送TDI信号;或者,所述控制电路通过所述第一IO引脚控制所述第二多路选择器的第一端与第二端导通,通过所述MOSI引脚向所述TMS引脚发送TMS信号,并通过所述第二IO引脚向所述TMS引脚发送TDI信号。
31.根据权利要求29所述的方法,其特征在于,所述控制电路还具有第一IO引脚;所述SPI包括SCK引脚、MOSI引脚以及MISO引脚;所述第一接口包括TCK引脚、TDI引脚、TDO引脚以及TMS引脚;所述TCK引脚与所述SCK引脚连接,所述TDO引脚与所述MISO引脚连接,所述TDI引脚和所述TMS引脚中的一个引脚与所述MOSI引脚连接,所述TDI引脚和所述TMS引脚中的另一个引脚与所述第一IO引脚连接;
所述控制电路将所述SPI的接口协议转换为所述第一接口的接口协议,包括:
所述控制电路通过所述SCK引脚向所述TCK引脚发送TCK信号;
所述控制电路通过所述MISO引脚接收来自所述TDO引脚的TDO信号;
所述控制电路通过所述MOSI引脚向所述TDI引脚和所述TMS引脚中的一个引脚发送信号;
所述控制电路通过所述第一IO引脚向所述TDI引脚和所述TMS引脚中的另一个引脚发送信号。
32.根据权利要求22所述的方法,其特征在于,所述不可编程电路为串并转换电路,所述串并转换电路具有所述第一接口和所述第二接口,且所述第一接口的接口协议类型为SPI,所述第二接口的接口协议类型为局部总线LBUS。
33.根据权利要求22至32任一所述的方法,其特征在于,所述方法还包括:
所述控制电路基于所述启动代码校验未通过,通过所述不可编程电路将所述非易失性存储器中存储的所述启动代码擦除。
34.根据权利要求22至33任一所述的方法,其特征在于,所述控制电路为微控制单元MCU。
35.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有指令,所述指令由处理器执行时,实现如权利要求22至34任一所述的方法。
36.一种计算机程序产品,其特征在于,所述计算机程序产品包含指令,所述计算机程序产品在计算机上运行时,实现如权利要求22至34任一所述的方法。
CN202110730043.5A 2021-05-12 2021-06-29 安全启动装置及方法 Pending CN115344308A (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
PCT/CN2022/089774 WO2022237551A1 (zh) 2021-05-12 2022-04-28 安全启动装置及方法
EP22806520.7A EP4318284A4 (en) 2021-05-12 2022-04-28 SECURE PRIMING DEVICE AND METHOD
US18/507,879 US20240095366A1 (en) 2021-05-12 2023-11-13 Secure boot apparatus and method

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN202110519403 2021-05-12
CN2021105194037 2021-05-12

Publications (1)

Publication Number Publication Date
CN115344308A true CN115344308A (zh) 2022-11-15

Family

ID=83977577

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110730043.5A Pending CN115344308A (zh) 2021-05-12 2021-06-29 安全启动装置及方法

Country Status (4)

Country Link
US (1) US20240095366A1 (zh)
EP (1) EP4318284A4 (zh)
CN (1) CN115344308A (zh)
WO (1) WO2022237551A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117786666A (zh) * 2024-02-26 2024-03-29 九音科技(南京)有限公司 功能代码的启动校验方法、装置、电子设备及存储介质

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116010326A (zh) * 2022-12-30 2023-04-25 华勤技术股份有限公司 信号控制电路和信号控制方法
US12092690B2 (en) * 2022-12-31 2024-09-17 Siliconch Systems Pvt Ltd Emulation of JTAG/SCAN test interface protocols using SPI communication device
CN116719583B (zh) * 2023-08-08 2023-11-10 飞腾信息技术有限公司 一种启动方法、可编程逻辑器件、计算设备及存储介质

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101794362A (zh) * 2010-01-22 2010-08-04 华北计算技术研究所 计算机用可信计算信任根设备及计算机
CN103034812B (zh) * 2011-10-08 2016-08-10 国民技术股份有限公司 一种可信芯片兼容方法、设备及该设备的使用方法
US9600291B1 (en) * 2013-03-14 2017-03-21 Altera Corporation Secure boot using a field programmable gate array (FPGA)
US10796002B1 (en) * 2014-09-08 2020-10-06 Janus Technologies, Inc. Method and apparatus for establishing a root-of-trust path for a secure computer
US11455397B2 (en) * 2018-11-13 2022-09-27 Microchip Technology Incorporated Secure boot assist for devices, and related systems, methods and devices
CN109670319B (zh) * 2018-12-25 2022-04-15 广东浪潮大数据研究有限公司 一种服务器flash安全管理方法及其系统
US11513698B2 (en) * 2019-04-01 2022-11-29 Raytheon Company Root of trust assisted access control of secure encrypted drives
CN110321715A (zh) * 2019-07-08 2019-10-11 北京可信华泰信息技术有限公司 可信度量方法、装置及处理器

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117786666A (zh) * 2024-02-26 2024-03-29 九音科技(南京)有限公司 功能代码的启动校验方法、装置、电子设备及存储介质
CN117786666B (zh) * 2024-02-26 2024-05-31 九音科技(南京)有限公司 功能代码的启动校验方法、装置、电子设备及存储介质

Also Published As

Publication number Publication date
EP4318284A4 (en) 2024-10-16
WO2022237551A1 (zh) 2022-11-17
US20240095366A1 (en) 2024-03-21
EP4318284A1 (en) 2024-02-07

Similar Documents

Publication Publication Date Title
CN115344308A (zh) 安全启动装置及方法
JP6557220B2 (ja) プログラム可能なインタフェースベースの検証及びデバッグ
EP2596423B1 (en) Providing platform independent memory logic
CN107493685B (zh) 经由端口控制器自身的外部端口对端口控制器进行再编程
US8516304B2 (en) Integrated circuit including a programmable logic analyzer with enhanced analyzing and debugging capabilities and a method therefor
US11204857B2 (en) Integrated circuit and application processor
US10481205B2 (en) Robust secure testing of integrated circuits
JP7062409B2 (ja) 自己テスト可能な集積回路装置及び集積回路を自己テストする方法
US7757029B2 (en) On the fly configuration of electronic device with attachable sub-modules
WO2004055670A2 (en) Code download in a system having multiple integrated circuits with jtag capability
US20080163012A1 (en) Apparatus for Configuring a USB PHY to Loopback Mode
CN114020682A (zh) 芯片工作模式的控制方法、装置、芯片和存储介质
CN112634977B (zh) 具有除错存储器接口的芯片及其除错方法
WO2017072500A1 (en) Microprocessor interfaces
US6535974B1 (en) Device and method for noninvasive, user replacement of an inoperable boot program
US20080215870A1 (en) Method and apparatus for loading boot code
US20240220365A1 (en) Error and debug information capturing for a boot process
US20070032999A1 (en) System and method for emulating hardware failures and method of testing system software incorporating the same
Chun et al. ES-debugger: the flexible embedded system debugger based on JTAG technology
CN113608937B (zh) 硬盘背板led无硬盘测试装置及方法
TWI760673B (zh) 電子裝置
CN117667140A (zh) 一种fpga的升级方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination