一种基于SoC芯片的固件保护方法技术

技术编号:14521018 阅读:93 留言:0更新日期:2017-02-01 23:58
本发明专利技术公开了一种基于SoC芯片的固件保护方法,该方法包括:在SoC芯片上电后,启动boot程序;启动boot程序后,对SoC芯片进行检查,检查是否存在固件firmware;若存在,对固件firmware进行摘要运算得到固件firmware的摘要值,将固件firmware的摘要值与boot程序内保存的摘要值进行比较,若相同,从boot程序跳转到固件程序,运行固件程序,若不同,仍然在boot程序内,运行boot程序。该方法实现避免固件意外损坏,提升固件安全性。

【技术实现步骤摘要】

本专利技术涉及SoC芯片
,特别是涉及一种基于SoC芯片的固件保护方法。
技术介绍
目前,单片机技术已发展到32位通用CPU芯片,主流SoC芯片都在内部集成有EFLASH模块,用于保存客户定制的程序和数据,而这些程序代码和数据恰恰是最有价值的资料。为了方便在芯片发布后修正固件的问题或增加固件的功能,通用的做法是CPU先运行一个Boot代码,然后从Boot代码跳转到固件代码去运行。这种做法增加了灵活性,当需要更新固件时,只需要从固件模式恢复到Boot模式即可,但在Boot模式下,如果遇到意外情况,如命令错误,意外断电等等情况,会导致固件意外损坏,固件安全性很低,也导致SoC芯片无法正常工作。
技术实现思路
本专利技术的目的是提供一种基于SoC芯片的固件保护方法,以实现避免固件意外损坏,提升固件安全性。为解决上述技术问题,本专利技术提供一种基于SoC芯片的固件保护方法,包括:在SoC芯片上电后,启动boot程序;启动boot程序后,对SoC芯片进行检查,检查是否存在固件firmware;若存在,对固件firmware进行摘要运算得到固件firmware的摘要值,将固件firmware的摘要值与boot程序内保存的摘要值进行比较,若相同,从boot程序跳转到固件程序,运行固件程序,若不同,仍然在boot程序内,运行boot程序。优选的,所述在SoC芯片上电后,启动boot程序之后,还包括:利用内存保护单元MPU对boot程序的代码段和固件程序的代码段进行保护。优选的,所述方法还包括:当接收到对boot程序或者固件程序的代码段的异常操作时,利用所述MPU对所述异常操作进行拦截。优选的,所述方法还包括:对SoC芯片进行固件升级时,关闭所述MPU对固件程序的代码段的保护功能,对固件程序的代码段进行修改,完成固件升级。优选的,所述方法还包括:固件升级完成后,重新开启所述MPU对固件程序的代码段的保护功能。优选的,所述方法还包括:固件升级完成后,在boot程序中计算固件firmware的摘要值并作为第一摘要值,在上机位中计算固件firmware的摘要值并作为第二更新摘要值;若第一摘要值与第二摘要值相同,利用标志位从boot程序跳转到固件程序。本专利技术所提供的一种基于SoC芯片的固件保护方法,在SoC芯片上电后,启动boot程序;启动boot程序后,对SoC芯片进行检查,检查是否存在固件firmware;若存在,对固件firmware进行摘要运算得到固件firmware的摘要值,将固件firmware的摘要值与boot程序内保存的摘要值进行比较,若相同,从boot程序跳转到固件程序,运行固件程序,若不同,仍然在boot程序内,运行boot程序。可见,在Boot模式跳转固件前,会进行一次摘要运算,将固件firmware的摘要值和Boot内保存的值进行比较,发现没有问题才会进行跳转,防止固件的意外损坏导致的芯片无法正常工作。附图说明为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。图1为本专利技术所提供的一种基于SoC芯片的固件保护方法的流程图;图2为芯片上电流程图。具体实施方式本专利技术的核心是提供一种基于SoC芯片的固件保护方法,以实现避免固件意外损坏,提升固件安全性。为了使本
的人员更好地理解本专利技术方案,下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。术语解释:MPU:(MemoryProtectUnit)内存保护单元,用于保护敏感的数据区域被用户非法操作导致安全问题。EFLASH:(EmbeddedFlashMemory)嵌入式Flash存储器,用于保存程序代码或数据,可进行页擦除和字编程。SoC:(SystemOnChip)片上系统。Firmware:又称固件,即运行于Soc芯片上的程序,用于实现客户需求,有可能是包含操作系统的,也可能是不含操作系统的固件。Boot:先于固件程序运行,如果检测到固件程序存在时,Boot程序会跳转到固件程序运行,否则就一直在Boot模式下,等待写入固件的命令;也可以在固件中恢复到Boot模式,方便对固件进行升级。请参考图1,图1为本专利技术所提供的一种基于SoC芯片的固件保护方法的流程图,该方法包括:S11:在SoC芯片上电后,启动boot程序;S12:启动boot程序后,对SoC芯片进行检查,检查是否存在固件firmware;S13:若存在,对固件firmware进行摘要运算得到固件firmware的摘要值,将固件firmware的摘要值与boot程序内保存的摘要值进行比较,若相同,从boot程序跳转到固件程序,运行固件程序,若不同,仍然在boot程序内,运行boot程序。可见,在Boot模式跳转固件前,会进行一次摘要运算,将固件firmware的摘要值和Boot内保存的值进行比较,发现没有问题才会进行跳转,防止固件的意外损坏导致的芯片无法正常工作。基于上述方法,具体的,固件firmware的摘要值为固件程序的代码段的摘要值。步骤S13中若存在即表示若存在固件firmware。步骤S11之后,利用内存保护单元MPU对boot程序的代码段和固件程序的代码段进行保护。进一步的,当接收到对boot程序或者固件程序的代码段的异常操作时,利用所述MPU对所述异常操作进行拦截。所述异常操作为在电流电压异常时产生的外部的干扰操作,或者,所述异常操作为用户的误操作。可见,使用MPU来对程序代码和数据进行保护,默认对程序代码和数据都使用MPU保护,当需要对程序代码修改或数据更新时,才临时打开MPU保护,修改完成后重新打开MPU保护。目前的SOC内固件无保护,当遇到硬件问题如电流,电压异常等,或者遇到软件问题例如误操作,导致固件损坏时,SOC芯片也会报废,而本方法不管是硬件问题还是软件问题导致eflash的异常操作,由于本方法将所有代码区域进行了MPU保护,所有对代码段的操作均会被MPU拦截,这样也就不会造成代码区域被篡改,导致芯片报废。SoC芯片在上电过程中对固件代码的保护中,芯片上电后,boot程序启动后立刻打开对boot程序段,Firmware程序段的MPU保护,防止误操作破坏程序;boot程序启动后检查是否Firmware固件存在,如果存在则对Firmware固件进行摘要运算,和boot程序内保存的正确的摘要值进行比较,摘要值正确才会跳转到Firmware去执行,不正确的情况下则仍然在boot程序内运行。Firmware即指代固件,Firmware程序段即指代固件程序的代码段。图2为芯片上电流程,图2中Firmware代码段即指代固件程序的代码段。目前的SOC芯片内部或外部保存两份固件,当正常固件出错时,用备份固件运行,缺点是成本很高,而本方法中代码区域不会被篡改,也就不需要进行双备份本文档来自技高网
...

