首页> 中国专利> 一种基于ARMv7 SoC的一体化映像引导启动方法

一种基于ARMv7 SoC的一体化映像引导启动方法

摘要

本申请提供一种基于ARMv7 SoC的一体化映像引导启动方法,所述方法应用于ARMv7 SoC架构的系列芯片,ARMv7 SoC架构的系列芯片包括处理系统端和编程逻辑端,方法包括:上电系统启动,BootROM引导启动存储于第一固化地址的一体化映像,所述一体化映像包括第一阶段引导程序和可编程逻辑文件;所述第一阶段引导程序完成处理系统端的基础设备驱动功能初始化;所述第一阶段引导程序加载所述可编程逻辑文件,完成对编程逻辑端的配置;所述第一阶段引导程序从预先设置的第二固化地址,引导启动第二阶段引导程序;所述第二阶段引导程序完成功能配置,系统启动完成。

著录项

说明书

技术领域

本发明属于计算机系统软件技术领域,具体涉及一种基于ARMv7 SoC的一体化映像引导启动方法。

背景技术

采用ARMv7 SoC架构的系列芯片中包括两个部分,处理系统(PS:Process System)和编程逻辑(PL:Program Logic)。一般情况下,采用ARMv7 SoC架构的系列芯片上电启动通常都是通过处理系统端的代码来完成所述处理系统和编程逻辑的配置工作。所述处理系统端的代码即是指一体化映像。采用ARMv7SoC架构的系列芯片启动所需的所述一体化映像由第一阶段引导程序(FSBL,First Stage Boot Loader)、可编程逻辑文件(.bit文件)以及第二阶段引导程序(SSBL,Second Stage Boot Loader)构成。

一体化映像由BootROM引导启动。BootROM主要对NAND、NOR、Quad-SPI、SD等基本外部设备控制器进行初始化,使ARM核可以访问、使用这些外部设备,为引导启动一体化映像做好准备。BootROM可以从多种设备上引导启动一体化映像,例如可以从Flash,SD Card上或者通过JTAG的方式引导启动一体化映像。BootROM通过读取MIO[2..8]位,同时根据硬件模式管脚的设定选用从哪种设备上启动一体化映像,选择的启动模式将被设置到寄存器slcr.BOOT_MODE中。BootROM会根据硬件模式管脚设置将第一阶段引导程序加载到片上存储器(OCM,On Chip Memory)上或者直接在线性Flash上运行,由第一阶段引导程序加载可编程逻辑文件及第二阶段引导程序,完成编程逻辑端的初始化及处理系统端软件程序的运行。

目前现有采用ARMv7 SoC架构的系列芯片的一体化启动方式,在某些嵌入式系统项目中无法直接利用。具体体现在:一、现有的一体化映像中,要求第二阶段引导程序的文件格式为ELF格式,当第二阶段引导程序为BIN文件格式时,合成的一体化映像无法成功加载运行第二阶段引导程序,完成处理系统端软件程序的运行。二、对于从Flash上启动的一体化映像大小是有所限制的,若一体化映像大小超过BootROM可检索映像的大小时,会影响第二阶段引导程序的启动。三、在多个实际项目中,可编程逻辑文件与第二阶段引导程序由不同人员或部门开发,统一合成不便于项目的快速开发和管理。基于上述限制条件,本发明针对采用ARMv7 SoC架构的系列芯片的一体化映像,提出一种新的引导启动方法。

发明内容

为了解决现有一体化映像无法合成并成功启动BIN格式的第二阶段启动映像的问题,本申请提供一种基于ARMv7 SoC的一体化映像引导启动方法。

本申请提供一种基于ARMv7 SoC的一体化映像引导启动方法,所述方法应用于ARMv7 SoC架构的系列芯片,ARMv7 SoC架构的系列芯片包括处理系统端和编程逻辑端,方法包括:

上电系统启动,BootROM引导启动存储于第一固化地址的一体化映像,所述一体化映像包括第一阶段引导程序和可编程逻辑文件;

