CN106293832B - 一种soc芯片引导启动方法及系统 - Google Patents
一种soc芯片引导启动方法及系统 Download PDFInfo
- Publication number
- CN106293832B CN106293832B CN201610645125.9A CN201610645125A CN106293832B CN 106293832 B CN106293832 B CN 106293832B CN 201610645125 A CN201610645125 A CN 201610645125A CN 106293832 B CN106293832 B CN 106293832B
- Authority
- CN
- China
- Prior art keywords
- spi
- data
- flash
- soc chip
- boot
- 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.)
- Active
Links
Images
Classifications
-
- 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/654—Updates using techniques specially adapted for alterable solid state memories, e.g. for EEPROM or flash memories
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)
- Stored Programmes (AREA)
Abstract
本发明公开了一种SOC芯片引导启动方法,根据SPI NOR FLASH与SPI NAND FLASH具有硬件管脚功能相同的特点,提供了一种SOC芯片引导启动方法,能够灵活选择其中一种SPI FLASH来实现SOC芯片引导启动,兼容不同厂商的SPI FLASH。本发明扩大可选择的SPI FLASH物料品种,提升设计灵活度、后向兼容性,节省占用SOC芯片Pin脚选择SPI NOR FLASH或者SPI NAND FLASH启动,降低设计成本。
Description
技术领域
本发明涉及SOC芯片领域,尤其涉及SOC芯片引导启动方法及系统。
背景技术
SOC(System on Chip,系统级芯片)意指它是一个产品,是一个有专用目标的集成电路,其中包含完整系统并有嵌入软件的全部内容。同时它又是一种技术,用以实现从确定系统功能开始,到软/硬件划分,并完成设计的整个过程。从狭义角度讲,它是信息系统核心的芯片集成,是将系统关键部件集成在一块芯片上;从广义角度讲,SOC是一个微小型系统,如果说CPU(Central Processing Unit,中央处理器)是大脑,那么SOC就是包括大脑、心脏、眼睛和手的系统。国内外学术界一般倾向将SOC定义为将微处理器、模拟IP核、数字IP核和存储器(或片外存储控制接口)集成在单一芯片上,它通常是客户定制的,或是面向特定用途的标准产品。
目前,现有技术中典型芯片启动过程包含以下步骤:执行ROM(Read Only Memory,只读存储器)程序,从SPI FLASH(Serial Peripheral Interface flash,串行外设接口闪存)搬移启动引导程序至内部RAM(random access memory,随机存取存储器),并跳转至RAM执行启动引导程序,由启动引导程序完成频率配置,板级配置,DDR初始化等,下载并执行操作系统。SOC芯片的程序加载与读取系统,包括SOC芯片和用于存储算法程序的片外存储器,如SPI FLASH等。SPI FLASH由于其具有极少的引脚,采用的封装面积较小,其可靠性和稳定性与并行接口的FLASH相同而在嵌入式系统中得以广泛使用,其相比于并行接口的FLASH具有明显的成本优势。
现有技术中对于SOC芯片的启动一般是采用SPI NOR FLASH或SPI NAND FLASH中的一种作为存储启动引导程序的片外存储器,通过相应的驱动来读取启动引导程序至RAM中,以启动芯片。使用不同厂商的SPI FLASH会引起差异性,可选择的FLASH物料品种过于单一,芯片设计灵活度降低,兼容性差,而通过选择不同FLASH启动芯片又需要占用芯片Pin脚,增加设计成本。
发明内容
为解决上述技术问题,本发明提供一种SOC芯片引导启动方法及系统,能够兼容使用SPI NOR FLASH或SPI NAND FLASH引导启动SOC芯片。
本发明提供的技术方案如下:
本发明公开了一种SOC芯片引导启动方法,包括如下步骤:S100:当SOC芯片上电后,执行ROM中的初始化程序;S300:SOC芯片初始化完成后,使用SPI NOR FLASH驱动通过SPI控制器读取SPI FLASH内的第一数据的起始数据,并判断所述第一数据是否包含启动引导程序,若是,执行步骤S400;否则执行步骤S500;S400:根据所述第一数据的起始数据读取所述第一数据中的启动引导程序至RAM,并执行RAM中的启动引导程序引导SOC芯片启动;S500:使用SPI NAND FLASH驱动读取SPI FLASH内的第二数据的起始数据,并判断所述第二数据是否包含启动引导程序,若是,执行步骤S600;否则,SOC芯片启动失败,结束;S600:根据所述第二数据的起始数据读取所述第二数据中的启动引导程序至RAM,并执行RAM中的启动引导程序引导SOC芯片启动。
本发明根据SPI NOR FLASH与SPI NAND FLASH具有硬件管脚功能相同的特点,提供了一种合理的机制,能够兼容不同厂商的SPI FLASH,包括SPI NOR FLASH或SPI NANDFLASH,来实现SOC芯片的引导启动。通过根据设计需求灵活选择其中一种SPI FLASH来实现芯片引导启动,能够避免使用不同厂商的SPI FLASH引起的差异性,扩大可选择的SPIFLASH物料品种,芯片应用时能够无差别使用片外存储器SPI FLASH,提升设计灵活度、后向兼容性,节省占用SOC芯片Pin脚选择SPI NOR FLASH或者SPI NAND FLASH启动,降低设计成本。
进一步优选的,所述步骤S100和所述步骤S300之间还包括步骤S200,所述步骤S200具体包括:S210:读取RTC的复位信息;S220:根据所述RTC的复位信息判断SOC芯片是否为初始上电;若是则进入步骤S300;否则视为其它复位,进入步骤S230;S230:按照ROM存储的复位处理程序对所述SPI FLASH进行复位处理,复位后进入步骤S300。
本发明在异常复位情况下对SPI FLASH进行复位,清除其在复位之前运行过程中的各种模式状态,从而使其在启动时统一处于预设的读写配置模式,保证通过SPI FLASH驱动能够正常读写SPI FLASH。
进一步优选的,所述步骤S230“按照ROM存储的复位处理程序进行复位处理”具体包括:将SPI控制器的CS片选Pin脚配置为GPIO模输出模式,并置高;将GPIO的SPI Power控制PowerEn脚连接至SPI FLASH电源控制LDO芯片的EN端口,配置SPI Power控制PowerEn脚为输出模式并置低,保持SPI FLASH下电;延迟预设时间后,将SPI Power控制PowerEn脚配置为输入模式,CS片选Pin脚配置为功能模式,恢复SPI FLASH正常上电状态。
本发明通过增加电源控制LDO芯片实现对SPI FLASH的硬件复位,解决了有些封装下的SPI NOR NAND FLASH或SPI NAND FLASH没有提供硬件复位所需要的复位管脚的技术问题。
进一步优选的,所述步骤S230“按照ROM存储的复位处理程序对所述SPI FLASH进行复位处理”具体包括:通过软件分别发送1线模式的复位命令0x66,0x99,0xff;进一步判断SOC芯片是否为异常复位,若是,则补充发送QPI模式的复位命令0x66,0x99。
本发明还提供软件复位方式对SPI FLASH进行复位,可以在无硬件复位条件的情况下实现软件复位,通过这种软件硬件可选的方式实现SPI FLASH复位,为SPI FLASH复位多提供了一种选择,同时也为芯片启动的稳定性和可靠性增加了一层保障。
进一步优选的,所述步骤S300具体包括:S310:使用SPI NOR FLASH驱动读取SPIFLASH内存储的第一数据的起始数据;S320:判断所述第一数据的的起始数据格式是否能被识别且数据校验是否通过,若第一数据的的起始数据格式能被识别且数据校验通过,则第一数据包含启动引导程序,进入步骤S400,否则视为使用SPI NOR FLASH驱动引导启动不成功,进入步骤S500。
进一步优选的,所述步骤S400具体包括:S410:解析步骤S310读取的SPI FLASH的第一数据,获取启动引导程序的加载地址和加载长度;S420:根据启动引导程序的加载地址和加载长度使用SPI NOR FLASH驱动将所述启动引导程序读取至RAM;S430:对RAM中的启动引导程序进行数据校验成功后,将PC指针跳转至RAM中的加载地址执行启动引导程序,完成SOC芯片启动。
本发明中SPI FLASH包括SPI NOR FLASH和SPI NAND FLASH。SPI NOR FLASH具有随机直接读取数据的特点,传输效率很高,在小容量时具有很高的成本效益。
进一步优选的,所述步骤S500具体包括:S510:使用SPI NAND FLASH驱动读取SPIFLASH的第二数据的起始数据;S520:对所述SPI FLASH的第二数据的起始数据进行ECC检验;若ECC校验通过,则进入步骤S530;否则,视为使用SPI NAND FLASH启动不成功,结束启动;S530:判断ECC校验成功的所述第二数据的的起始数据格式是否能被识别,若是,则所述第二数据包含引导程序,进入步骤S600,否则,SOC芯片启动失败,结束。
进一步优选的,所述步骤S600具体包括:S610:解析步骤S530中ECC校验成功的所述第二数据,获取启动引导程序的加载地址和加载长度;S620:根据启动引导程序的加载地址和加载长度使用SPI NAND FLASH驱动读取启动引导程序至RAM,当读取过程中RAM的启动引导程序ECC校验通过且启动引导程序进行数据校验成功时,将PC指针跳转至RAM中的加载地址执行启动引导程序,完成SOC芯片启动。
本发明中SPI NAND FLASH主要优点在于存储密度高、容量大,有更占优势的存储性价比。
本发明还公开了一种SOC芯片引导启动系统,使用上述SOC芯片引导启动方法,包括:SPI FLASH和SOC芯片;所述SOC芯片内部包括通过总线相互连接的CPU、ROM、RAM以及SPI控制器;所述SPI FLASH与所述SPI控制器相连;所述CPU用于所述SOC芯片上电后执行所述ROM中存储的程序,使用SPI NOR FLASH驱动通过所述SPI控制器读取所述SPI FLASH内的第一数据的起始数据,并判断所述第一数据是否包含启动引导程序;以及当判断所述第一数据包含启动引导程序时,根据所述第一数据的起始数据通过所述SPI控制器读取所述第一数据的启动引导程序至RAM,并执行RAM中的启动引导程序引导SOC芯片启动;所述CPU还用于当判断所述第一数据不包含启动引导程序时,使用SPI NAND FLASH驱动通过所述SPI控制器读取所述SPI FLASH内的第二数据的起始数据,并判断所述第二数据是否包含启动引导程序;以及当判断所述第二数据包含启动引导程序时,根据所述第二数据的起始数据通过所述SPI控制器读取所述第二数据中的启动引导程序至RAM,并执行RAM中的启动引导程序引导SOC芯片启动。
进一步优选的,SOC芯片还包括RTC;所述RTC通过总线与所述CPU相连;所述CPU还用于当SOC芯片上电后读取所述RTC的复位信息并判断所述SOC芯片是否为初始上电时;以及当根据所述RTC的复位信息判断SOC芯片不为初始上电时,执行ROM中的复位处理程序。
本发明采用外部SPI NOR FLASH或SPI NAND FLASH作为外部存储器,用于存储启动引导程序,通过驱动匹配来完成SPI NOR FLASH和SPI NAND FLASH的识别并完成芯片引导启动功能,与现有技术相比,本发明可避免使用不同厂商SPI NOR FLASH或SPI NANDFLASH引起的差异性,扩大可选择的FLASH物料品种,芯片应用时无差别使用SPI NOR FLASH或SPI NAND FLASH,提升设计灵活度、后向兼容性,通过软件、硬件可选的方式实现SPI NORFLASH或SPI NAND FLASH复位,在保证启动的稳定性、可靠性下,节省占用芯片Pin脚选择SPI NOR FLASH或者SPI NAND FLASH启动,进而能降低设计成本。
附图说明
下面将以明确易懂的方式,结合附图说明优选实施方式,对本发明予以进一步说明。
图1为本发明一种SOC芯片引导启动方法的步骤示意图;
图2为本发明一种SOC芯片引导启动方法的SPI FLASH复位流程图;
图3为本发明一种SOC芯片引导启动方法的流程图;
图4为本发明一种SOC芯片引导启动系统的主要组成框图;
图5为SPI NOR FLASH结构图;
图6为SPI NAND FLASH结构图;
图7为本发明一种SOC芯片引导启动系统的完整组成框图。
附图标号说明:
1、SOC芯片,11、CPU,12、ROM,13、SPI控制器,14、RAM,15、RTC,16、GPIO,2、SPIFLASH,3、SPI FLASH电源控制LDO芯片。
具体实施方式
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对照附图说明本发明的具体实施方式。显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图,并获得其他的实施方式。
为使图面简洁,各图中只示意性地表示出了与本发明相关的部分,它们并不代表其作为产品的实际结构。另外,以使图面简洁便于理解,在有些图中具有相同结构或功能的部件,仅示意性地绘示了其中的一个,或仅标出了其中的一个。在本文中,“一个”不仅表示“仅此一个”,也可以表示“多于一个”的情形。
为了实现SPI NOR FLASH和SPI NAND FLASH兼容启动SOC芯片,本发明提供的一种SOC芯片引导启动方法,图1为本发明一种SOC芯片引导启动方法的步骤示意图,如图1所示,包括如下步骤:S100:当SOC芯片上电后,执行ROM中的初始化程序;S300:初始化完成后,使用SPI NOR FLASH驱动通过SPI控制器读取SPI FLASH内的第一数据的起始数据,并判断所述第一数据是否包含启动引导程序,若是,执行步骤S400;否则执行步骤S500;S400:根据所述第一数据的起始数据读取所述第一数据中的启动引导程序至RAM,并执行RAM中的启动引导程序引导SOC芯片启动;S500:使用SPI NAND FLASH驱动读取SPI FLASH内的第二数据的起始数据,并判断所述第二数据是否包含启动引导程序,若是,执行步骤S600;否则,SOC芯片启动失败,结束;S600:根据所述第二数据的起始数据读取所述第二数据中的启动引导程序至RAM,并执行RAM中的启动引导程序引导SOC芯片启动。
本发明中SOC芯片上电后,CPU读取ROM内的初始化程序并对其执行解码等处理,对将要进行加载算法程序的外部接口进行读写模式配置等初始化操作。本发明中片外存储器SPI FLASH统一配置成3字节地址,1线模式驱动,保证SPI驱动能够正常读写片外SPIFLASH。
本发明中SPI FLASH是指SPI NOR FLASH或SPI NAND FLASH。本发明根据SPI NORFLASH与SPI NAND FLASH具有硬件管脚功能相同的特点,提供了一种合理的机制,能够兼容不同厂商的SPI FLASH,包括SPI NOR FLASH或SPI NAND FLASH,来实现SOC芯片的引导启动。通过根据设计需求灵活选择其中一种SPI FLASH来实现芯片引导启动,能够避免使用不同厂商的SPI FLASH引起的差异性,扩大可选择的SPI FLASH物料品种,芯片应用时能够无差别使用片外存储器SPI FLASH,提升设计灵活度、后向兼容性,节省占用SOC芯片Pin脚选择SPI NOR FLASH或者SPI NAND FLASH启动,降低设计成本。
优选的,所述步骤S100和所述步骤S300之间还包括步骤S200,所述步骤S200具体包括:S210:读取RTC的复位信息;S220:根据所述RTC的复位信息判断SOC芯片是否为初始上电;若是则进入步骤S300;否则视为其它复位,进入步骤S230;S230:按照ROM存储的复位处理程序对所述SPI FLASH进行复位处理,复位后进入步骤S300。
本发明在异常复位情况下对SPI FLASH进行复位,清除其在复位之前运行过程中的各种模式状态,从而使其在启动时统一处于预设的读写配置模式,保证通过SPI FLASH驱动能够正常读写SPI FLASH。
优选的,所述步骤S230“按照ROM存储的复位处理程序进行复位处理”具体包括:将SPI控制器的CS片选Pin脚配置为GPIO模输出模式,并置高;将GPIO的SPI Power控制PowerEn脚连接至外部SPI FLASH的电源控制LDO芯片的EN端口,配置SPI Power控制PowerEn脚为输出模式并置低,保持SPI FLASH下电;延迟预设时间后,将SPI Power控制PowerEn脚配置为输入模式,CS片选Pin脚配置为功能模式,恢复SPI FLASH正常上电状态。
本发明通过增加电源控制LDO芯片实现对SPI FLASH的硬件复位,解决了有些封装下的SPI NOR FLASH或者SPI NAND FLASH没有提供硬件复位所需要的复位管脚的技术问题。
优选的,所述步骤S230“按照ROM存储的复位处理程序进行复位处理”具体包括:通过软件分别发送1线模式的复位命令0x66,0x99,0xff;进一步判断SOC芯片是否为异常复位,若是,则补充发送QPI模式的复位命令0x66,0x99。
具体的,本发明中的软件复位,首先判断SOC芯片若为正常软复位,通过软件分别发送SPI NOR FLASH或者SPI NAND FLASH能识别的复位命令0x66,0x99,0xff,片外存储器为SPI NOR FLASH或者SPI NAND FLASH时,都能进入软件复位流程。否则,SOC芯片若为异常复位,则由于SPI NOR FLASH若在复位前处于QPI模式,那么将无法识别1线模式的复位命令,在此情况下,补充发送QPI模式的复位命令0x66,0x99,确保其能够被正常复位。
图2为本发明一种SOC芯片引导启动方法的SPI FLASH复位流程图。如图2所示,本发明一种SOC芯片引导启动方法的SPI FLASH复位流程包括:
200、CS片选Pin脚配置为GPIO输出模式,置高,SPI Power控制PowerEn脚配置为输出模式,置低;
201、延迟预设时间。
202、CS片选Pin脚配置为功能模式,SPI Power控制PowerEn脚配置为输入模式。
203、发送1线模式的复位命令0x66,0x99。
204、发送1线模式的复位命令0xff。
205、判断SOC芯片是否为异常复位;若是,视为异常复位,执行步骤206;否则,则进入步骤207。
206、发送QPI模式的复位命令0x66,0x99。
207、复位完成,复位流程结束。
具体的,本发明可在芯片启动时增加电源控制LDO芯片实现对SPI FLASH的硬件复位,若无电源控制LDO芯片接入,则通过软件复位方式进行复位。本发明提供软件复位方式对SPI FLASH进行复位,可以在无硬件复位条件的情况下实现软件复位,通过这种软件硬件可选的方式实现SPI FLASH复位,为SPI FLASH复位多提供了一种选择,同时也为芯片启动的稳定性和可靠性增加了一层保障。
优选的,所述步骤S300具体包括:S310:使用SPI NOR FLASH驱动读取SPI FLASH内存储的第一数据的起始数据;S320:判断所述第一数据的的起始数据格式是否能被识别且数据校验是否通过,若第一数据的起始数据格式能被识别且数据校验通过,则第一数据包含启动引导程序,进入步骤S400,否则视为使用SPI NOR FLASH驱动引导启动不成功,进入步骤S500。
优选的,所述步骤S400具体包括:S410:解析步骤S310读取的SPI FLASH的第一数据,获取启动引导程序的加载地址和加载长度;S420:根据启动引导程序的加载地址和加载长度使用SPI NOR FLASH驱动将所述启动引导程序读取至RAM;S430:对RAM中的启动引导程序进行数据校验成功后,将PC指针跳转至RAM中的加载地址执行启动引导程序,完成SOC芯片启动。
具体的,本发明先使用SPI NOR FLASH驱动读取SPI FLASH的起始地址开始的头512字节,SPI NOR FLASH驱动读取命令0xb,即为1线、3byte address、fast read模式,主流SPI NOR FLASH兼容此读模式。SPI FLASH的起始地址开始的头512字节中包含魔术字、crc校验码、加载地址、加载长度等参数,魔术字用于判断读取的数据是否符合启动引导程序文件头格式,若魔术字正确则对头512字节进行CRC校验,与CRC校验码进行比对,若CRC校验未通过,则尝试使用SPI NAND FLASH驱动读取SPI FLASH的第二数据进行引导启动。若CRC校验通过,则解析读取的数据,得到启动引导程序的加载地址和加载长度等参数,使用SPINOR FLASH驱动读取启动引导程序至RAM,完成数据校验;若数据校验通过,则PC指针跳转至加载地址,将控制权交给启动引导程序完成后续启动功能,若数据校验没通过,则引导SOC芯片启动失败,采用其他引导方式进行引导启动,比如启动USB初始化,并等待PC连接,启动fastboot功能的引导。
优选的,所述步骤S500具体包括:S510:使用SPI NAND FLASH驱动读取SPI FLASH的第二数据的起始数据;S520:对所述SPI FLASH的第二数据进行ECC检验;若ECC校验通过,则进入步骤S530;否则,视为使用SPI NAND FLASH启动不成功,结束启动;S530:判断ECC校验成功的所述第二数据的起始数据格式是否能被识别,若是,则所述第二数据包含启动引导程序,进入步骤S600,否则,SOC芯片启动失败,结束。
优选的,所述步骤S600具体包括:S610:解析步骤S530中ECC校验成功的所述第二数据,获取启动引导程序的加载地址和加载长度;S620:根据启动引导程序的加载地址和加载长度使用SPI NAND FLASH驱动读取启动引导程序至RAM,当RAM的启动引导程序ECC校验通过时,将PC指针跳转至RAM中的加载地址执行启动引导程序,完成SOC芯片启动。
具体的,本发明在使用SPI NOR FLASH驱动读取SPI FLASH的起始地址开始的头512字节进行CRC校验失败后,则使用SPI NAND FLASH驱动读取SPI FLASH的第二数据。SPINAND FLASH驱动读取时,先发送读取整个page到cache命令0x13,再发送读取命令0x3,即1线、2byte address、1byte dummy、read from cache模式,且将byte address设定为0,此时读取数据为page前2k数据,即起始地址page的2048字节,主流SPI NAND FLASH兼容此读模式。起始地址page的2048字节若因ECC校验失败等错误发生,则重复尝试读取后4个page的2048,若其中有一个page读取成功,且其格式被识别、并且ECC校验通过,则解析读取的page数据,得到启动引导程序的加载地址和加载长度等参数,根据加载地址和加载长度使用SPINAND FLASH驱动读取启动引导程序至RAM,在读取过程中,若因ECC校验失败等错误发生,则跳过该page,继续读后续page,若累计发生错误次数小于等于5次,且读取的启动引导程序数据校验通过,则PC指针跳转至加载地址,将控制权交给启动引导程序完成后续启动功能。若ECC校验未通过,则视为SOC芯片启动失败,可通过其他引导方式启动SOC芯片。SPI NANDFLASH容量更大,并且写入和擦除的速度也很快,并且使用寿命较长。通常在SPI NOR FLASH快闪存储器中,不需要错误校正能力,而在SPI NAND FLASH中需要错误检测及纠正能力。
具体的,针对不同page大小的SPI NAND FLASH,由于驱动并不识别片外是2k还是4kpage大小的SPI NAND FLASH,统一将page大小以2k计算,在对4k page的SPI NAND FLASH读写的时候,一个page大小也算作2k,在此方式下逻辑地址与flash存储地址映射关系为[2k*page_num,2k*page_num+2k]<->[4k*page_num,4k*page_num+2k],通过这样的方法来对2k/4kpage的SPI NAND FLASH实现读写兼容。相对于启动过程,在烧录SPI NAND FLASH时也统一以page大小2k进行烧录启动引导程序,保证读写过程一致。
图3为本发明一种SOC芯片引导启动方法的流程图。下面结合图3对本发明的完整流程进行详细介绍。
300、芯片启动。
301、读取RTC复位信息。
302、判断SPI FLASH的复位状态;若SPI FLASH为上电复位,即为初始上电,则执行步骤304;若SPI FLASH为其他复位,则执行步骤303。
303、进入复位处理程序,对SPI FLASH进行复位。
304、使用SPI NOR FLASH驱动通过SPI控制器读取SPI FLASH内的第一数据的起始数据。
305、判断所述第一数据的起始数据格式是否能被识别且数据校验是否通过;若是,执行步骤306;否则,执行步骤310。
306、解析所述第一数据,获得启动引导程序的加载地址和加载长度。
307、根据启动引导程序的加载地址和加载长度使用SPI NOR FLASH驱动读取启动引导程序至RAM。
308、对RAM中的启动引导程序进行数据校验;若数据校验成功,则执行步骤309;否则,执行步骤320。
309、PC指针跳转至RAM中的加载地址执行启动引导程序,完成SOC芯片启动。
310、当第一数据的起始数据格式未能被识别时,使用SPI NAND FLASH驱动读取SPI FLASH内的第二数据的起始数据。
311、判断第二数据的起始数据是否发生ECC校验错误;若是,执行步骤318;否则,执行步骤312。
312、判断ECC校验成功的所述第二数据的起始数据格式是否能被识别;若是,执行步骤313;否则,执行步骤320。
313、解析所述第二数据,获得启动引导程序的加载地址和加载长度。
314、根据启动引导程序的加载地址和加载长度使用SPI NAND FLASH驱动读取启动引导程序至RAM。
315、判断RAM的启动引导程序ECC校验是否发生错误;若是,执行步骤319;否则执行步骤316。
316、判断启动引导程序是否全部读取完成;若是,执行步骤317;否则重复执行步骤314。
317、对RAM中的启动引导程序进行数据校验;若数据校验成功,则执行步骤309;否则,执行步骤320。
318、判断第二数据ECC校验错误次数累计是否超过预设次数;若是,执行步骤320;否则,返回执行步骤310。
319、判断RAM的启动引导程序ECC校验错误次数累计是否超过预设次数;若是,执行步骤320;否则,执行步骤316。
320、SOC芯片启动失败,结束。
图4为本发明一种SOC芯片引导启动系统的主要组成框图,如图4所示,一种SOC芯片引导启动系统,使用上述SOC芯片引导启动方法,包括:SPI FLASH 2和SOC芯片1;所述SOC芯片1内部包括通过总线相互连接的CPU 11、ROM 12、RAM 14以及SPI控制器13;所述SPIFLASH 2与所述SPI控制器13相连;所述CPU 11用于所述SOC芯片1上电后执行所述ROM 12中存储的程序,使用SPI NOR FLASH驱动通过所述SPI控制器13读取所述SPI FLASH 2内的第一数据的起始数据,并判断所述第一数据是否包含启动引导程序;以及当判断所述第一数据包含启动引导程序时,根据所述第一数据的起始数据通过所述SPI控制器13读取所述第一数据的启动引导程序至RAM 14,并执行RAM 14中的启动引导程序引导SOC芯片1启动;所述CPU 11还用于当判断所述第一数据不包含启动引导程序时,使用SPI NAND FLASH驱动通过所述SPI控制器13读取所述SPI FLASH 2内的第二数据的起始数据,并判断所述第二数据是否包含启动引导程序;以及当判断所述第二数据包含启动引导程序时,根据所述第二数据的起始数据通过所述SPI控制器13读取所述第二数据中的启动引导程序至RAM 14,并执行RAM 14中的启动引导程序引导SOC芯片1启动。
本发明中的SPI FLASH 2是指SPI NOR FLASH或SPI NAND FLASH中的一种,图5为SPI NOR FLASH结构图,图6为SPI NAND FLASH结构图。如图5和图6所示,虽然SPI NORFLASH和SPI NAND FLASH的内部硬件结构不同,其读、写、擦除方式有较大差异,如SPI NORFLASH按照512bytes page进行读操作,SPI NAND FLASH按照2k/4k bytes page进行读操作,且需要从NAND memory读到CACHE memory中,再从CACHE memory中通过SPI接口读数据,不同厂商的SPI NOR FLASH和SPI NAND FLASH的操作方式也存在差异,但是SPI NOR FLASH和SPI NAND FLASH具有相同的管脚功能,比如时钟信号SCK,片选信号CS,数据IO0,数据IO1,数据IO2以及数据IO3,因此其基本的读写功能在某些操作方式下可以兼容,故本发明将两种SPI FLASH的管脚进行合并使用,如图4中SPI控制器13与SPI FLASH 2连接关系所示。通过这种方式,在芯片启动时可以灵活地选择其中一种FLASH来启动芯片。
由于SPI NOR FLASH和SPI NAND FLASH读写命令/时序不一致,因此在启动过程时分开处理,通过驱动匹配来完成SPI NOR FLASH和SPI NAND FLASH的识别并完成引导功能。
图7为本发明一种SOC芯片引导启动系统的完整组成框图,优选的,如图7所示,SOC芯片1还包括RTC 15;所述RTC 15通过总线与所述CPU 11相连;所述CPU 11还用于当SOC芯片1上电后读取所述RTC 15的复位信息并判断所述SOC芯片1是否为初始上电时;以及当根据所述RTC 15的复位信息判断SOC芯片1不为初始上电时,执行ROM 12中的复位处理程序。
优选的,如图7所示,还包括SPI FLASH电源控制LDO芯片3;所述SPI FLASH电源控制LDO芯片3通过GPIO 16连接至所述SOC芯片1的总线;当根据所述RTC 15的复位信息判断SOC芯片1不为初始上电时,所述CPU 11还用于执行所述ROM 12中的复位处理程序,将所述SPI控制器13的CS片选Pin脚配置为GPIO模输出模式,并置高;将所述GPIO 16的SPI Power控制PowerEn脚连接至所述SPI FLASH电源控制LDO芯片3的EN端口,配置所述SPI Power控制PowerEn脚为输出模式并置低,保持所述SPI FLASH下电;延迟预设时间后,将所述SPIPower控制PowerEn脚配置为输入模式,所述CS片选Pin脚配置为功能模式,恢复所述SPIFLASH正常上电状态。
具体的,硬件复位功能是在系统死机,而SPI NOR FLASH或SPI NAND FLASH未死机的情况下必须使用的一种功能,但是由于外部管教兼容性考虑,在有些封装下SPI NORFLASH和SPI NAND FLASH没有提供硬件复位所需要的复位管脚。本发明通过增加SPI FLASH电源控制LDO芯片3可对SPI FLASH 2进行硬件复位,解决了由于外部管教兼容性考虑,有些封装下SPI NOR FLASH和SPI NAND FLASH没有提供硬件复位所需要的复位管脚的情况下的复位难题。
需要说明的是,本系统中各模块之间的信息交互、执行过程等内容与上述方法实施例基于同一构思,具体内容可参见本发明方法实施例中的叙述,此处不再赘述。
应当说明的是,上述实施例均可根据需要自由组合。以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (8)
1.一种SOC芯片引导启动方法,用于读取SPI FLASH存储的启动引导程序启动SOC芯片,其特征在于,包括如下步骤:
S100:当SOC芯片上电后,执行ROM内的初始化程序;
S300:初始化完成后,使用SPI NOR FLASH驱动通过SPI控制器读取SPI FLASH内的第一数据的起始数据,并判断所述第一数据是否包含启动引导程序,若是,执行步骤S400;否则执行步骤S500;
S400:根据所述第一数据的起始数据读取所述第一数据中的启动引导程序至RAM,并执行RAM中的启动引导程序引导SOC芯片启动;
S500:使用SPI NAND FLASH驱动读取SPI FLASH内的第二数据的起始数据,并判断所述第二数据是否包含启动引导程序,若是,执行步骤S600;否则,SOC芯片启动失败,结束;
S600:根据所述第二数据的起始数据读取所述第二数据中的启动引导程序至RAM,并执行RAM中的启动引导程序引导SOC芯片启动;
所述步骤S300具体包括:
S310:使用SPI NOR FLASH驱动读取SPI FLASH内存储的第一数据的起始数据;
S320:判断所述第一数据的起始数据的格式是否能被识别且数据校验是否通过,若第一数据的起始数据格式能被识别且数据校验通过,则第一数据包含启动引导程序,进入步骤S400,否则视为使用SPI NOR FLASH驱动引导启动不成功,进入步骤S500;
所述步骤S500具体包括:
S510:使用SPI NAND FLASH驱动读取SPI FLASH的第二数据的起始数据;
S520:对所述SPI FLASH的第二数据的起始数据进行ECC检验;若ECC校验通过,则进入步骤S530;否则,视为使用SPINAND FLASH启动不成功,结束启动;
S530:判断ECC校验成功的所述第二数据的的起始数据格式是否能被识别,若是,则所述第二数据包含引导程序,进入步骤S600,否则,SOC芯片启动失败,结束。
2.如权利要求1所述的SOC芯片引导启动方法,其特征在于,所述步骤S100和所述步骤S300之间还包括步骤S200,所述步骤S200具体包括:
S210:读取RTC的复位信息;
S220:根据所述RTC的复位信息判断SOC芯片是否为初始上电;若是则进入步骤S300;否则视为其它复位,进入步骤S230;
S230:按照ROM存储的复位处理程序对所述SPI FLASH进行复位处理,复位后进入步骤S300。
3.根据权利要求2所述的SOC芯片引导启动方法,其特征在于,所述步骤S230“按照ROM存储的复位处理程序对所述SPI FLASH进行复位处理”具体包括:
将SPI控制器的CS片选Pin脚配置为GPIO模输出模式,并置高;将GPIO的SPI Power控制PowerEn脚连接至SPI FLASH电源控制LDO芯片的EN端口,配置SPI Power控制PowerEn脚为输出模式并置低,保持SPI FLASH下电;
延迟预设时间后,将SPI Power控制PowerEn脚配置为输入模式,CS片选Pin脚配置为功能模式,恢复SPI FLASH正常上电状态。
4.根据权利要求3所述的SOC芯片引导启动方法,其特征在于,所述步骤S230“按照ROM存储的复位处理程序对所述SPI FLASH进行复位处理”还包括:
通过软件分别发送1线模式的复位命令0x66,0x99,0xff;进一步判断SOC芯片是否为异常复位,若是,则补充发送QPI模式的复位命令0x66,0x99。
5.根据权利要求1所述的SOC芯片引导启动方法,其特征在于,所述步骤S400具体包括:
S410:解析步骤S310读取的SPI FLASH的第一数据,获取启动引导程序的加载地址和加载长度;
S420:根据启动引导程序的加载地址和加载长度使用SPI NOR FLASH驱动将所述启动引导程序读取至RAM;
S430:对RAM中的启动引导程序进行数据校验成功后,将PC指针跳转至RAM中的加载地址执行启动引导程序,完成SOC芯片启动。
6.根据权利要求1所述的SOC芯片引导启动方法,其特征在于,所述步骤S600具体包括:
S610:解析步骤S530中ECC校验成功的所述第二数据,获取启动引导程序的加载地址和加载长度;
S620:根据启动引导程序的加载地址和加载长度使用SPI NAND FLASH驱动读取第二数据中的启动引导程序至RAM,当读取过程中RAM的启动引导程序ECC校验通过且启动引导程序进行数据校验成功时,将PC指针跳转至RAM中的加载地址执行启动引导程序,完成SOC芯片启动。
7.一种SOC芯片引导启动系统,使用上述权利要求1-6任意一项所述的SOC芯片引导启动方法,其特征在于,包括:SPI FLASH和SOC芯片;所述SOC芯片内部包括通过总线相互连接的CPU、ROM、RAM以及SPI控制器;所述SPI FLASH与所述SPI控制器相连;
所述CPU用于所述SOC芯片上电后执行所述ROM中存储的初始化程序,使用SPI NORFLASH驱动通过所述SPI控制器读取所述SPI FLASH内的第一数据的起始数据,并判断所述第一数据是否包含启动引导程序;以及当判断所述第一数据包含启动引导程序时,根据所述第一数据通过所述SPI控制器读取所述第一数据的启动引导程序至RAM,并执行RAM中的启动引导程序引导SOC芯片启动;
所述CPU还用于当判断所述第一数据不包含启动引导程序时,使用SPI NAND FLASH驱动通过所述SPI控制器读取所述SPI FLASH内的第二数据的起始数据,并判断所述第二数据是否包含启动引导程序;以及当判断所述第二数据包含启动引导程序时,根据所述第二数据通过所述SPI控制器读取所述第二数据中的启动引导程序至RAM,并执行RAM中的启动引导程序引导SOC芯片启动。
8.如权利要求7所述的SOC芯片引导启动系统,其特征在于,所述SOC芯片还包括RTC;所述RTC通过总线与所述CPU相连;所述CPU还用于当SOC芯片上电后读取所述RTC的复位信息并判断所述SOC芯片是否为初始上电时;以及当根据所述RTC的复位信息判断SOC芯片不为初始上电时,执行ROM中的复位处理程序。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610645125.9A CN106293832B (zh) | 2016-08-09 | 2016-08-09 | 一种soc芯片引导启动方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610645125.9A CN106293832B (zh) | 2016-08-09 | 2016-08-09 | 一种soc芯片引导启动方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106293832A CN106293832A (zh) | 2017-01-04 |
CN106293832B true CN106293832B (zh) | 2020-01-14 |
Family
ID=57666509
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610645125.9A Active CN106293832B (zh) | 2016-08-09 | 2016-08-09 | 一种soc芯片引导启动方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106293832B (zh) |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107301043B (zh) * | 2017-06-07 | 2020-10-30 | 武汉虹信通信技术有限责任公司 | 一种微基站及交换板网络芯片的自启动实现方法 |
CN107632868B (zh) * | 2017-09-14 | 2020-08-28 | 苏州国芯科技股份有限公司 | 芯片启动的方法、控制装置、系统、计算机可读存储介质 |
CN109725939A (zh) * | 2017-10-27 | 2019-05-07 | 深圳市中兴微电子技术有限公司 | 一种芯片启动方法、芯片和计算机可读存储介质 |
CN107894903B (zh) * | 2017-12-07 | 2021-08-03 | 北京兆易创新科技股份有限公司 | Spi-nand的配置文件的io方法和装置 |
CN108628699B (zh) * | 2018-05-11 | 2021-10-19 | 简式国际汽车设计(北京)有限公司 | 一种基于ecc的flash数据异常处理方法及装置 |
CN109117205B (zh) * | 2018-07-23 | 2021-03-30 | 北京大恒图像视觉有限公司 | 一种基于mcu和fpga的双芯片加载方法 |
CN109254799B (zh) * | 2018-08-29 | 2023-03-10 | 新华三技术有限公司 | 引导程序的启动方法、装置及通信设备 |
CN109542469B (zh) * | 2018-11-26 | 2022-07-01 | 中国兵器装备集团自动化研究所有限公司 | 一种bios芯片替代电路实现方法 |
CN111399926A (zh) * | 2018-12-13 | 2020-07-10 | 北汽福田汽车股份有限公司 | 下载启动程序的方法和装置 |
CN109725941A (zh) * | 2018-12-18 | 2019-05-07 | 深圳吉迪思电子科技有限公司 | 一种用于显示驱动芯片的可编程初始化方法及系统 |
CN112347482A (zh) * | 2019-08-09 | 2021-02-09 | 北京物芯科技有限责任公司 | 一种系统级芯片soc启动方法、装置、soc及存储介质 |
CN111338702B (zh) * | 2020-02-27 | 2022-04-26 | 珠海亿智电子科技有限公司 | 一种基于片外nor-flash的SOC系统引导方法 |
CN112783438B (zh) * | 2020-12-24 | 2024-01-16 | 展讯半导体(成都)有限公司 | 功能手机的存储器使用方法及相关产品 |
CN115098176B (zh) * | 2022-07-25 | 2023-02-21 | 珠海普林芯驰科技有限公司 | 一种芯片启动引导和程序升级的方法及芯片架构 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101021794A (zh) * | 2006-05-25 | 2007-08-22 | 杭州晟元芯片技术有限公司 | 一种芯片上电后的程序引导方法 |
CN101140537A (zh) * | 2007-10-24 | 2008-03-12 | 国电南京自动化股份有限公司 | 嵌入式操作系统的备份与恢复操作方法 |
WO2008033630A1 (en) * | 2006-09-12 | 2008-03-20 | Apple Inc. | Storing a driver for controlling a memory |
CN102855145A (zh) * | 2011-06-30 | 2013-01-02 | 安凯(广州)微电子技术有限公司 | 嵌入式电子设备启动方法及系统 |
CN103995754A (zh) * | 2014-04-23 | 2014-08-20 | 汉柏科技有限公司 | 一种控制power-pc中cpu启动切换的系统及方法 |
CN104461657A (zh) * | 2014-12-29 | 2015-03-25 | 迈普通信技术股份有限公司 | 一种主备嵌入式引导程序的启动方法及装置 |
CN105117255A (zh) * | 2015-08-28 | 2015-12-02 | 青岛中星微电子有限公司 | 一种启动装载BootLoader程序的引导方法和装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20160033519A (ko) * | 2014-09-18 | 2016-03-28 | 삼성전자주식회사 | 라이트 명령들에 대한 로그를 생성할 수 있는 데이터 저장 장치의 작동 방법과 이를 포함하는 raid 시스템의 작동 방법 |
-
2016
- 2016-08-09 CN CN201610645125.9A patent/CN106293832B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101021794A (zh) * | 2006-05-25 | 2007-08-22 | 杭州晟元芯片技术有限公司 | 一种芯片上电后的程序引导方法 |
WO2008033630A1 (en) * | 2006-09-12 | 2008-03-20 | Apple Inc. | Storing a driver for controlling a memory |
CN101140537A (zh) * | 2007-10-24 | 2008-03-12 | 国电南京自动化股份有限公司 | 嵌入式操作系统的备份与恢复操作方法 |
CN102855145A (zh) * | 2011-06-30 | 2013-01-02 | 安凯(广州)微电子技术有限公司 | 嵌入式电子设备启动方法及系统 |
CN103995754A (zh) * | 2014-04-23 | 2014-08-20 | 汉柏科技有限公司 | 一种控制power-pc中cpu启动切换的系统及方法 |
CN104461657A (zh) * | 2014-12-29 | 2015-03-25 | 迈普通信技术股份有限公司 | 一种主备嵌入式引导程序的启动方法及装置 |
CN105117255A (zh) * | 2015-08-28 | 2015-12-02 | 青岛中星微电子有限公司 | 一种启动装载BootLoader程序的引导方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN106293832A (zh) | 2017-01-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106293832B (zh) | 一种soc芯片引导启动方法及系统 | |
EP1710696B1 (en) | Semiconductor device and method for activating the same | |
US9256744B2 (en) | System-on-chip and booting method thereof | |
US20060075395A1 (en) | Flash card system | |
US8037358B2 (en) | Semiconductor device and boot method for the same | |
US20080086631A1 (en) | Flash memory controller controlling various flash memory cells | |
CN102135927B (zh) | 一种基于nand flash的系统引导方法和装置 | |
US6587916B2 (en) | Microcomputer with built-in programmable nonvolatile memory | |
JP2006276967A (ja) | 半導体装置 | |
US8935558B2 (en) | Overclocking module, a computer system and a method for overclocking | |
CN102200916A (zh) | 电子设备、可配置的部件及该部件的配置信息存储方法 | |
CN109800032B (zh) | Bootrom多核加载方法及装置 | |
JP2010140266A (ja) | 電子デバイスシステムと電子デバイス | |
US11829220B2 (en) | Power management circuit, chip and upgrade method therefor, and server | |
CN111627475B (zh) | 存储器和其电子装置及其测试系统、测试方法和应用方法 | |
CN102075710A (zh) | 一种电视机的启动运行方法及电视机 | |
CN112306782B (zh) | 面向调测试的操作系统内核引导与加载硬件及方法 | |
US20120185639A1 (en) | Electronic device, memory controlling method thereof and associated computer-readable storage medium | |
CN117093247A (zh) | 嵌入式设备的固件升级方法、装置、芯片和计算设备 | |
US11327772B2 (en) | Method of loading software code, corresponding system and vehicle equipped with such a system | |
CN100363893C (zh) | 加载系统及方法 | |
CN116185299A (zh) | 闪存控制器及相关装置和方法 | |
CN116302122A (zh) | 多核异构域控制器、外设适配方法以及存储介质 | |
CN110825421A (zh) | 一种固件升级方法、系统及可读存储介质 | |
CN115480827A (zh) | 一种mcu芯片启动方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |