一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种嵌入式SOC芯片自适应启动方法与流程

2022-05-27 00:08:56 来源:中国专利 TAG:

一种嵌入式soc芯片自适应启动方法
技术领域
1.本发明属于soc芯片领域,尤其涉及一种嵌入式soc芯片自适应启动方法。


背景技术:

2.通常意义上操作系统的程序可以分为两部分,启动引导程序和操作系统程序本身,一般而言启动引导程序由芯片集成在内部,不可被修改,而操作系统程序则放在外部存储介质上。以windows操作系统为例,操作系统本身放在硬盘上,也就是通常的c盘。soc芯片是片上系统芯片(system on chip,soc)。对于嵌入式soc芯片(arm),操作系统程序(如linux)一般放在外部norflash、nandflash、emmc、sd卡等多种存储介质里面。soc芯片启动项选择通常采用个人电脑启动方式和启动选择管脚方式。中国发明专利cn101196819b提供了一种片上系统芯片自适应启动设备的方法,包括以下步骤:在片上系统芯片中内置启动设备标识码,将标识码分配给支持片上系统芯片启动的设备;系统上电,进入启动设备枚举过程,片上系统芯片枚举启动设备;通过枚举启动设备获取启动设备的识别码,与片上系统芯片内置的识别码组进行匹配,以确定是否为有效的识别码;记录下识别码为有效的设备;最后,片上系统芯片找到设定的启动设备,系统进入启动过程。解决了为适应不同的启动方式而需要采用的复杂的硬件电路的问题,降低了系统的硬件成本和soc成本。
3.目前主流soc芯片启动项选择主要靠启动选择管脚方式,即拨码开关方式来决定操作系统存放于哪一种存储介质,引导程序boot_rom根据拨码开关状态去相关存储介质读取数据执行启动;拨码开关这种方式架构相对简单,但也有一定的问题。现有技术在某些情况下出故障会导致很难维修,甚至可能导致设备变砖。例如,某一种产品(行车记录仪),系统拨码开关选择启动位置为norflash,当系统升级bootloader(uboot)时突然断电或者新升级的bootloader程序本身有错误或者存储器损坏后,想要设备恢复正常运行,就只能重新设置拨码开关键值,选择新的启动方式,理论上可以恢复系统。中国发明专利cn104835537b提供了一种soc芯片自适应启动方法,在测试出efuse损坏后,自动将芯片的boot启动切换为对efuse没有需求的非安全boot,从而使原来的废片可以作为非安全的芯片应用于对安全性能没有要求的产品中继续使用。但是此改进仅仅针对efuse损坏的soc芯片。在实际工程应用中,消费类电子设备,很难拆装外壳重新设置拨码开关、或产品阶段就没有预留拨码开关,这种情况下为产品维修带来很大的问题,要维修必须拆机,拆机又可能导致设备损坏;即使拆开如果没有设置拨码开关,还需要用到更复杂的短接电路板特定管脚的维修方式,这对维修人员业务水平有很高的要求。


技术实现要素:

4.本发明目的在于提供一种嵌入式soc芯片自适应启动方法,相较于传统的拨码键值方式,本发明增加的自动模式能够有效的解决单一启动介质的soc芯片在用户bootloader(uboot)无法正常执行时,系统不能启动的问题、无法启动时的维修困难问题的技术问题。
5.为解决上述技术问题,本发明的一种嵌入式soc芯片自适应启动方法的具体技术方案如下:
6.一种嵌入式soc芯片自适应启动方法,包括以下步骤:
7.(1)在soc芯片上电后,引导程序boot_rom选择不同的boot模式选择引脚bootmodepin,选择启动模式;所述启动模式包括自动启动模式和手动启动模式;
8.(2)选择启动方式,启动方式包括:norflash启动、nandflash启动、emmc启动、sd卡启动;如选择所述手动启动模式,soc芯片根据boot0、boot1引脚的组合状态选择启动方式并执行启动;如选择所述自动启动模式,根据启动状态寄存器的值bootstate判定启动方式并读取启动配置寄存器所指定启动项,执行启动,加载系统;
9.(3)如果系统加载成功,进入bootloader;手动启动模式下加载失败则进入等待下载模式,等待用户手动升级,手动通过usb/uart升级成功则跳回步骤(1),失败则继续等待用户手动下载至升级成功;自动启动模式下单个启动项加载失败后,跳回步骤(1)继续引导下一个启动项,当所有启动项都引导失败的情况下,等待用户手动升级,手动通过usb/uart升级成功则跳回步骤(1),失败则继续等待用户手动下载至升级成功。
10.进一步,步骤(2)中的所述启动配置寄存器包含多个用户配置的启动项:firstboot=第一启动项、secondboot=第二启动项、thirdboot=第三启动项、fourthboot=第四启动项。
11.更进一步,步骤(2)还包括以下步骤:(21)上电,bootstate复位=0,boot_rom读取firstboot引导执行第一启动项,选择norflash启动,若启动成功,则设置bootstate=0,启动失败,则设置bootstate=1;
12.(22)boot_rom读取secondboot引导执行第二启动项,选择nandflash启动,若启动成功,则设置bootstate=0,启动失败,则设置bootstate=2;
13.(23)boot_rom读取thirdboot引导执行第三启动项,选择emmc启动,若启动成功,则设置bootstate=0,启动失败,则设置bootstate=3;
14.(24)boot_rom读取fourthboot引导执行第四启动项,选择sd卡启动,若启动成功,则设置bootstate=0,启动失败,则设置bootstate=4;
15.(25)当全部引导失败后,标记错误,跳转uart/usb命令进入升级模式,等待用户手动下载。
16.进一步,所述boot模式选择引脚bootmodepin为高电平时执行自动启动模式,bootmodepin为低电平时执行手动启动模式。
17.进一步,所述boot0、boot1脚的组合状态为00-norflash启动、01-nandflash启动、10-emmc启动、11-sd卡启动。
18.本发明的一种嵌入式soc芯片自适应启动方法,有益效果如下:
19.相较于现有的拨码开关选择单一启动介质的方案,本发明的自适应启动方法能够实现:
20.(1)解决由于各种原因,如升级uboot操作不当、uboot程序有错误无法启动、存储器损坏等导致的设备无法正常启动问题;
21.(2)解决上述问题发生时的维修困难问题,实现设备的快速修复,降低维修难度和工作量。同时针对不容易拆出电路板维修的产品,自动引导方式的多样性配置为用户提供
了更多的修复选项;
22.(3)为系统稳定性提高提供了解决方案,当系统存在多存储器的情况下,每个存储器都放一份uboot引导代码,当首选启动项目在(1)所述情况下无法正常启动的时候,系统会自动从其他存储器正常启动。
附图说明
23.图1为本发明的整体方法流程图;
24.图2为本发明的模式选择流程图;
25.图3为本发明的手动启动模式流程图;
26.图4为本发明的自动启动模式流程图。
具体实施方式
27.为了更好地了解本发明的目的、结构及功能,下面结合附图,对本发明一种嵌入式soc芯片自适应启动方法做进一步详细的描述。
28.本发明的关键技术点是设计了一套自动启动流程,它能够实现用户定义的多个存储设备的顺序启动,从而避免了单一启动介质启动失败后无法恢复的问题,进而解决嵌入式soc芯片的系统不能正常启动时维修困难的技术问题。
29.如图1所示,一种嵌入式soc芯片自适应启动方法,包括以下步骤:
30.如本发明的模式选择流程图2所示,在soc芯片上电后,通过gpio,引导程序boot_rom选择不同的boot模式选择引脚bootmodepin启动模式;所述启动模式包括自动启动模式和手动启动模式。引导程序boot_rom读取bootmodepin引脚寄存器确定它的电平信号值,bootmodepin为高电平时执行自动启动模式,bootmodepin为低电平时执行手动启动模式。
31.图3为本发明的手动启动模式流程图。上电后通过拨码,bootmodepin为低电平,进入所述手动启动模式。soc芯片根据boot0、boot1脚的组合状态选择某一种存储介质启动方式并执行启动;所述boot0、boot1脚的组合状态为可以为:00,01,10,11。00-norflash启动、01-nandflash启动、10-emmc启动、11-sd卡启动。如果启动成功,则退出,如果失败则跳转错误处理,错误处理的措施可等待用户手动下载。
32.如上电后bootmodepin为高电平,进入所述自动启动模式。图4为本发明的自动启动模式流程图。自动模式是基于一个启动状态寄存器和多个启动配置寄存器。所述启动状态寄存器用于boot_rom引导程序与用户的bootloader程序(如uboot)交互,当boot_rom开始引导时设置所述启动状态寄存器,用户bootloader程序执行完成后,清除引导标记(所述启动状态寄存器清零)。
33.芯片重新上电时所述启动状态寄存器必须为0(即清零);芯片软件重启/看门狗重启等情况下,该寄存器值不改变(不能清零)。在启动状态寄存器的值bootstate清零后,通过启动状态寄存器的值bootstate判定启动方式并读取内部存储器(如efuse)中启动配置寄存器指定的启动项,执行启动。bootstate的取值如下表:
[0034][0035]
通过所述启动状态寄存器,当首选启动项启动出错之后,程序会自动按照既定的启动时序去尝试重启系统,从而避免了单一启动介质启动失败后无法恢复的问题。具体如下:
[0036]
启动配置寄存器具有多个用户配置的启动项参数,实现芯片启动时序的自定义。所述启动配置寄存器包含多个用户配置的启动项,如下表所示:firstboot、secondboot、thridboot、fourthboot需要由用户配置,保存到芯片内部存储器(如efuse),芯片掉电数据不丢失。firstboot=第一启动项、secondboot=第二启动项、thirdboot=第三启动项、fourthboot=第四启动项。
[0037][0038]
具体的,手动启动模式主要包括以下步骤:(21)上电,bootstate复位=0,boot_rom读取firstboot引导执行第一启动项,选择norflash启动,若启动成功,则设置bootstate=0,启动失败,则设置bootstate=1;
[0039]
(22)boot_rom读取secondboot引导执行第二启动项,选择nandflash启动,若启动成功,则设置bootstate=0,启动失败,则设置bootstate=2;
[0040]
(23)boot_rom读取thirdboot引导执行第三启动项,选择emmc启动,若启动成功,则设置bootstate=0,启动失败,则设置bootstate=3;
[0041]
(24)boot_rom读取fourthboot引导执行第四启动项,选择sd卡启动,若启动成功,则设置bootstate=0,启动失败,则设置bootstate=4;
[0042]
(25)当全部引导失败后,标记错误,则令bootstate==0复位,跳转uart/usb命令进入升级模式,等待用户手动下载。
[0043]
通过上述流程方法,当首选启动项启动出错之后,程序可自动按照既定的启动时序去尝试重启系统。
[0044]
目前主流soc芯片启动项选择主要靠启动选择管脚方式(手动启动模式),即以拨码开关方式来决定操作系统存放于哪一种存储介质,引导程序boot_rom根据拨码开关状态去相关存储介质取数据执行启动;拨码开关这种方式架构相对简单,但在某些情况下出故障会导致很难维修,甚至可能导致设备变砖。本发明相较于传统的拨码键值方式,采用自动启动模式能够有效的解决单一启动介质soc芯片在用户bootloader(uboot)无法正常执行时,系统不能启动的问题、无法启动时的维修困难问题、同时还为系统稳定性的提高提供了解决方案。
[0045]
最后,如果系统加载成功,进入bootloader;手动启动模式下加载失败则进入等待下载模式,等待用户手动升级,手动通过usb/uart升级成功则跳回步骤(1),失败则继续等待用户手动下载至升级成功;自动启动模式下单个启动项加载失败后,跳回步骤(1)继续引导下一个启动项,当所有启动项都引导失败的情况下,等待用户手动升级,手动通过usb/uart升级成功则跳回步骤(1),失败则继续等待用户手动下载至升级成功。
[0046]
本发明的一种嵌入式soc芯片自适应启动方法可应用于如下场景:
[0047]
在行车记录仪应用中,当升级uboot时设备断电导致uboot损坏无法重新启动,传统维修方法需要拆开设备,取出电路板连接调试接口进行维修。如果采用本发明的自适应启动方法,预先设置启动时序:第一启动项为norflash、第二启动项sd卡;当出现上述故障情况时,只需要在sd卡里面放入正常的启动文件,再次上电即可重新启动,达到了简单、快速修复设备的目的。
[0048]
可以理解,本发明是通过一些实施例进行描述的,本领域技术人员知悉的,在不脱离本发明的精神和范围的情况下,可以对这些特征和实施例进行各种改变或等效替换。另外,在本发明的教导下,可以对这些特征和实施例进行修改以适应具体的情况及材料而不会脱离本发明的精神和范围。因此,本发明不受此处所公开的具体实施例的限制,所有落入本技术的权利要求范围内的实施例都属于本发明所保护的范围内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献