程序加载方法、装置、计算机可读介质及电子设备
文献发布时间:2024-01-17 01:18:42
技术领域
本公开涉及硬件程序加载,具体地,涉及一种程序加载方法、装置、计算机可读介质及电子设备。
背景技术
Bootrom或Boot ROM(Read-Only Memory,只读存储器),是嵌入CPU 芯片内的一小块掩模ROM或写保护闪存,无法对其进行灵活修改。如果嵌入式系统(如服务器上各种加速卡)的第一阶段引导加载程序(First Stage BootLoader,FSBL)在串行外设接口闪存(Serial Peripheral Interface Flash, SPI闪存)中,则Bootrom需要在CPU上电后将FSBL加载至SRAM(Static Random-Access Memory,静态随机存取存储器),对FSBL进行验证并执行。出于安全性要求,即使是芯片内执行(eXecute In Place,XIP)方式也需要先读取整个FSBL并进行验证后才能跳转执行。
嵌入式系统为兼容各种SPI Nor flash(非易失性闪存),Bootrom中SPI 控制器的时钟速率相对较低(通常约10MHz左右),导致加载FSBL的时间过长,在对启动时间敏感的场合不适用。
发明内容
提供该发明内容部分以便以简要的形式介绍构思,这些构思将在后面的具体实施方式部分被详细描述。该发明内容部分并不旨在标识要求保护的技术方案的关键特征或必要特征,也不旨在用于限制所要求的保护的技术方案的范围。
第一方面,本公开提供一种程序加载方法,应用于一电子设备,该方法包括:以第一速度的程序加载速度加载所述bin文件;所述bin文件包含用于调整所述程序加载速度的配置参数;根据所述bin文件中的所述配置参数调整所述程序加载速度至第二速度;所述第二速度大于所述第一速度;以调整至所述第二速度的所述程序加载速度加载第一阶段的加载程序FSBL。
第二方面,本公开提供一种程序加载装置,应用于一电子设备,该装置包括:加载模块,用于以第一速度的程序加载速度加载所述bin文件;所述 bin文件包含用于调整所述程序加载速度的配置参数;处理模块,用于根据所述bin文件中的所述配置参数调整所述程序加载速度至第二速度;所述第二速度大于所述第一速度;所述加载模块,还用于以调整至所述第二速度的所述程序加载速度加载第一阶段的加载程序FSBL。
第三方面,本公开提供一种计算机可读介质,其上存储有计算机程序,该程序被处理装置执行时实现前述的程序加载方法的步骤。
第四方面,本公开提供一种计算机设备,包括:存储装置,其上存储有计算机程序;处理装置,用于执行所述存储装置中的所述计算机程序,以实现前述的程序加载方法的步骤。
通过上述技术方案,以第一速度的程序加载速度加载闪存中的bin文件,根据bin文件中的配置参数调整程序加载速度至第二速度,第二速度大于第一速度,然后以第二速度的程序加载速度加载FSBL。通过执行bin文件中的配置参数来调整Bootrom从闪存加载FSBL的速度,缩短了Bootrom加载 FSBL的时间,使得嵌入式系统兼容各种闪存的同时,也能在对启动时间敏感的场合下适用。
本公开的其他特征和优点将在随后的具体实施方式部分予以详细说明。
附图说明
结合附图并参考以下具体实施方式,本公开各实施例的上述和其他特征、优点及方面将变得更加明显。贯穿附图中,相同或相似的附图标记表示相同或相似的元素。应当理解附图是示意性的,原件和元素不一定按照比例绘制。在附图中:
图1是本公开一个示例性实施例提供的电子设备的结构示意图。
图2是本公开一个示例性实施例提供的程序加载方法的流程图。
图3是本公开一个示例性实施例提供的状态寄存器的参数配置图。
图4是本公开一个示例性实施例提供的程序加载装置框图。
图5是本公开一个示例性实施例提供的电子设备的结构示意图。
附图标记说明
100-电子设备;10-启动ROM;20-SPI闪存;20-程序加载装置;201-加载模块;203-处理模块;600-计算机设备;601-处理装置;602-ROM;603-RAM; 604-总线;605-I/O接口;606-输入装置;607-输出装置;608-存储装置;609- 通信装置。
具体实施方式
下面将参照附图更详细地描述本公开的实施例。虽然附图中显示了本公开的某些实施例,然而应当理解的是,本公开可以通过各种形式来实现,而且不应该被解释为限于这里阐述的实施例,相反提供这些实施例是为了更加透彻和完整地理解本公开。应当理解的是,本公开的附图及实施例仅用于示例性作用,并非用于限制本公开的保护范围。
应当理解,本公开的方法实施方式中记载的各个步骤可以按照不同的顺序执行,和/或并行执行。此外,方法实施方式可以包括附加的步骤和/或省略执行示出的步骤。本公开的范围在此方面不受限制。
本文使用的术语“包括”及其变形是开放性包括,即“包括但不限于”。术语“基于”是“至少部分地基于”。其他术语的相关定义将在下文描述中给出。
需要注意,本公开中提及的“第一”、“第二”等概念仅用于对不同的装置、模块或单元进行区分,并非用于限定这些装置、模块或单元所执行的功能的顺序或者相互依存关系。
需要注意,本公开中提及的“一个”、“多个”的修饰是示意性而非限制性的,本领域技术人员应当理解,除非在上下文另有明确指出,否则应该理解为“一个或多个”。
本公开实施方式中的多个装置之间所交互的消息或者信息的名称仅用于说明性的目的,而并不是用于对这些消息或信息的范围进行限制。
启动ROM(Bootrom)是固化在CPU内部ROM中的代码,Bootrom包含处理器在上电或复位时执行的第一个代码。根据某些带式引脚或内部保险丝的配置,它可以决定从哪里加载要执行的代码的下一部分以及验证要执行的代码正确性或有效性。有时Bootrom还可以包含其他功能,可以在引导期间或之后由用户代码使用。例如,iPhone启动ROM,嵌入在掩模ROM中的代码无法修改,ROM从闪存(flash)或USB中加载下一级引导加载程序,并使用内置RSA算法验证引导加载程序的签名,ROM为下一级引导加载程序提供加速解密的功能。
SPI flash就是通过串行外设接口SPI进行操作的flash存储设备,flash 按照内部存储结构不同,通常分为两种:Nor flash和Nand flash,这里SPI flash 属于Norflash。SPI flash读写较慢,读写次数也有限制,一般用于不经常更改的存储。早期Norflash的接口是并行(parallel)的形式,即把数据线和地址线并排与集成电路(IntegratedCircuit,IC)的管脚连接。但是后来业内人员发现不同容量的Nor flash不能在硬件上兼容,因为数据线和地址线的数量不一样,并且封装比较大,占用了较大的印刷线路板(Printed Circuit Board,PCB)位置,所以后来逐渐被SPI Nor flash所取代,同时不同容量的SPI Nor flash管脚也兼容封装也更小,以至于现在很多业内人员直接都以SPI flash来代称Nor flash。
XIP方式,指应用程序可以直接在flash内运行,不必再把代码读到系统RAM(Random Access Memory,随机存取存储器)中。flash内执行是指 Nor flash不需要初始化,可以直接在flash内执行代码。但往往只执行部分代码,比如初始化RAM。
如果嵌入式系统的FSBL在SPI flash中,则Bootrom需要在CPU上电后将FSBL加载至SRAM,并且在加载至SRAM后出于安全性要求,需要先对FSBL进行签名验证后再执行该FSBL。即使是XIP方式也需要先读取整个FSBL并进行签名验证后,才能执行该FSBL。
对于支持高速时钟(CLK)的SPI控制器(这里的高速通常指时钟频率大于25MHz,即CLK>25MHz),通常都带有端口物理层(Port Physical Layer, PHY),需要根据线路板布线、flash参数等对PHY寄存器进行适配才能工作。而Bootrom固化在CPU芯片内部,无法灵活定制这些PHY寄存器的值。即使有些高速SPI控制器可通过跳线的方式修改该PHY寄存器的值,但该跳线方式也不一定能覆盖所有相关的PHY寄存器。因此,Bootrom在读取FSBL 的阶段,SPI控制器的时钟速率无法定得太高,如通常无法高于25MHz。
SPI分为Single SPI(标准SPI,一个时钟内传输1个bit)、Dual SPI(双倍SPI,一个时钟内传输2个bit)和Quad SPI(四倍SPI,一个时钟内传输 4个bit)三种模式,分别对应3-wire(线)、4-wire和6-wire,在相同时钟下,线数越多,其传输数据的速率就越高。大多数SPI flash支持QSPI(Quad SPI),但需要CPU读取串行闪存可发现参数表(Serial FlashDiscoverable Parameter,flash SFDP)后才能确定使能QSPI的方式。但这些逻辑较为繁琐冗杂,不适宜放入Bootrom中。
因此,嵌入式系统为兼容各种SPI Nor flash,Bootrom中SPI控制器的时钟速率相对保守(约10MHz左右),且很少打开SPI的QSPI模式,导致加载FSBL的时间过长。
上述原因在很大程度上限制了SPI flash在对启动时间较敏感的场合下的应用。例如,对于高速串行计算机扩展总线标准(Peripheral component interconnectexpress,PCIe)板卡,PCIe规范要求从系统上电到PCIe初始化完成必须在120ms以内。假设FSBL的大小为50KB,采用10MHz的SPI 时钟,则加载FSBL的速率为:50K×8/10MHz=40ms。如果仅加载FSBL 就占用40ms,则对PCIe上电之前的硬件和软件初始化速度就提出了过高的要求。
基于上述原因,现有的加载FSBL的方法不适用于对启动时间比较敏感的场合,因此为了解决该问题,本公开提出了一种可以应用于嵌入式系统的 Bootrom的程序加载方法,该方法缩短了Bootrom从SPI flash加载FSBL的时间。下面将对该方法进行详细阐述。
图1示出了本公开一个示例性实施例提供的电子设备的结构示意图。
电子设备100包含启动ROM(Bootrom)10和SPI闪存(SPI flash)20。其中SPI闪存20可以是SPI Nor flash。
SPI闪存20中可以存储有bin文件。
在电子设备的CPU上电后,Bootrom与SPI闪存20建立通信连接, Bootrom首先验证SPI闪存20的安全性,SPI闪存20通过安全验证后,Bootrom读取SPI闪存20中的相关代码并执行,以获取相关的参数对PHY 寄存器进行适配,或调整SPI控制器的时钟速率,然后从SPI闪存20读取 FSBL并进行安全验证,当FSBL通过安全验证后,Bootrom执行该FSBL。
请参阅图2,图2为本公开一个示例性实施例提供的程序加载方法的流程图,该方法可以包括以下步骤。
在步骤S101中,以第一速度的程序加载速度加载bin文件。
由于嵌入式系统为兼容各种SPI Nor flash,Bootrom中SPI控制器的时钟速率相对较低,约为10MHz左右。因此本步骤中的第一速度为本领域的一个合理取值,该值可以基于人为经验取得,或是其他可行的方式取得,例如第一速度可以是但不限于SPI控制器的时钟速率取值为10MHz。
需要说明的是,bin文件存储在SPI flash中,该bin文件中包含用于调整程序加载速度的配置参数,该配置参数包括:PHY寄存器配置参数、闪存适配参数、SPI时钟速率参数中的至少一种。其中,PHY寄存器配置参数用于调整嵌入式系统的板级布线的PHY寄存器配置,具体为调整SPI各信号之间的相位关系,旨在让SPI能正常工作。SPI时钟速率参数用于调整SPI 控制器的时钟速率,闪存适配参数用于启用SPI的QSPI模式。
在步骤S102中,根据bin文件中的配置参数调整程序加载速度至第二速度。
示例性的,根据bin文件中的PHY寄存器配置参数调整嵌入式系统的板级布线的PHY寄存器配置,具体为调整SPI各信号之间的相位关系,旨在让SPI能正常工作。
需要说明的是,该第二速度的取值大于第一速度,第二速度为本领域的一个合理取值,该值可以基于人为经验取得,或是其他可行的方式取得,例如第二速度可以是但不限于SPI控制器的时钟速率取值为50MHz。
根据bin文件中的配置参数调整程序加载速度至第二速度的方式可以是:根据bin文件中的闪存适配参数启用SPI的QSPI模式,以使所述程序加载速度至第二速度。如前文所述,SPI分为上述的Single SPI、Dual SPI和Quad SPI三种模式,分别对应3-wire、4-wire和6-wire,在相同时钟下,线数越多,其传输数据的速率就越高。不同公司出厂的flash对应着不同的调整方式,具体可以根据该公司给出的flash手册得到具体的调整方式,本公开中不做限定。例如以某公司的flash为例来进行说明,如图3所示,示出了一种状态寄存器(Status Register)的参数配置图,bit0-bit7均为寄存器,其中QE (Quad Enable)通常由bit6寄存器,即QSPI模式由bit6寄存器控制,该bit 的值为0或1分别用于表示启用QSPI和不启用(即1=Quad Enable,0=not Quad Enable),因此通过调整该Status Register的bit6寄存器参数可以启用 SPI的QSPI模式。
或者,根据bin文件中的配置参数调整程序加载速度至第二速度的方式还可以是:根据bin文件中的SPI时钟速率参数调整SPI控制器的时钟速率,以使程序加载速度至第二速度,在一种可选的实施方式中,可以将SPI控制器的时钟速率调整至50MHz。
或者,根据bin文件中的配置参数调整程序加载速度至第二速度的方式还可以是:根据bin文件中的闪存适配参数启用SPI的QSPI模式,并且根据bin文件中的SPI时钟速率参数调整SPI控制器的时钟速率,以使程序加载速度至第二速度,在一种可选的实施方式中,可以将SPI控制器的时钟速率调整至50MHz。
在步骤S103中,以调整至第二速度的程序加载速度加载第一阶段的加载程序FSBL。
Bootrom从SPI flash中以第二速度的程序加载速度读取FSBL,通常情况下可以将第二速度调整为第一速度的4-5倍,因此实现了高速加载FSBL 的目的。
示例性的,例如前述提到的PCIe板卡,PCIe规范要求从系统上电到PCIe 初始化完成必须在120ms以内。假设FSBL为50KB,如果采用第一速度的 SPI时钟速率(如10MHz),则加载FSBL需要50K×8/10MHz=40ms,如果采用本公开提出的程序加载方法,可以先以第一速度加载bin文件,假设 bin文件的大小为500字节,然后启用SPI的QSPI模式将程序加载速度调整至第二速度(如50MHz),则加载FSBL需要500×8/10MHz+50K×8/(4 ×50MHz)=0.4ms+2ms=2.4ms;节省了约90%的加载FSBL时间。
通过上述方法,以执行bin文件中的配置参数来调整Bootrom从闪存加载FSBL的速度,缩短了Bootrom加载FSBL的时间,使得嵌入式系统兼容各种闪存的同时,能够适用于对启动时间敏感的场合;由于Bootrom的启动速度限制而被迫采用SD/MMC相关寄存器的产品可以改用SPI flash,从而降低了硬件成本。
进一步,上述方法还可以包括以下步骤:
在步骤S104中,对FSBL进行安全验证。
需要说明的是,可以采用多种可行的加密算法对FSBL进行安全验证,本公开对此不作限制。
示例性,以MD5算法对FSBL进行安全验证为例来进行说明。通常情况下FSBL和FSBL的第一加密签名打包在一起,存储在SPI flash中,该第一加密签名是通过私钥对FSBL的签名进行加密后得到的。从步骤S103中加载的FSBL中,获取到FSBL和FSBL的第一加密签名,然后通过预存储在Bootrom中的与该私钥对应的公钥对第一加密签名进行解密,得到解密后的第一签名,计算FSBL的签名得到FSBL的第二签名;然后将第一签名与第二签名进行比对,当第一签名与第二签名相同时,确定FSBL通过安全验证。
在步骤S105中,在FSBL通过安全验证的情况下,执行FSBL。
此外,需要说明的是,本公开提供的程序加载方法的具体实现方式可以是在bootrom里添加一个插件,该插件不仅仅局限于高速加载FSBL,还可以通过调整插件中的代码实现其他的目的,例如有的flash没有做特殊配置时只能访问前面16M地址空间,经过对应的访问地址空间配置插件之后,可以扩大到4G地址空间。
综上所述,综上所述,本公开提供的程序加载方法包括:以第一速度的程序加载速度加载SPI flash中的bin文件,根据bin文件中的配置参数调整程序加载速度至第二速度,第二速度大于第一速度,然后以第二速度的程序加载速度加载FSBL。通过执行bin文件中的配置参数来调整Bootrom从SPI flash加载FSBL的速度,缩短了Bootrom加载FSBL的时间,使得嵌入式系统兼容各种SPI flash的同时,也能在对启动时间敏感的场合下适用。
图4是本公开一个示例性实施例提供的程序加载装置框图。参照图4,该装置20包括加载模块201及处理模块203。
该加载模块201,用于以第一速度的程序加载速度加载所述bin文件;所述bin文件包含用于调整该程序加载速度的配置参数;
处理模块203,用于根据该bin文件中的所述配置参数调整该程序加载速度至第二速度;该第二速度大于第一速度;
该加载模块201,还用于以调整至所述第二速度的所述程序加载速度加载第一阶段的加载程序FSBL。
可选地,该配置参数包括端口物理层PHY寄存器配置参数、闪存适配参数、串行外设接口SPI时钟速率参数中的至少一种。
可选地,该处理模块203用于:
获取该bin文件中的PHY寄存器配置参数、闪存适配参数和SPI时钟速率参数;
根据该PHY寄存器配置参数调整该闪存中的板级布线PHY寄存器配置,
或,根据该闪存适配参数启用SPI的QSPI模式,以使该程序加载速度至该第二速度,
或,根据该SPI时钟速率参数调整该闪存中SPI的时钟速率,以使该程序加载速度至该第二速度,
或,根据该闪存适配参数启用SPI的QSPI模式及根据该SPI时钟速率参数调整该存中SPI的时钟速率,以使该程序加载速度至该第二速度。
可选地,该处理模块203还用于:
对该FSBL进行安全验证;
在该FSBL通过安全验证的情况下,执行该FSBL。
可选地,该处理模块203用于:
从加载的该FSBL中,获取该FSBL的第一加密签名;
通过预存储的公钥对该第一加密签名进行解密,得到解密后的第一签名;
计算该FSBL的签名,得到该FSBL的第二签名;
将该第一签名与该第二签名进行比对;
当该第一签名与该第二签名相同时,确定该FSBL通过该安全验证。
下面参考图5,其示出了适于用来实现本公开实施例的电子设备600的结构示意图。本公开实施例中的终端设备可以包括但不限于诸如移动电话、笔记本电脑、数字广播接收器、PDA(个人数字助理)、PAD(平板电脑)、 PMP(便携式多媒体播放器)、车载终端(例如车载导航终端)等等的移动终端以及诸如数字TV、台式计算机等等的固定终端。图5示出的电子设备仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
如图5所示,电子设备600可以包括处理装置(例如中央处理器、图形处理器等)601,其可以根据存储在只读存储器(ROM)602中的程序或者从存储装置608加载到随机访问存储器(RAM)603中的程序而执行各种适当的动作和处理。在RAM 603中,还存储有电子设备600操作所需的各种程序和数据。处理装置601、ROM 602以及RAM 603通过总线604彼此相连。输入/输出(I/O)接口605也连接至总线604。
通常,以下装置可以连接至I/O接口605:包括例如触摸屏、触摸板、键盘、鼠标、摄像头、麦克风、加速度计、陀螺仪等的输入装置606;包括例如液晶显示器(LCD)、扬声器、振动器等的输出装置607;包括例如磁带、硬盘等的存储装置608;以及通信装置609。通信装置609可以允许电子设备600与其他设备进行无线或有线通信以交换数据。虽然图5示出了具有各种装置的电子设备600,但是应理解的是,并不要求实施或具备所有示出的装置。可以替代地实施或具备更多或更少的装置。
特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在非暂态计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信装置609从网络上被下载和安装,或者从存储装置608被安装,或者从ROM 602被安装。在该计算机程序被处理装置601执行时,执行本公开实施例的方法中限定的上述功能。
需要说明的是,本公开上述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读信号介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:电线、光缆、RF(射频)等等,或者上述的任意合适的组合。
上述计算机可读介质可以是上述电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。
上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该电子设备执行时,使得该电子设备:以第一速度的程序加载速度加载 bin文件;所述bin文件包含用于调整所述程序加载速度的配置参数;根据所述bin文件中的所述配置参数调整所述程序加载速度至第二速度;所述第二速度大于所述第一速度;以调整至所述第二速度的所述程序加载速度加载第一阶段的加载程序FSBL。
可以以一种或多种程序设计语言或其组合来编写用于执行本公开的操作的计算机程序代码,上述程序设计语言包括但不限于面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言——诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)——连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本公开实施例中所涉及到的模块可以通过软件的方式实现,也可以通过硬件的方式来实现。其中,模块的名称在某种情况下并不构成对该模块本身的限定。
本文中以上描述的功能可以至少部分地由一个或多个硬件逻辑部件来执行。例如,非限制性地,可以使用的示范类型的硬件逻辑部件包括:现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、片上系统(SOC)、复杂可编程逻辑设备(CPLD)等等。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器 (CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
根据本公开的一个或多个实施例,示例1提供了一种程序加载方法,应用于一电子设备,所述电子设备的闪存中存储有预先配置的bin文件,该方法包括:以第一速度的程序加载速度加载所述bin文件;所述bin文件包含用于调整所述程序加载速度的配置参数;
根据所述bin文件中的所述配置参数调整所述程序加载速度至第二速度;所述第二速度大于所述第一速度;
以调整至所述第二速度的所述程序加载速度加载第一阶段的加载程序 FSBL。
根据本公开的一个或多个实施例,示例2提供了示例1的方法,所述配置参数包括端口物理层PHY寄存器配置参数、闪存适配参数、串行外设接口SPI时钟速率参数中的至少一种。
根据本公开的一个或多个实施例,示例3提供了示例1的方法,所述根据所述bin文件中的所述配置参数调整所述程序加载速度至第二速度的步骤包括:
获取所述bin文件中的PHY寄存器配置参数、闪存适配参数和SPI时钟速率参数;
根据所述PHY寄存器配置参数调整所述闪存中的板级布线PHY寄存器配置;
根据所述闪存适配参数启用SPI的QSPI模式,以使所述程序加载速度至第二速度;
或,根据所述SPI时钟速率参数调整所述闪存中SPI的时钟速率,以使所述程序加载速度至第二速度;
或,根据所述闪存适配参数启用SPI的QSPI模式及根据所述SPI时钟速率参数调整所述闪存中SPI的时钟速率,以使所述程序加载速度至第二速度。
根据本公开的一个或多个实施例,示例4提供了示例3的方法,所述以调整至所述第二速度的所述程序加载速度加载FSBL的步骤之后,还包括:
对所述FSBL进行安全验证;
在所述FSBL通过安全验证的情况下,执行所述FSBL。
根据本公开的一个或多个实施例,示例5提供了示例4的方法,对所述 FSBL进行安全验证的步骤包括:
从加载的所述FSBL中,获取所述FSBL的第一加密签名;
通过预存储的公钥对所述第一加密签名进行解密,得到解密后的第一签名;
计算所述FSBL的签名,得到所述FSBL的第二签名;
将所述第一签名与所述第二签名进行比对;
当所述第一签名与所述第二签名相同时,确定所述FSBL通过所述安全验证。
根据本公开的一个或多个实施例,示例6提供了示例1的方法,所述电子设备的闪存为SPI闪存。
根据本公开的一个或多个实施例,示例7提供了一种程序加载装置,应用于一电子设备,所述电子设备的闪存中存储有预先配置的bin文件,该装置包括:
加载模块,用于以第一速度的程序加载速度加载所述bin文件;所述bin 文件包含用于调整所述程序加载速度的配置参数;
处理模块,用于根据所述bin文件中的所述配置参数调整所述程序加载速度至第二速度;所述第二速度大于所述第一速度;
所述加载模块,还用于以调整至所述第二速度的所述程序加载速度加载第一阶段的加载程序FSBL。
根据本公开的一个或多个实施例,示例8提供了示例7的装置,所述处理模块用于:
获取所述bin文件中的PHY寄存器配置参数、闪存适配参数和SPI时钟速率参数;
根据所述PHY寄存器配置参数调整所述闪存中的板级布线PHY寄存器配置;
根据所述闪存适配参数启用SPI的QSPI模式,以使所述程序加载速度至所述第二速度,
或,根据所述SPI时钟速率参数调整所述闪存中SPI的时钟速率,以使所述程序加载速度至所述第二速度;
或,根据所述闪存适配参数启用SPI的QSPI模式及根据所述SPI时钟速率参数调整所述闪存中SPI的时钟速率,以使所述程序加载速度至所述第二速度。
根据本公开的一个或多个实施例,示例9提供了一种计算机可读介质,其上存储有计算机程序,所述程序被处理装置执行时实现前述的程序加载方法的步骤。
根据本公开的一个或多个实施例,示例10提供了一种电子设备,包括:
存储装置,其上存储有计算机程序;
处理装置,用于执行所述存储装置中的所述计算机程序,以实现前述的程序加载方法的步骤。
以上描述仅为本公开的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本公开中所涉及的公开范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离上述公开构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本公开中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。
此外,虽然采用特定次序描绘了各操作,但是这不应当理解为要求这些操作以所示出的特定次序或以顺序次序执行来执行。在一定环境下,多任务和并行处理可能是有利的。同样地,虽然在上面论述中包含了若干具体实现细节,但是这些不应当被解释为对本公开的范围的限制。在单独的实施例的上下文中描述的某些特征还可以组合地实现在单个实施例中。相反地,在单个实施例的上下文中描述的各种特征也可以单独地或以任何合适的子组合的方式实现在多个实施例中。
尽管已经采用特定于结构特征和/或方法逻辑动作的语言描述了本主题,但是应当理解所附权利要求书中所限定的主题未必局限于上面描述的特定特征或动作。相反,上面所描述的特定特征和动作仅仅是实现权利要求书的示例形式。关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
- 文件预加载方法、装置、电子设备及计算机可读存储介质
- 应用程序处理方法和装置、电子设备、计算机可读存储介质
- 一种浴室加热装置和用于控制浴室加热装置的方法、设备、电子设备及计算机可读存储介质
- 一种应用程序处理方法、装置、电子设备及可读存储介质
- Web应用程序测试方法、装置、可读介质及电子设备
- 图像编码装置、图像解码装置、图像编码方法、图像解码方法、图像编码程序、图像解码程序、以及记录了图像编码程序的计算机可读记录介质、记录了图像解码程序的计算机可读记录介质
- 电子设备控制装置、电子设备控制方法、电子设备控制程序及记录了电子设备控制程序的计算机可读取的记录介质