所述第一阶段引导程序完成处理系统端的基础设备驱动功能初始化;

所述第一阶段引导程序加载所述可编程逻辑文件,完成对编程逻辑端的配置;

所述第一阶段引导程序从预先设置的第二固化地址,引导启动第二阶段引导程序;

所述第二阶段引导程序完成功能配置,系统启动完成。

优选的,所述第一阶段引导程序从预先设置的第二固化地址,引导启动第二阶段引导程序,具体包括:

根据fsblHandoff()挂钩函数,第一阶段引导程序从预先设置的第二固化地址,引导启动BIN文件格式的第二阶段引导程序。

优选的,所述ARMv7 SoC架构的系列芯片包括Xilinx公司的ZYNQ-7000系列的芯片和复旦微电子的FMQL芯片。

优选的,所述第一阶段引导程序加载所述可编程逻辑文件,完成对编程逻辑端的配置,具体包括:

从启动设备中扫描并加载可编程逻辑文件;

将可编程逻辑文件写入编程逻辑端,配置FPGA。

优选的,第二阶段引导程序的格式包括BIN文件格式。

优选的,所述第二固化地址包括非易失存储空间和内存空间。

优选的,第二阶段引导程序的种类包括操作系统映像,组件软件和其他应用程序。

优选的,BootROM引导启动一体化映像的方式,具体包括:

BootROM从SD卡设备,引导启动一体化映像的方式;

BootROM从Flash设备,引导启动一体化映像的方式;

BootROM通过JTAG方式,引导启动一体化映像的方式。

综上所述,本申请提供的一种基于ARMv7 SoC的一体化映像引导启动方法,可带来以下几点优势:

第二阶段引导程序的文件格式不再限于ELF文件格式,BIN文件格式的第二阶段引导程序也可以在采用ARMv7 SoC架构的系列芯片上被引导启动;

第一阶段引导程序到不需要再自行扫描查找第二阶段引导程序,而是直接跳转到预设的第二阶段引导程序的固化地址,节省了启动时间;

将第二阶段引导程序从一体化映像中分离,便于可编程逻辑文件和第二阶段引导程序的更新与管理,也使第二阶段引导程序的开发更加灵活,开发者不再需要关注第二阶段引导的开发环境和应用场景,只需要保证第二阶段引导程序是一种可执行的文件即可;

对于从Flash(NOR Flash,NAND Flash和QSPI Flash)上启动的一体化映像,BootROM可检索映像的大小是有所限制的,而往往第二阶段引导程序的大小在一体化映像中占比较重。本发明中一体化映像的大小仅包括第一阶段引导程序的大小与可编程逻辑文件的大小的总和,极大地降低了因为一体化映像过大而造成启动失败的可能。

附图说明

图1为本申请提供的第一阶段引导程序的主要工作流程示意图;

图2为本申请提供的一体化映像启动流程差异。

具体实施方式

一种基于ARMv7 SoC的一体化映像引导启动方法的技术方案包括:

步骤一:启动设备的确立

采用ARMv7 SoC架构的系列芯片提供从从Flash(NOR Flash,NAND Flash,Quad-SPI Flash),SD Card上以及通过JTAG的方式引导启动一体化映像。其中,选择从Flash和SDCard启动是一种主动的启动模式,Flash和SD Card属于一种启动设备,而选择从JTAG启动则属于一种被动的启动模式。本发明基于主动的启动模式由BootROM引导一体化映像。

步骤二:处理系统端的初始化

一体化映像启动,其中第一阶段引导程序首先进行处理系统端的初始化操作,主要包括MIO、PLL、CLK、DDR、启动设备和其他外设的初始化,从而保证系统的基本功能正常以及在后续的启动流程中,加载第二阶段引导程序时可正常地、成功地从所述启动设备中读取相关的映像信息。

步骤三:可编程逻辑文件的配置