【技术保护点】
一种基于SoC芯片的固件保护方法,其特征在于,包括:在SoC芯片上电后,启动boot程序;启动boot程序后,对SoC芯片进行检查,检查是否存在固件firmware;若存在,对固件firmware进行摘要运算得到固件firmware的摘要值,将固件firmware的摘要值与boot程序内保存的摘要值进行比较,若相同,从boot程序跳转到固件程序,运行固件程序,若不同,仍然在boot程序内,运行boot程序。

【技术特征摘要】
1.一种基于SoC芯片的固件保护方法,其特征在于,包括:在SoC芯片上电后,启动boot程序;启动boot程序后,对SoC芯片进行检查,检查是否存在固件firmware;若存在,对固件firmware进行摘要运算得到固件firmware的摘要值,将固件firmware的摘要值与boot程序内保存的摘要值进行比较,若相同,从boot程序跳转到固件程序,运行固件程序,若不同,仍然在boot程序内,运行boot程序。2.如权利要求1所述的方法,其特征在于,所述在SoC芯片上电后,启动boot程序之后,还包括:利用内存保护单元MPU对boot程序的代码段和固件程序的代码段进行保护。3.如权利要求2所述的方法,其特征在于,还包括:当...

【专利技术属性】
技术研发人员:肖佐楠郑茳匡启和王廷平聂智王忠海
申请(专利权)人:苏州国芯科技有限公司
类型:发明
国别省市:江苏;32

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1