CN106897623A - 一种支持多安全引导的芯片及其启动方法 - Google Patents
一种支持多安全引导的芯片及其启动方法 Download PDFInfo
- Publication number
- CN106897623A CN106897623A CN201510967023.4A CN201510967023A CN106897623A CN 106897623 A CN106897623 A CN 106897623A CN 201510967023 A CN201510967023 A CN 201510967023A CN 106897623 A CN106897623 A CN 106897623A
- Authority
- CN
- China
- Prior art keywords
- boot
- data
- read
- field information
- safety inspection
- 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.)
- Withdrawn
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/575—Secure boot
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
- G06F8/66—Updates of program code stored in read-only memory [ROM]
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种支持多安全boot的芯片及其启动方法,包括:系统初始化后,从寄存器中读取寄存器值;确定出与所述寄存器值对应的boot操作,并对配置字段信息进行检查;检查通过后,启动所述对应的boot操作读取数据,并对所述数据进行安全认证。
Description
技术领域
本发明涉及嵌入式芯片领域中的引导(boot)技术,尤其涉及一种支持多安全boot的芯片及其启动方法。
背景技术
基带芯片采用嵌入式架构,通过引导代码(bootrom,boot code in read only memory)来负责系统硬件的初始化及二级boot程序的引导加载。同时,bootrom是固化在芯片的内存(ROM)中。而芯片应用的产品领域比较多,如智能机,数据卡等,每一种产品形态都可能使用不同的boot启动方式,在这种情况下,系统的安全性受到越来越多的重视,因此,支持多种安全boot方式的bootrom实现对于手机基带芯片在产品应用方面至关重要。
以往基带芯片主要应用在数据卡产品中,使用的boot启动方式比较单一,包括硬件引导控制器(bootctrl,boot controller)和软件闪存引导(nandflash boot)方式。随着基带芯片的产品应用形态增加,单一的boot方式已无法满足产品要求。
发明内容
为解决上述技术问题,本发明实施例提供了一种支持多安全boot的芯片及其启动方法。
本发明实施例提供的支持多安全boot的芯片启动方法,包括:
系统初始化后,从寄存器中读取寄存器值;
确定出与所述寄存器值对应的boot操作,并对配置字段信息进行检查;
检查通过后,启动所述对应的boot操作读取数据,并对所述数据进行安全认证。
本发明实施例中,所述确定出与所述寄存器值对应的boot操作,并对配置字段信息进行检查;检查通过后,启动所述对应的boot操作读取数据,并对所述数据进行安全认证,包括:
基于Nandflash boot启动boot操作,读取配置字段信息;
基于所述配置字段信息,执行字段信息检查;
当检查通过后,执行Nandflash boot操作,并对所述Nandflash boot操作读取的数据进行安全检查;
当安全检查通过后,正常执行读取的数据、启动操作;当安全检查未通过后,执行通用串行总线设备引导(usb device boot)操作。
本发明实施例中,所述确定出与所述寄存器值对应的boot操作,并对配置字段信息进行检查;检查通过后,启动所述对应的boot操作读取数据,并对所述数据进行安全认证,包括:
从闪存(Nandflash)中读取配置字段信息,获取通用串行总线(usb,universal serial bus)超时时间值;
执行usb device boot操作,并对所述usb device boot操作读取的数据进行安全检查;
当安全检查通过后,正常执行读取的数据、启动操作;当安全检查未通过后,执行Nandflash boot操作。
本发明实施例中,所述确定出与所述寄存器值对应的boot操作,并对配置字段信息进行检查;检查通过后,启动所述对应的boot操作读取数据,并对所述数据进行安全认证,包括:
执行通用串行总线高速集成电路引导(usb hsic boot,universal serial bus high speed intergrated circuit boot)操作并对所述usb hsic boot操作读取的数据进行安全检查;
当安全检查通过后,正常执行读取的数据、启动操作;当安全检查未通过后,执行复位操作。
本发明实施例中,所述确定出与所述寄存器值对应的boot操作,并对配置 字段信息进行检查;检查通过后,启动所述对应的boot操作读取数据,并对所述数据进行安全认证,包括:
执行同步动态输入输出引导(sdio slave boot,synchronous dynamic input output slave boot)操作,并对所述sdio slave boot操作读取的数据进行安全检查;
当安全检查通过后,正常执行读取的数据、启动操作;当安全检查未通过后,执行复位操作。
本发明实施例中,所述确定出与所述寄存器值对应的boot操作,并对配置字段信息进行检查;检查通过后,启动所述对应的boot操作读取数据,并对所述数据进行安全认证,包括:
基于嵌入式多媒体卡引导(emmc boot,embedded multi media card boot)启动boot操作,读取配置字段信息;
基于所述配置字段信息,执行字段信息检查;
当检查通过后,执行emmc boot操作,并对所述emmc boot操作读取的数据进行安全检查;
当安全检查通过后,正常执行读取的数据、启动操作;当安全检查未通过后,执行usb device boot操作。
本发明实施例中,所述确定出与所述寄存器值对应的boot操作,并对配置字段信息进行检查;检查通过后,启动所述对应的boot操作读取数据,并对所述数据进行安全认证,包括:
从emmc中读取配置字段信息,获取usb超时时间值;
执行usb device boot操作,并对所述usb device boot操作读取的数据进行安全检查;
当安全检查通过后,正常执行读取的数据、启动操作;当安全检查未通过后,执行emmc boot操作。
本发明实施例中,所述确定出与所述寄存器值对应的boot操作,并对配置字段信息进行检查;检查通过后,启动所述对应的boot操作读取数据,并对所述数据进行安全认证,包括:
从串行外设接口闪存(spinandflash,serial peripheral interface nandflash)中读取配置字段信息;
基于所述配置字段信息,执行字段信息检查;
当检查通过后,执行spinandflash boot操作,并对所述spinandflash boot操作读取的数据进行安全检查;
当安全检查通过后,正常执行读取的数据、启动操作;当安全检查通过后,执行usb device boot操作。
本发明实施例中,所述确定出与所述寄存器值对应的boot操作,并对配置字段信息进行检查;检查通过后,启动所述对应的boot操作读取数据,并对所述数据进行安全认证,包括:
从spinandflash中读取配置字段信息,获取usb超时时间值;
执行usb device boot操作,并对所述usb device boot操作读取的数据进行安全检查;
当安全检查通过后,正常执行读取的数据、启动操作;当安全检查未通过后,执行spinandflash boot过程。
本发明实施例中,所述确定出与所述寄存器值对应的boot操作,并对配置字段信息进行检查;检查通过后,启动所述对应的boot操作读取数据,并对所述数据进行安全认证,包括:
基于通用同步/异步收发传输器引导(uart boot,universal asynchronous receiver/transmitter boot)启动boot操作。
本发明实施例提供的支持多安全boot的芯片,包括:
第一读取单元,用于当系统初始化后,从寄存器中读取寄存器值;
认证单元,用于确定出与述寄存器对应的boot操作,并对配置字段信息进行检查;
第二读取单元,用于检查通过后,启动所述对应的boot操作读取数据;
执行单元,用于对所述数据进行安全认证。
本发明实施例中,所述执行单元,包括:
第一执行子单元,用于基于Nandflash boot启动boot操作,读取配置字段信息;基于所述配置字段信息,执行字段信息检查;当检查通过后,执行Nandflash boot操作,并对所述Nandflash boot操作读取的数据进行安全检查;当安全检查通过后,正常执行读取的数据、启动操作;当安全检查未通过后,执行usb device boot操作。
本发明实施例中,所述执行单元包括:
第二执行子单元,用于从Nandflash中读取配置字段信息,获取usb超时时间值;执行usb device boot操作,并对所述usb device boot操作读取的数据进行安全检查;当安全检查通过后,正常执行读取的数据、启动操作;当安全检查未通过后,执行Nandflash boot操作。
本发明实施例中,所述执行单元包括:
第三执行子单元,用于执行usb hsic boot操作,并对所述usb hsic boot操作读取的数据进行安全检查;当安全检查通过后,正常执行读取的数据、启动操作;当安全检查未通过后,执行复位操作。
本发明实施例中,所述执行单元包括:
第四执行子单元,用于执行sdio slave boot操作,并对所述sdio slave boot操作读取的数据进行安全检查;当安全检查通过后,正常执行读取的数据、启动操作;当安全检查未通过后,执行复位操作。
本发明实施例中,所述执行单元包括:
第五执行子单元,用于基于emmc boot启动boot操作,读取配置字段信息;基于所述配置字段信息,执行字段信息检查;当检查通过后,执行emmc boot操作,并对所述emmc boot操作读取的数据进行安全检查;当安全检查通过后,正常执行读取的数据、启动操作;当安全检查未通过后,执行usb device boot操作。
本发明实施例中,所述执行单元包括:
第六执行子单元,用于从emmc中读取配置字段信息,获取usb超时时间值;执行usb device boot操作,并对所述usb device boot操作读取的数据进行安 全检查;当安全检查通过后,正常执行读取的数据、启动操作;当安全检查未通过后,执行emmc boot操作。
本发明实施例中,所述执行单元包括:
第七执行子单元,用于从spinandflash中读取配置字段信息;基于所述配置字段信息,执行字段信息检查;当检查通过后,执行spinandflash boot操作,并对所述spinandflash boot操作读取的数据进行安全检查;当安全检查通过后,正常执行读取的数据、启动操作;当安全检查通过后,执行usb device boot操作。
本发明实施例中,所述执行单元包括:
第八执行子单元,用于从spinandflash中读取配置字段信息,获取usb超时时间值;执行usb device boot操作,并对所述usb device boot操作读取的数据进行安全检查;当安全检查通过后,正常执行读取的数据、启动操作;当安全检查未通过后,执行spinandflash boot过程。
本发明实施例中,所述执行单元包括:
第九执行子单元,用于基于uart boot启动boot操作。
本发明实施例的技术方案中,系统初始化后,从寄存器中读取寄存器值;确定出与所述寄存器值对应的boot操作,并对配置字段信息进行检查;检查通过后,启动所述对应的boot操作读取数据,并对所述数据进行安全认证。芯片的bootrom支持多安全boot启动方式,且支持usb boot方式进行版本下载功能,达到了对应多种产品应用及软件版本烧录效果,节省了产品硬件成本及软件版本烧录成本,提高了不同产品使用率及软件版本生产/维修效率、提高了整个系统的安全性等。
附图说明
图1为本发明实施例的支持多安全boot的芯片启动方法的流程示意图;
图2为本发明实施例的支持多安全boot的芯片的结构组成示意图;
图3是本发明实施例的nandflash boot启动流程图;
图4是本发明实施例的usb device boot启动的流程图;
图5是本发明实施例的emmc boot启动流程图;
图6是本发明实施例的sdio slave boot启动流程图;
图7是本发明实施例的spinandflash boot启动流程图;
图8是本发明实施例的usb hsic boot启动流程图;
图9是本发明实施例的bootrom的安全检查流程图。
具体实施方式
为了能够更加详尽地了解本发明实施例的特点与技术内容,下面结合附图对本发明实施例的实现进行详细阐述,所附附图仅供参考说明之用,并非用来限定本发明实施例。
为了克服现有技术中存在的数据卡使用单一boot方式、系统安全性不够和烧录不方便等问题和缺陷,本发明实施例提供了一种支持多安全boot的芯片及其启动方法。在智能机产品中,需求usb hsic boot、sdio slave boot、uart boot等通讯接口方式与应用处理器(AP,Application Processer)芯片对接启动;在数据卡和uFi产品中,需求nandflash boot、emmc boot、spinandflash等外存储方式启动,并使用安全流程检查,具有许可信息才能运行。
另外,芯片在调试生产,测试及市场应用中,会涉及软件版本烧录或更新问题,一般采用烧录器烧录或者使用仿真器烧录,对于烧录器烧录方式,一般都需要特定的硬件设备和软件支持,适用于存储器件(nandflash,emmc等)出厂烧录,对于仿真器烧录,适用于实验室调试阶段使用。而在软件版本烧录或版本更新时,在bootrom中实现usb device boot方式,通过usb口与PC机相连,实现版本烧录和版本更新功能。
图1为本发明实施例的支持多安全boot的芯片启动方法的流程示意图,如图1所示,所述支持多安全boot的芯片启动方法包括以下步骤:
步骤101:系统初始化后,从寄存器中读取寄存器值。
本发明实施例中,芯片复位释放后,芯片中的中央处理器(CPU,Center Processing Unit)从内存(ROM)中开始执行bootrom程序,进行关中断,初始 化栈,设置数据段,初始化计时器和uart。这里,bootrom程序由一些列的bootrom指令组成。
本发明实施例中,从寄存器中读取寄存器值的目的是为了获取与所述寄存器值对应的boot操作。
步骤102:确定出与所述寄存器值对应的boot操作,并对配置字段信息进行检查。
步骤103:检查通过后,启动所述对应的boot操作读取数据,并对所述数据进行安全认证。
本发明实施例中,寄存器值与boot操作间的配置关系不做限定。
下面以其中一种寄存器值与boot操作间的配置关系为例进行说明。
寄存器值为0000:基于Nandflash boot启动boot操作,读取配置字段信息;基于所述配置字段信息,执行字段信息检查;当检查通过后,执行Nandflash boot操作,并对所述Nandflash boot操作读取的数据进行安全检查;当安全检查通过后,正常执行读取的数据、启动操作;当安全检查未通过后,执行通用串行总线设备引导usb device boot操作。
具体地,芯片系统直接从Nandflash boot启动,读取配置字段信息,对配置字段信息进行判断,如配置字段信息符合,进入Nandflash boot过程,进行安全检查,否则跳转到usb device boot过程。芯片usb接口与PC机对接,用于软件版本下载烧录。
寄存器值为0001:从闪存Nandflash中读取配置字段信息,获取usb超时时间值;执行usb device boot操作,并对所述usb device boot操作读取的数据进行安全检查;当安全检查通过后,正常执行读取的数据、启动操作;当安全检查未通过后,执行Nandflash boot操作。
具体地,芯片系统从Nandflash读取配置字段信息,获取usb超时时间值,进入usb device boot过程,芯片usb接口与PC机对接,用于软件版本下载烧录,如果usb超时,则返回nandflash boot过程。
寄存器值为0010:执行usb hsic boot操作,并对所述usb hsic boot操作读 取的数据进行安全检查;当安全检查通过后,正常执行读取的数据、启动操作;当安全检查未通过后,执行复位操作。
具体地,进入usb hsic boot方式,进行安全检查,否则复位芯片。在做智能机调制解调器(Modem)时,芯片支持无外存启动,通过usb hsic从AP芯片侧下载版本到本芯片内部随机存储器(IRAM,Inner Random Access Memory)中执行。
寄存器值为0011:执行sdio slave boot操作,并对所述sdio slave boot操作读取的数据进行安全检查;当安全检查通过后,正常执行读取的数据、启动操作;当安全检查未通过后,执行复位操作。
具体地,进入sdio slave boot方式,进行安全检查,否则复位芯片。在做智能机Modem时,芯片支持无外存启动,通过sdio slave从AP芯片侧下载版本到本芯片IRAM中运行。
寄存器值为0100:基于emmc boot启动boot操作,读取配置字段信息;基于所述配置字段信息,执行字段信息检查;当检查通过后,执行emmc boot操作,并对所述emmc boot操作读取的数据进行安全检查;当安全检查通过后,正常执行读取的数据、启动操作;当安全检查未通过后,执行usb device boot操作。
具体地,芯片系统直接从emmc boot启动,读取配置字段信息进行判断,如配置字段信息符合,则进入emmc boot过程,并进行安全检查,否则跳转到usb device boot过程。芯片usb接口与PC机对接,用于软件版本下载烧录。
寄存器值为0101:从emmc中读取配置字段信息,获取usb超时时间值;执行usb device boot操作,并对所述usb device boot操作读取的数据进行安全检查;当安全检查通过后,正常执行读取的数据、启动操作;当安全检查未通过后,执行emmc boot操作。
具体地,芯片系统从emmc读取配置字段信息,获取usb超时时间值,进入usb device boot过程。芯片usb接口与PC机对接,用于软件版本下载烧录,如果usb超时,则返回emmc boot过程。
寄存器值为1000:从spinandflash中读取配置字段信息;基于所述配置字段信息,执行字段信息检查;当检查通过后,执行spinandflash boot操作,并对所述spinandflash boot操作读取的数据进行安全检查;当安全检查通过后,正常执行读取的数据、启动操作;当安全检查通过后,执行usb device boot操作。
具体地,芯片系统直接从spinandflash读取配置字段信息进行判断,如配置字段信息符合,进入spinandflash boot过程,并进行安全检查,否则跳转到usb device boot过程,芯片usb接口与PC机对接,用于软件版本下载烧录。
寄存器值为1001:从spinandflash中读取配置字段信息,获取usb超时时间值;执行usb device boot操作,并对所述usb device boot操作读取的数据进行安全检查;当安全检查通过后,正常执行读取的数据、启动操作;当安全检查未通过后,执行spinandflash boot过程。
具体地,芯片系统从spinandflash读取配置字段信息,获取usb超时时间值,进入usb device boot过程,芯片usb接口与PC机对接,用于软件版本下载烧录,如果usb超时,则返回spinandflash boot过程。
寄存器值为其它:基于uart boot启动boot操作。
具体地,进入uart boot方式,采用1K modem协议,通过uart与PC控制台程序交互,便于调试与下载,也可支持通过uart接口外接AP芯片,通过uart从AP芯片侧下载版本到本芯片IRAM启动。
本发明实施例中,以存储外设作为boot方式时,支持与usb device boot作为组合boot方式,便于存储外设在无软件版本或错误软件版本时用于usb device boot启动实现软件版本烧录。
图2为本发明实施例的支持多安全boot的芯片的结构组成示意图,如图2所示,所述支持多安全boot的芯片包括:
第一读取单元21,用于当系统初始化后,从寄存器中读取寄存器值;
认证单元22,用于确定出与述寄存器对应的boot操作,并对配置字段信息进行检查;
第二读取单元23,用于当检查通过后,启动所述对应的boot操作读取数据;
执行单元24,用于对所述数据进行安全认证。
在一种实施方式中,所述执行单元24,包括:
第一执行子单元241,用于基于Nandflash boot启动boot操作,读取配置字段信息;基于所述配置字段信息,执行字段信息检查;当检查通过后,执行Nandflash boot操作,并对所述Nandflash boot操作读取的数据进行安全检查;当安全检查通过后,正常执行读取的数据、启动操作;当安全检查未通过后,执行usb device boot操作。
在一种实施方式中,所述执行单元24包括:
第二执行子单元242,用于从Nandflash中读取配置字段信息,获取usb超时时间值;执行usb device boot操作,并对所述usb device boot操作读取的数据进行安全检查;当安全检查通过后,正常执行读取的数据、启动操作;当安全检查未通过后,执行Nandflash boot操作。
在一种实施方式中,所述执行单元24包括:
第三执行子单元243,用于执行usb hsic boot操作,并对所述usb hsic boot操作读取的数据进行安全检查;当安全检查通过后,正常执行读取的数据、启动操作;当安全检查未通过后,执行复位操作。
在一种实施方式中,所述执行单元24包括:
第四执行子单元244,用于执行sdio slave boot操作,并对所述sdio slave boot操作读取的数据进行安全检查;当安全检查通过后,正常执行读取的数据、启动操作;当安全检查未通过后,执行复位操作。
在一种实施方式中,所述执行单元24包括:
第五执行子单元245,用于基于emmc boot启动boot操作,读取配置字段信息;基于所述配置字段信息,执行字段信息检查;当检查通过后,执行emmc boot操作,并对所述emmc boot操作读取的数据进行安全检查;当安全检查通过后,正常执行读取的数据、启动操作;当安全检查未通过后,执行usb device boot操作。
在一种实施方式中,所述执行单元24包括:
第六执行子单元246,用于从emmc中读取配置字段信息,获取usb超时时间值;执行usb device boot操作,并对所述usb device boot操作读取的数据进行安全检查;当安全检查通过后,正常执行读取的数据、启动操作;当安全检查未通过后,执行emmc boot操作。
在一种实施方式中,所述执行单元24包括:
第七执行子单元247,用于从spinandflash中读取配置字段信息;基于所述配置字段信息,执行字段信息检查;当检查通过后,执行spinandflash boot操作,并对所述spinandflash boot操作读取的数据进行安全检查;当安全检查通过后,正常执行读取的数据、启动操作;当安全检查通过后,执行usb device boot操作。
在一种实施方式中,所述执行单元24包括:
第八执行子单元248,用于从spinandflash中读取配置字段信息,获取usb超时时间值;执行usb device boot操作,并对所述usb device boot操作读取的数据进行安全检查;当安全检查通过后,正常执行读取的数据、启动操作;当安全检查未通过后,执行spinandflash boot过程。
在一种实施方式中,所述执行单元24包括:
第九执行子单元249,用于基于uart boot启动boot操作。
下面结合具体应用场景对本发明实施例的技术方案再做详细描述。
图3是本发明实施例的nandflash boot启动流程图,包括:
步骤301:配置nandflash需要的系统时钟等配置。
步骤302:配置nandflash控制器,并使能nandflash。
步骤303:bootrom模块根据引脚确定nandflash位宽和页大小以及页地址周期数。
步骤304:用解析的数据位宽和页大小配置nandflash控制。
步骤306:读nandflash的代码数据到IRAM。
步骤307:跳转到IRAM中执行。
图4是本发明实施例的usb device boot启动的流程图,包括:
步骤401:配置usb需要的锁相环(PLL,Phase Lock Loop)以及分频寄存器。
步骤402:配置使能usb模块。
步骤403:检测usb插入时间内是否有usb连接的reset命令。收到说明有usb连接,超时则认为无usb连接(如果无连接跳转到emmc boot)。
步骤404:开始usb枚举过程(usb host和device按照协议的同步过程)。
步骤405:在usb枚举时间内枚举成功(如果超时(host端没有设备驱动),跳转到emmc boot)。
步骤406:在usb同步时间内等待同步字符,超时退出usb device boot,开始emmc boot。
步骤407:收到同步字符,等待配置寄存器标志字符,后面为配置数据。
步骤408:第一个数据是寄存器地址。
步骤409:第二个数据是配置数据。
步骤410:当收到寄存器地址为0时退出寄存器配置。
步骤411:等待下载数据标志字符,后面为下载数据。
步骤412:第一个为下载地址。
步骤413:第二个数据为下载数据长度。
步骤414:接收下载数据直到达到数据长度。
步骤415:可以连续多次下载数据执行9-12步的下载过程。
步骤416:如果收到执行同步字符,后面为执行地址。
步骤417:把收到执行地址赋给Image_addr,并跳转到Image_addr执行。
图5是本发明实施例的emmc boot启动流程图,包括:
步骤501:配置emmc需要的系统时钟等配置。
步骤502:配置emmc控制器,初始化emmc驱动程序。
步骤503:读emmc设备寄存器参数,使emmc控制器参数和emmc设备参 数相互匹配。
步骤504:根据Loaded_size配置需要从emmc加载的数据大小(Loaded_size根据不同的场景有不同的值,需要提前根据场景计算出loaded_size值)。
步骤505:发送多块读命令从main area加载Loaded_size数据到指定地址。
步骤506:把指定地址值赋值给Image_addr,并跳转到Image_addr执行。
图6是本发明实施例的sdio slave boot启动流程图,包括:
步骤601:配置sdio slave需要的PLL以及分频寄存器。
步骤602:配置sdio slave模块,并使能sdio slave。
步骤603:检测是否有sdio slave连接。如果没有连接则继续等待。
步骤604:如果有连接开始sdio slave初始化过程,并根据sdio slave连接的sdio host的配置进行初始化配置。
步骤605:如果初始化失败则重新进入检查sdio连接流程。
步骤606:sdio slave接收代码数据到IRAM_RM_BASE地址。
步骤607:把IRAM_RM_BASE赋值给Image_addr,并跳转到Image_addr执行。
图7是本发明实施例的spinandflash boot启动流程图,包括:
步骤701:配置spifc需要的系统时钟等配置。
步骤702:配置spifc控制器。
步骤703:根据外部管脚确定spinandflash的page大小。
步骤704:根据页大小配置控制器。
步骤705:通过spifc接口读spinandflash数据到IRAM中。
步骤706:跳转到IRAM中执行。
图8是本发明实施例的usb hsic boot启动流程图,包括:
步骤801:配置usb hsic需要的PLL以及分频寄存器。
步骤802:配置usb hsic模块,并使能usb hsic。
步骤803:检测是否有usb hsic连接的reset命令。收到说明有usb连接,超时则认为无usb hsic连接则继续等待。
步骤804:开始usb hsic枚举过程(usb host和device按照协议的同步过程)。
步骤805:枚举失败则进入等待reset命令流程重新等待连接。
步骤806:如果成功则等待同步字符,如果没收到同步字则继续等待。
步骤807:收到同步字符,等待配置寄存器标志字符,后面为配置数据。
步骤808:第一数据是寄存器地址。
步骤809:第二数据是配置数据。
步骤810:当收到寄存器地址为0时退出寄存器配置。
步骤811:等待下载数据标志字符,后面为下载数据。
步骤812:第一个数据为下载地址。
步骤813:第二个数据为下载数据长度。
步骤814:接收下载数据直到达到数据byte数。
步骤815:可以连续多次下载数据执行步骤809-812的下载过程。
步骤816:如果收到执行同步字符,后面为执行地址。
步骤817:把收到执行地址付给Image_addr,并跳转到Image_addr执行。
图9是本发明实施例的bootrom的安全检查流程图,包括:
步骤901:读取efuse_bypass的pin对应的值,如果为0则开启安全boot功能,否则不开启安全功能,直接认为安全检查通过。
步骤902:读取安全boot使能值。
步骤903:根据安全boot使能值判断是否为安全boot,如果安全boot使能值不等于0xff则不开启安全boot。
步骤904:安全boot使能值等于0xff,读取安全boot的PUK HASH值。
步骤905:判断安全boot PUK的HASH值是否大于0,如果大于0启用安全boot,否则不启用安全boot。
步骤906:如果不开启安全boot,则直接跳转到安全检查通过流程。
步骤907:如果是安全boot,调用HASH模块计算PUK的HASH值,并与安全boot PUK的HASH值比较是否相等,如果不相等则说明不是有效的PUK。
步骤908:如果相等则调用HASH模块计算一级boot的HASH值HASH_X,否则安全检查失败,重新进入USB boot过程。
步骤909:读取一级boot的加密的HASH数据。
步骤910:调用rsa模块解密得到HASH_Y。
步骤911:比较HASH_X是否等于HASH_Y。
步骤912:如果相等则安全检查通过。
步骤913:如果不相等则安全检查失败。
本发明实施例所记载的技术方案之间,在不冲突的情况下,可以任意组合。下面列出几种组合方式。
第一种组合方式:图3,图9组合实现的功能
从Nandflash器件中读取二级boot代码后,采用图9描述的安全检查流程对二级boot代码进行加解密处理验证,验证通过后执行二级boot代码。
第二种组合方式:图3,图4,图9组合实现的功能
从Nandflash器件中读取二级boot代码后,读取配置字段信息,进行判断,如信息符合,采用图9描述的安全检查流程对二级boot代码进行加解密处理验证,验证通过后执行二级boot代码;如果信息不符合,通过usb slave device接口下载二级boot代码后,采用图9描述的安全检查流程对二级boot代码进行加解密处理验证,验证通过后执行下载的二级boot代码。
第三种组合方式:图4,图9组合实现的功能
通过usb slave device接口下载二级boot代码后,采用图9描述的安全检查流程对二级boot代码进行加解密处理验证,验证通过后执行二级boot代码。
第四种组合方式:图5,图9组合实现的功能
从emmc器件中读取二级boot代码后,采用图9描述的安全检查流程对二 级boot代码进行加解密处理验证,验证通过后执行二级boot代码。
第五种组合方式:图6,图9组合实现的功能
通过sdio接口下载二级boot代码后,采用图9描述的安全检查流程对二级boot代码进行加解密处理验证,验证通过后执行二级boot代码。
第六种组合方式:图7,图9组合实现的功能
从spinandflash器件中读取二级boot代码后,采用图9描述的安全检查流程对二级boot代码进行加解密处理验证,验证通过后执行二级boot代码。
第七种组合方式:图8,图9组合实现的功能
通过usb hsic device接口下载二级boot代码后,采用图9描述的安全检查流程对二级boot代码进行加解密处理验证,验证通过后执行二级boot代码。
在本发明所提供的几个实施例中,应该理解到,所揭露的方法和智能设备,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。
上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元,即可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。
另外,在本发明各实施例中的各功能单元可以全部集成在一个第二处理单元中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到 变化或替换,都应涵盖在本发明的保护范围之内。
Claims (20)
1.一种支持多安全引导boot的芯片启动方法,其特征在于,所述方法包括:
系统初始化后,从寄存器中读取寄存器值;
确定出与所述寄存器值对应的boot操作,并对配置字段信息进行检查;
检查通过后,启动所述对应的boot操作读取数据,并对所述数据进行安全认证。
2.根据权利要求1所述的支持多安全引导boot的芯片启动方法,其特征在于,所述确定出与所述寄存器值对应的boot操作,并对配置字段信息进行检查;检查通过后,启动所述对应的boot操作读取数据,并对所述数据进行安全认证,包括:
基于闪存引导Nandflash boot启动boot操作,读取配置字段信息;
基于所述配置字段信息,执行字段信息检查;
当检查通过后,执行Nandflash boot操作,并对所述Nandflash boot操作读取的数据进行安全检查;
当安全检查通过后,正常执行读取的数据、启动操作;当安全检查未通过后,执行通用串行总线设备引导usb device boot操作。
3.根据权利要求1所述的支持多安全引导boot的芯片启动方法,其特征在于,所述确定出与所述寄存器值对应的boot操作,并对配置字段信息进行检查;检查通过后,启动所述对应的boot操作读取数据,并对所述数据进行安全认证,包括:
从闪存Nandflash中读取配置字段信息,获取通用串行总线usb超时时间值;执行usb device boot操作,并对所述usb device boot操作读取的数据进行安全检查;
当安全检查通过后,正常执行读取的数据、启动操作;当安全检查未通过后,执行Nandflash boot操作。
4.根据权利要求1所述的支持多安全引导boot的芯片启动方法,其特征在于,所述确定出与所述寄存器值对应的boot操作,并对配置字段信息进行检查;检查通过后,启动所述对应的boot操作读取数据,并对所述数据进行安全认证,包括:
执行通用串行总线高速集成电路引导usb hsic boot操作,并对所述usb hsicboot操作读取的数据进行安全检查;
当安全检查通过后,正常执行读取的数据、启动操作;当安全检查未通过后,执行复位操作。
5.根据权利要求1所述的支持多安全引导boot的芯片启动方法,其特征在于,所述确定出与所述寄存器值对应的boot操作,并对配置字段信息进行检查;检查通过后,启动所述对应的boot操作读取数据,并对所述数据进行安全认证,包括:
执行同步动态输入输出引导sdio slave boot操作,并对所述sdio slave boot操作读取的数据进行安全检查;
当安全检查通过后,正常执行读取的数据、启动操作;当安全检查未通过后,执行复位操作。
6.根据权利要求1所述的支持多安全引导boot的芯片启动方法,其特征在于,所述确定出与所述寄存器值对应的boot操作,并对配置字段信息进行检查;检查通过后,启动所述对应的boot操作读取数据,并对所述数据进行安全认证,包括:
基于嵌入式多媒体卡引导emmc boot启动boot操作,读取配置字段信息;
基于所述配置字段信息,执行字段信息检查;
当检查通过后,执行emmc boot操作,并对所述emmc boot操作读取的数据进行安全检查;
当安全检查通过后,正常执行读取的数据、启动操作;当安全检查未通过后,执行usb device boot操作。
7.根据权利要求1所述的支持多安全引导boot的芯片启动方法,其特征在于,所述确定出与所述寄存器值对应的boot操作,并对配置字段信息进行检查;检查通过后,启动所述对应的boot操作读取数据,并对所述数据进行安全认证,包括:
从emmc中读取配置字段信息,获取usb超时时间值;执行usb device boot操作,并对所述usb device boot操作读取的数据进行安全检查;
当安全检查通过后,正常执行读取的数据、启动操作;当安全检查未通过后,执行emmc boot操作。
8.根据权利要求1所述的支持多安全引导boot的芯片启动方法,其特征在于,所述确定出与所述寄存器值对应的boot操作,并对配置字段信息进行检查;检查通过后,启动所述对应的boot操作读取数据,并对所述数据进行安全认证,包括:
从串行外设接口闪存spinandflash中读取配置字段信息;
基于所述配置字段信息,执行字段信息检查;
当检查通过后,执行spinandflash boot操作,并对所述spinandflash boot操作读取的数据进行安全检查;
当安全检查通过后,正常执行读取的数据、启动操作;当安全检查通过后,执行usb device boot操作。
9.根据权利要求1所述的支持多安全引导boot的芯片启动方法,其特征在于,所述确定出与所述寄存器值对应的boot操作,并对配置字段信息进行检查;检查通过后,启动所述对应的boot操作读取数据,并对所述数据进行安全认证,包括:
从spinandflash中读取配置字段信息,获取usb超时时间值;
执行usb device boot操作,并对所述usb device boot操作读取的数据进行安全检查;
当安全检查通过后,正常执行读取的数据、启动操作;当安全检查未通过后,执行spinandflash boot过程。
10.根据权利要求1所述的支持多安全引导boot的芯片启动方法,其特征在于,所述确定出与所述寄存器值对应的boot操作,并对配置字段信息进行检查;检查通过后,启动所述对应的boot操作读取数据,并对所述数据进行安全认证,包括:
基于通用同步/异步收发传输器引导uart boot启动boot操作。
11.一种支持多安全boot的芯片,其特征在于,所述芯片包括:
第一读取单元,用于当系统初始化后,从寄存器中读取寄存器值;
认证单元,用于确定出与述寄存器对应的boot操作,并对配置字段信息进行检查;
第二读取单元,用于当检查通过后,启动所述对应的boot操作读取数据;
执行单元,用于对所述数据进行安全认证。
12.根据权利要求11所述的支持多安全boot的芯片,其特征在于,所述执行单元,包括:
第一执行子单元,用于基于Nandflash boot启动boot操作,读取配置字段信息;基于所述配置字段信息,执行字段信息检查;当检查通过后,执行Nandflash boot操作,并对所述Nandflash boot操作读取的数据进行安全检查;当安全检查通过后,正常执行读取的数据、启动操作;当安全检查未通过后,执行usb device boot操作。
13.根据权利要求11所述的支持多安全boot的芯片,其特征在于,所述执行单元包括:
第二执行子单元,用于从Nandflash中读取配置字段信息,获取usb超时时间值;执行usb device boot操作,并对所述usb device boot操作读取的数据进行安全检查;当安全检查通过后,正常执行读取的数据、启动操作;当安全检查未通过后,执行Nandflash boot操作。
14.根据权利要求11所述的支持多安全boot的芯片,其特征在于,所述执行单元包括:
第三执行子单元,用于执行usb hsic boot操作,并对所述usb hsic boot操作读取的数据进行安全检查;当安全检查通过后,正常执行读取的数据、启动操作;当安全检查未通过后,执行复位操作。
15.根据权利要求11所述的支持多安全boot的芯片,其特征在于,所述执行单元包括:
第四执行子单元,用于执行sdio slave boot操作,并对所述sdio slave boot操作读取的数据进行安全检查;当安全检查通过后,正常执行读取的数据、启动操作;当安全检查未通过后,执行复位操作。
16.根据权利要求11所述的支持多安全boot的芯片,其特征在于,所述执行单元包括:
第五执行子单元,用于基于emmc boot启动boot操作,读取配置字段信息;基于所述配置字段信息,执行字段信息检查;当检查通过后,执行emmc boot操作,并对所述emmc boot操作读取的数据进行安全检查;当安全检查通过后,正常执行读取的数据、启动操作;当安全检查未通过后,执行usb device boot操作。
17.根据权利要求11所述的支持多安全boot的芯片,其特征在于,所述执行单元包括:
第六执行子单元,用于从emmc中读取配置字段信息,获取usb超时时间值;执行usb device boot操作,并对所述usb device boot操作读取的数据进行安全检查;当安全检查通过后,正常执行读取的数据、启动操作;当安全检查未通过后,执行emmc boot操作。
18.根据权利要求11所述的支持多安全boot的芯片,其特征在于,所述执行单元包括:
第七执行子单元,用于从spinandflash中读取配置字段信息;基于所述配置字段信息,执行字段信息检查;当检查通过后,执行spinandflash boot操作,并对所述spinandflash boot操作读取的数据进行安全检查;当安全检查通过后,正常执行读取的数据、启动操作;当安全检查通过后,执行usb device boot操作。
19.根据权利要求11所述的支持多安全boot的芯片,其特征在于,所述执行单元包括:
第八执行子单元,用于从spinandflash中读取配置字段信息,获取usb超时时间值;执行usb device boot操作,并对所述usb device boot操作读取的数据进行安全检查;当安全检查通过后,正常执行读取的数据、启动操作;当安全检查未通过后,执行spinandflash boot过程。
20.根据权利要求11所述的支持多安全boot的芯片,其特征在于,所述执行单元包括:
第九执行子单元,用于基于uart boot启动boot操作。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510967023.4A CN106897623A (zh) | 2015-12-21 | 2015-12-21 | 一种支持多安全引导的芯片及其启动方法 |
PCT/CN2016/096743 WO2017107528A1 (zh) | 2015-12-21 | 2016-08-25 | 一种支持多安全引导的芯片及其启动方法、存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510967023.4A CN106897623A (zh) | 2015-12-21 | 2015-12-21 | 一种支持多安全引导的芯片及其启动方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN106897623A true CN106897623A (zh) | 2017-06-27 |
Family
ID=59088952
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510967023.4A Withdrawn CN106897623A (zh) | 2015-12-21 | 2015-12-21 | 一种支持多安全引导的芯片及其启动方法 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN106897623A (zh) |
WO (1) | WO2017107528A1 (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107632868A (zh) * | 2017-09-14 | 2018-01-26 | 苏州国芯科技有限公司 | 芯片启动的方法、控制装置、系统、计算机可读存储介质 |
CN109542518A (zh) * | 2018-10-09 | 2019-03-29 | 华为技术有限公司 | 芯片和启动芯片的方法 |
CN109712653A (zh) * | 2018-02-27 | 2019-05-03 | 上海安路信息科技有限公司 | 芯片初始化方法 |
CN112231710A (zh) * | 2020-10-16 | 2021-01-15 | 同济大学 | Qnx bsp启动验证方法及启动验证模块 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101021794A (zh) * | 2006-05-25 | 2007-08-22 | 杭州晟元芯片技术有限公司 | 一种芯片上电后的程序引导方法 |
CN101561857A (zh) * | 2009-04-28 | 2009-10-21 | 苏州国芯科技有限公司 | 多模式启动的安全嵌入式系统 |
CN102279763A (zh) * | 2011-08-30 | 2011-12-14 | 福州瑞芯微电子有限公司 | 一种bootrom的优化方法 |
CN103069384A (zh) * | 2010-08-10 | 2013-04-24 | 桑迪士克以色列有限公司 | 用从储存设备加载的操作系统代码安全地引导主机设备的主机设备和方法 |
US20140298319A1 (en) * | 2013-03-28 | 2014-10-02 | Hon Hai Precision Industry Co., Ltd. | Method for installing operating system on electronic device |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005227995A (ja) * | 2004-02-12 | 2005-08-25 | Sony Corp | 情報処理装置、および情報処理方法、並びにコンピュータ・プログラム |
CN104901859A (zh) * | 2015-06-11 | 2015-09-09 | 东南大学 | 一种axi/pcie总线转换装置 |
-
2015
- 2015-12-21 CN CN201510967023.4A patent/CN106897623A/zh not_active Withdrawn
-
2016
- 2016-08-25 WO PCT/CN2016/096743 patent/WO2017107528A1/zh active Application Filing
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101021794A (zh) * | 2006-05-25 | 2007-08-22 | 杭州晟元芯片技术有限公司 | 一种芯片上电后的程序引导方法 |
CN101561857A (zh) * | 2009-04-28 | 2009-10-21 | 苏州国芯科技有限公司 | 多模式启动的安全嵌入式系统 |
CN103069384A (zh) * | 2010-08-10 | 2013-04-24 | 桑迪士克以色列有限公司 | 用从储存设备加载的操作系统代码安全地引导主机设备的主机设备和方法 |
CN102279763A (zh) * | 2011-08-30 | 2011-12-14 | 福州瑞芯微电子有限公司 | 一种bootrom的优化方法 |
US20140298319A1 (en) * | 2013-03-28 | 2014-10-02 | Hon Hai Precision Industry Co., Ltd. | Method for installing operating system on electronic device |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107632868A (zh) * | 2017-09-14 | 2018-01-26 | 苏州国芯科技有限公司 | 芯片启动的方法、控制装置、系统、计算机可读存储介质 |
CN109712653A (zh) * | 2018-02-27 | 2019-05-03 | 上海安路信息科技有限公司 | 芯片初始化方法 |
CN109712653B (zh) * | 2018-02-27 | 2021-08-31 | 上海安路信息科技股份有限公司 | 芯片初始化方法 |
CN109542518A (zh) * | 2018-10-09 | 2019-03-29 | 华为技术有限公司 | 芯片和启动芯片的方法 |
CN112231710A (zh) * | 2020-10-16 | 2021-01-15 | 同济大学 | Qnx bsp启动验证方法及启动验证模块 |
Also Published As
Publication number | Publication date |
---|---|
WO2017107528A1 (zh) | 2017-06-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5270377B2 (ja) | ブリッジサポートを有するプラットフォーム起動 | |
CN101957807B (zh) | USB设备识别主机Windows操作系统版本类型的方法 | |
US7600112B2 (en) | Method and system of supporting multi-plugging in X8 and X16 PCI express slots | |
CN103034510B (zh) | 可按需要动态调整的uefi bios快速安全启动方法 | |
CN106897623A (zh) | 一种支持多安全引导的芯片及其启动方法 | |
CN104375855A (zh) | 一种基于车载多mcu通过存储设备升级固件的装置及方法 | |
CN104572564A (zh) | 一种实现android移动设备与USB OTG主机通讯的方法 | |
US20070168905A1 (en) | Networked linux machine and windows software development system | |
CN103019758A (zh) | 电子装置开机加速方法以及相关的电子装置 | |
CN103677915A (zh) | 一种基于TF启动卡进行flash镜像自动烧写的方法 | |
CN110119623A (zh) | 一种利用tpcm实现固件主动度量的可信主板实现方法 | |
CN109426527B (zh) | 在uefi固件及作业系统间分享蓝牙数据的电脑系统及其方法 | |
CN110688235B (zh) | Uefi固件与os间共享无线连接信息的系统及方法 | |
CN104346572A (zh) | 一种通用的外置式智能终端安全运行环境构建方法 | |
CN105740025A (zh) | 基于蓝牙的固件程序升级方法和装置 | |
CN107544804A (zh) | 嵌入式系统终端开发模式的启动方法及装置 | |
CN100592257C (zh) | 可通过不同接口加载启动程序以启动主板的系统及其方法 | |
CN205620994U (zh) | 一种嵌入式设备处理装置 | |
CN107332589A (zh) | 一种基于蓝牙的固件升级装置 | |
CN108052337A (zh) | 一种eMMC量产工具的固件升级方法及装置 | |
US7369958B1 (en) | System and method for setting motherboard testing procedures | |
CN106528031A (zh) | 一种扩展显示标识数据读取方法和装置 | |
CN110119624A (zh) | 一种安全度量方法 | |
CN104142870A (zh) | 虚拟bios开机系统及方法 | |
CN107093408A (zh) | 智能设备开机时背光点亮的控制方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
WW01 | Invention patent application withdrawn after publication | ||
WW01 | Invention patent application withdrawn after publication |
Application publication date: 20170627 |