第一阶段引导会从启动设备中尝试加载可编程逻辑文件,进一步配置编程逻辑端。一个可编程逻辑文件属于一个分区,第一阶段引导程序最多可查找15个分区。如果找到了可编程逻辑文件,则不重启,直接配置编程逻辑端,如果未找到可编程逻辑文件就进行软复位,调整地址验证下一个分区信息。

步骤四:第二阶段引导程序的加载

生成遵循BIN文件格式要求的第二阶段引导程序。其中,需明确第二阶段引导程序在采用ARMv7 SoC架构的系列芯片上的固化地址及运行空间。保证固化地址及运行空间实际可用、可访问,且不会被其他程序占用。

第二阶段引导程序也属于一个分区,第一阶段引导程序成功加载可编程逻辑文件后,查找第二阶段引导程序的映像。当找到了第二阶段引导程序的映像,就返回映像的执行地址。本发明中尝试将第二阶段引导程序从一体化映像中分离开,在第一阶段引导程序中为第二阶段引导程序设置一个启动设备上的固定可用的地址,即生成BIN文件格式的第二阶段引导程序时预设的固化地址。这样第一阶段引导程序不再自动查找第二阶段引导程序的映像,而直接将预设的固化地址移交至挂钩函数,直接跳转至预设的启动设备上的固化地址执行第二阶段引导程序的可执行BIN格式文件。本发明与现有一体化映像的组成结构和启动流程的差异如附图2所示。

步骤五:第二阶段引导程序的运行

第一阶段引导程序在启动设备上预设的固化地址加载第二阶段引导程序后,第二阶段引导程序将自身搬家至内存空间中,即所述运行空间,开始运行第二阶段引导程序。

一种基于ARMv7 SoC的一体化映像引导启动方法具体实施方式如下:

步骤一:在第一阶段引导程序的函数ps7_inti()中添加启动设备的驱动初始化,并完成对处理系统端的基本功能初始化;

步骤二:确定第二阶段引导程序的固化地址和运行地址,无论用何种开发软件,生成满足BIN文件格式要求的第二阶段引导程序可执行映像;

步骤三:当一阶段引导程序加载可编程逻辑文件,完成对编程逻辑端的配置后,开始加载第二阶段引导程序。本发明将第二阶段引导程序与一体化映像分离,将第二阶段引导程序的执行地址预设为所述第二阶段引导程序的固化地址。第一阶段引导程序将所述固化地址传递给fsblHandoff()这个挂钩函数,自此引导启动第二阶段引导程序;

步骤四:通过通用工具将所述一阶段引导程序与可编程逻辑文件合成为一体化映像后,固化在BootROM规定的所述第一固化地址,再将分离出来的BIN文件格式的第二阶段引导程序固化在预设的固化地址上;

步骤五:上电系统启动,BootROM引导启动一体化映像,完成处理系统端设备的基础功能初始化以及编程逻辑端可编程逻辑模块的配置,再引导启动BIN文件格式的第二阶段引导程序,完成启动。

综上所述,本发明属于计算机系统软件专业技术领域,涉及一种基于ARMv7SoC架构系列芯片的一体化映像引导启动方法。本方法可以引导启动BIN文件格式的第二阶段引导程序,不仅解决了某国产化操作系统的适配问题,同时对基于ARMv7 SoC架构系列芯片的软件项目更新管理提供了一种便捷化的开发思路。本方法的实现包含以下步骤:1)确定一体化映像烧写的目标设备,保证一体化映像中的第一阶段引导程序在引导第二阶段引导程序时可访问该设备;2)生成第二阶段引导程序的可执行BIN文件,确定第二阶段引导程序的固化地址;3)一体化映像引导过程抽象,在第一阶段引导程序中预设BIN格式的第二阶段引导程序的固化地址;4)合成一体化映像,将第一阶段引导程序固化在所述第一固化地址,将第二阶段引导程序固化在所述预设的固化地址后启动,系统运行。

实时本发明所述的方法后,能够在采用ARMv7 SoC架构的系列芯片上,引导启动操作系统映像,组件软件和其他应用程序时,不受文件格式的限制,灵活的控制与更改第二阶段引导程序。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号