支持多种闪存加密存储的启动固件的执行方法

文档序号:9564823阅读:371来源:国知局
支持多种闪存加密存储的启动固件的执行方法
【技术领域】
[0001] 本发明涉及固件启动技术领域,特别涉及一种支持多种闪存加密存储的启动固件 的执行方法。
【背景技术】
[0002] 随着嵌入式系统的日益发展,以SOC为主芯片多种闪存为存储设备的各种产品得 到了越来越广泛的应用。其中,使用SOC和闪存的嵌入式产品的软件都会包含一个固件,即 SOC启动固件,负责软件的启动。
[0003] 根据存放位置的不同,SOC启动固件可以分为两类。第一类是将SOC启动固件保 存至外部闪存中,它的特点是固件属于软件部分,在制作系统的时候产生并可以通过特殊 方式进行修改,多数嵌入式产品使用这种方式的启动固件。第二类是将SOC启动固件固化 至硬件SOC中,它的特点是固件属于硬件部分,在芯片生产的时候产生并且无法进行任何 修改。
[0004] 其中,使用第二类启动固件的SOC-般使用以下两个主要启动过程完成启动代码 的装载:第一步:参照图1所示,由SOC硬件通过特定方法执行启动固件;第二步:参照图2 所示,由启动固件加载闪存中存储的系统启动代码。
[0005] 然而,通常情况下,第二类SOC启动固件所需的启动代码是存储在Nor闪存或Nand 闪存中。但是,由于目前市场上的闪存种类繁多,并且随着技术不断发展大容量闪存新产品 也不断出现,在这种情况下,由于第二类启动固件是固化到硬件中的不能修改,导致其在设 计初就需要包含智能识别闪存新产品的功能。另外,对于使用第二类SOC启动固件的对特 种设备,对在第二步过程中使用的闪存中的数据内容进行加密并在启动过程中实现可执行 性检测,这是必不可少的重要的技术环节。因此,针对不同厂商的多种闪存的智能识别和在 第二步过程中启动代码的加密存储,有待改善。

【发明内容】

[0006] 本发明旨在至少在一定程度上解决上述相关技术中的技术问题之一。
[0007] 为此,本发明的目的在于提出一种支持多种闪存加密存储的启动固件的执行方 法,该方法实现简单,消耗低。
[0008] 为达到上述目的,本发明实施例提出了一种支持多种闪存加密存储的启动固件的 执行方法,包括以下步骤:对闪存设定硬件基本操作功能参数;调整设定存储访问预设参 数;根据硬件连接读取所述闪存的硬件ID ;根据所述硬件连接及所述闪存的硬件ID判断是 否为Nand闪存;如果是Nand闪存,则读取所述闪存的ONFI协议参数及所述闪存中的加密 的参数信息;如果不是Nand闪存,则读取所述闪存中的加密的参数信息;对读取的参数信 息进行解密,并对解密后的数据进行验证;根据所述硬件ID、所述闪存的ONFI协议参数、所 述解密后的数据和验证结果判断所述存储访问预设参数情况下闪存通讯和存储访问的正 确性;如果正确,则判断解密后的数据为所述存储访问预设参数设定之后的可靠数据信息, 所述存储访问预设参数为可靠硬件操作参数;以及对于保存在闪存中加密的启动代码进行 解密并加载。
[0009] 根据本发明实施例提出的支持多种闪存加密存储的启动固件的执行方法,通过闪 存的硬件判断是否为Nand闪存,从而读取闪存的ONFI协议参数及闪存中的加密的参数信 息或只读取闪存中的加密的参数信息,并且对读取的参数信息进行解密和验证,以根据硬 件ID、ONFI协议参数,解密后的数据和验证结果判断闪存通讯和存储访问的正确性,从而 判断解密后的数据是否为存储访问预设参数设定之后的可靠数据和存储访问预设参数是 否为可靠硬件参数,以及对于加密的启动代码进行解密和加载,实现支持多种闪存与在闪 存上加密存储的目的,具有实现过程简单,运行时解密系统消耗低的特点。
[0010] 另外,根据本发明上述实施例的支持多种闪存加密存储的启动固件的执行方法还 可以具有如下附加的技术特征:
[0011] 进一步地,在本发明的一个实施例中,其中,对于Nor闪存,所述基本操作功能参 数包括实现硬件通讯和控制协议必要的控制器设置内容;以及对于Nand闪存,除包含对硬 件控制器实现硬件通讯和控制协议必要的设置外,还对闪存协议要求的硬件时序参数进行 缺省配置。
[0012] 进一步地,在本发明的一个实施例中,对于Nand闪存,所述存储访问预设参数包 括地址长度;对于Nor闪存,所述存储访问预设参数包括数据总线宽度。
[0013] 进一步地,在本发明的一个实施例中,所述读取所述闪存的硬件ID具体包括:根 据所述硬件连接向所述闪存发送0x90及0x9F命令对所述闪存的硬件ID进行预读。
[0014] 进一步地,在本发明的一个实施例中,所述参数信息包括闪存存储属性,容量信 息;还包括加密的启动代码数据分段信息,该分段信息除包含数据读取的段数据长度外,还 包含一组包含随机有限个数据段读取关系的映射表,这个映射表数据将用于启动代码数据 读取,其中,所述参数信息长度最后2字节为对整个参数信息进行CRC32后的校验码。
[0015] 进一步地,在本发明的一个实施例中,所述验证可以使用CRC32验证算法。
[0016] 进一步地,在本发明的一个实施例中,所述对于保存在闪存中加密的启动代码进 行解密并加载具体包括:读取所述SOC内置fuse上密码子用于数据解密;读取配置参数中 对闪存上的数据分段信息;读取所述分段信息指定位置数据,将数据保存在片内高速缓存 中;使用AES算法和所述密码子将所述数据解密至SOC内置高速缓存中,并进行校验。
[0017] 本发明附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变 得明显,或通过本发明的实践了解到。
【附图说明】
[0018] 本发明的上述和/或附加的方面和优点从结合下面附图对实施例的描述中将变 得明显和容易理解,其中:
[0019] 图1为由SOC硬件通过特定方法执行启动固件的过程示意图;
[0020] 图2为由启动固件加载闪存中存储的系统启动代码的过程示意图;
[0021] 图3为根据本发明实施例的支持多种闪存加密存储的启动固件的执行方法的流 程图;
[0022] 图4为根据本发明一个实施例的启动固件执行过程的流程图;
[0023] 图5为根据本发明一个实施例的由启动固件加载闪存中存储的系统启动代码的 流程图;
[0024] 图6为根据本发明一个实施例的启动固件闪存属性和参数探测过程的流程图;以 及
[0025] 图7为根据本发明一个实施例的启动固件读取闪存中加密的启动代码过程的流 程图。
【具体实施方式】
[0026] 下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终 相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附 图描述的实施例是示例性的,旨在用于解释本发明,而不能理解为对本发明的限制。
[0027] 此外,术语"第一"、"第二"仅用于描述目的,而不能理解为指示或暗示相对重要性 或者隐含指明所指示的技术特征的数量。由此,限定有"第一"、"第二"的特征可以明示或 者隐含地包括一个或者更多个该特征。在本发明的描述中,"
当前第1页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1