CN106372538A - 一种基于SoC芯片的固件保护方法 - Google Patents
一种基于SoC芯片的固件保护方法 Download PDFInfo
- Publication number
- CN106372538A CN106372538A CN201610767500.7A CN201610767500A CN106372538A CN 106372538 A CN106372538 A CN 106372538A CN 201610767500 A CN201610767500 A CN 201610767500A CN 106372538 A CN106372538 A CN 106372538A
- Authority
- CN
- China
- Prior art keywords
- firmware
- program
- boot program
- digest value
- 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.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Physics (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Storage Device Security (AREA)
Abstract
本发明公开了一种基于SoC芯片的固件保护方法,该方法包括:在SoC芯片上电后,启动boot程序;启动boot程序后,对SoC芯片进行检查,检查是否存在固件firmware;若存在,对固件firmware进行摘要运算得到固件firmware的摘要值,将固件firmware的摘要值与boot程序内保存的摘要值进行比较,若相同,从boot程序跳转到固件程序,运行固件程序,若不同,仍然在boot程序内,运行boot程序。该方法实现避免固件意外损坏,提升固件安全性。
Description
技术领域
本发明涉及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:(Memory Protect Unit)内存保护单元,用于保护敏感的数据区域被用户非法操作导致安全问题。
EFLASH:(Embedded Flash Memory)嵌入式Flash存储器,用于保存程序代码或数据,可进行页擦除和字编程。
SoC:(System On Chip)片上系统。
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芯片进行固件升级时,关闭MPU对固件程序的代码段的保护功能,对固件程序的代码段进行修改,完成固件升级。
进一步的,固件升级完成后,重新开启MPU对固件程序的代码段的保护功能。
进一步的,固件升级完成后,在boot程序中计算固件firmware的摘要值并作为第一摘要值,在上机位中计算固件firmware的摘要值并作为第二更新摘要值;若第一摘要值与第二摘要值相同,利用标志位从boot程序跳转到固件程序。
目前SOC芯片在进行固件升级时,如果为了预防发生传输错误或编程错误,必须进行固件代码的校验,而常用做法是将编程后的代码读出来和原始数据比较,速度慢。而本方法升级固件后,上位机只需要对固件代码区域进行一次摘要运算,就可以用上位机计算出的摘要值和boot程序计算出的摘要值进行比较,升级正常才设置固件有效的标志位,速度快,效率更高。
SOC芯片在升级固件过程中的对固件代码的保护中,升级Firmware代码前,先关闭Firmware代码段的MPU保护功能,保证其他误操作无法修改Firmware代码段;升级完Firmware代码后,先在boot程序中计算Firmware代码的摘要值,发送给上位机,然后在上位机利用Firmware的文件也计算一个摘要值,两者进行比较,两者一致才可以设置标志位来允许boot程序跳转到Firmware程序,防止升级过程中有其他操作破坏Firmware代码段。
综上,本发明所提供的一种基于SoC芯片的固件保护方法,在SoC芯片上电后,启动boot程序;启动boot程序后,对SoC芯片进行检查,检查是否存在固件firmware;若存在,对固件firmware进行摘要运算得到固件firmware的摘要值,将固件firmware的摘要值与boot程序内保存的摘要值进行比较,若相同,从boot程序跳转到固件程序,运行固件程序,若不同,仍然在boot程序内,运行boot程序。可见,在Boot模式跳转固件前,会进行一次摘要运算,将固件firmware的摘要值和Boot内保存的值进行比较,发现没有问题才会进行跳转,防止固件的意外损坏导致的芯片无法正常工作。
以上对本发明所提供的一种基于SoC芯片的固件保护方法进行了详细介绍。本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。
Claims (6)
1.一种基于SoC芯片的固件保护方法,其特征在于,包括:
在SoC芯片上电后,启动boot程序;
启动boot程序后,对SoC芯片进行检查,检查是否存在固件firmware;
若存在,对固件firmware进行摘要运算得到固件firmware的摘要值,将固件firmware的摘要值与boot程序内保存的摘要值进行比较,若相同,从boot程序跳转到固件程序,运行固件程序,若不同,仍然在boot程序内,运行boot程序。
2.如权利要求1所述的方法,其特征在于,所述在SoC芯片上电后,启动boot程序之后,还包括:利用内存保护单元MPU对boot程序的代码段和固件程序的代码段进行保护。
3.如权利要求2所述的方法,其特征在于,还包括:
当接收到对boot程序或者固件程序的代码段的异常操作时,利用所述MPU对所述异常操作进行拦截。
4.如权利要求1所述的方法,其特征在于,还包括:
对SoC芯片进行固件升级时,关闭所述MPU对固件程序的代码段的保护功能,对固件程序的代码段进行修改,完成固件升级。
5.如权利要求4所述的方法,其特征在于,还包括:
固件升级完成后,重新开启所述MPU对固件程序的代码段的保护功能。
6.如权利要求4所述的方法,其特征在于,还包括:
固件升级完成后,在boot程序中计算固件firmware的摘要值并作为第一摘要值,在上机位中计算固件firmware的摘要值并作为第二更新摘要值;
若第一摘要值与第二摘要值相同,利用标志位从boot程序跳转到固件程序。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610767500.7A CN106372538A (zh) | 2016-08-30 | 2016-08-30 | 一种基于SoC芯片的固件保护方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610767500.7A CN106372538A (zh) | 2016-08-30 | 2016-08-30 | 一种基于SoC芯片的固件保护方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN106372538A true CN106372538A (zh) | 2017-02-01 |
Family
ID=57901433
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610767500.7A Pending CN106372538A (zh) | 2016-08-30 | 2016-08-30 | 一种基于SoC芯片的固件保护方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106372538A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112256338A (zh) * | 2020-10-27 | 2021-01-22 | 记忆科技(深圳)有限公司 | Soc启动方法、装置、计算机设备及存储介质 |
WO2021012170A1 (zh) * | 2019-07-23 | 2021-01-28 | 深圳市大疆创新科技有限公司 | 固件启动方法、设备及计算机可读存储介质 |
CN113568629A (zh) * | 2020-04-28 | 2021-10-29 | 中车株洲电力机车研究所有限公司 | 基于can的软件升级方法、装置、计算机设备和存储介质 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20010049794A1 (en) * | 2000-05-24 | 2001-12-06 | Yu-Guang Chen | Write protection software for programmable chip |
CN101004691A (zh) * | 2007-01-23 | 2007-07-25 | 北京映翰通网络技术有限公司 | 一种固件程序升级的方法与装置 |
CN101556542A (zh) * | 2009-05-25 | 2009-10-14 | 成都市华为赛门铁克科技有限公司 | 一种成对冗余结构中器件的升级方法及设备 |
CN101788958A (zh) * | 2010-02-04 | 2010-07-28 | 杭州晟元芯片技术有限公司 | 一种存储器数据保护的方法 |
CN103942058A (zh) * | 2013-01-17 | 2014-07-23 | 深圳市潮流网络技术有限公司 | 一种嵌入式电子设备软件升级方法及系统 |
CN104166565A (zh) * | 2014-08-11 | 2014-11-26 | 成都瑞博慧窗信息技术有限公司 | 一种智能显示终端固件升级方法 |
CN104363274A (zh) * | 2014-11-03 | 2015-02-18 | 九阳股份有限公司 | 一种具有升级功能的网络家电 |
CN105159707A (zh) * | 2015-08-14 | 2015-12-16 | 飞天诚信科技股份有限公司 | 一种安全的金融终端的固件烧写方法及金融终端 |
-
2016
- 2016-08-30 CN CN201610767500.7A patent/CN106372538A/zh active Pending
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20010049794A1 (en) * | 2000-05-24 | 2001-12-06 | Yu-Guang Chen | Write protection software for programmable chip |
CN101004691A (zh) * | 2007-01-23 | 2007-07-25 | 北京映翰通网络技术有限公司 | 一种固件程序升级的方法与装置 |
CN101556542A (zh) * | 2009-05-25 | 2009-10-14 | 成都市华为赛门铁克科技有限公司 | 一种成对冗余结构中器件的升级方法及设备 |
CN101788958A (zh) * | 2010-02-04 | 2010-07-28 | 杭州晟元芯片技术有限公司 | 一种存储器数据保护的方法 |
CN103942058A (zh) * | 2013-01-17 | 2014-07-23 | 深圳市潮流网络技术有限公司 | 一种嵌入式电子设备软件升级方法及系统 |
CN104166565A (zh) * | 2014-08-11 | 2014-11-26 | 成都瑞博慧窗信息技术有限公司 | 一种智能显示终端固件升级方法 |
CN104363274A (zh) * | 2014-11-03 | 2015-02-18 | 九阳股份有限公司 | 一种具有升级功能的网络家电 |
CN105159707A (zh) * | 2015-08-14 | 2015-12-16 | 飞天诚信科技股份有限公司 | 一种安全的金融终端的固件烧写方法及金融终端 |
Non-Patent Citations (2)
Title |
---|
中国计算机学会信息保密专业委员会编: "《中国计算机学会信息保密专业委员会论文集 第16卷》", 30 September 2006, 合肥:中国科学技术大学出版社,北京中电电子出版社 * |
周立功: "《嵌入式Linux开发教程 上》", 31 March 2016, 北京:北京航空航天大学出版社 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2021012170A1 (zh) * | 2019-07-23 | 2021-01-28 | 深圳市大疆创新科技有限公司 | 固件启动方法、设备及计算机可读存储介质 |
CN113568629A (zh) * | 2020-04-28 | 2021-10-29 | 中车株洲电力机车研究所有限公司 | 基于can的软件升级方法、装置、计算机设备和存储介质 |
CN112256338A (zh) * | 2020-10-27 | 2021-01-22 | 记忆科技(深圳)有限公司 | Soc启动方法、装置、计算机设备及存储介质 |
CN112256338B (zh) * | 2020-10-27 | 2023-12-05 | 记忆科技(深圳)有限公司 | Soc启动方法、装置、计算机设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103473067B (zh) | 嵌入式Linux分区与数据还原方法、系统及系统开发方法 | |
US10019240B2 (en) | Method and apparatus for detecting code change | |
CN105989306B (zh) | 操作系统的文件签名方法、文件校验方法及装置 | |
CN102422299B (zh) | 信息设备以及防止执行不正当程序代码的方法 | |
JP2021535477A (ja) | フォールトツリー分析を使用して機能安全のため制御フローグラフを最適化するシステム及び方法 | |
CN105159716B (zh) | 一种存储器件初始化方法和电子设备 | |
CN107783776B (zh) | 固件升级包的处理方法及装置、电子设备 | |
CN107688463B (zh) | 一种嵌入式设备版本文件打包的方法 | |
CN105205401A (zh) | 基于安全密码芯片的可信计算机系统及其可信引导方法 | |
CN107301070A (zh) | 一种升级方法及终端 | |
CN106372538A (zh) | 一种基于SoC芯片的固件保护方法 | |
CN101673330A (zh) | 一种基于bios的计算机安全防护方法及系统 | |
CN111914250B (zh) | 一种Linux系统脚本程序运行时验证与管控方法 | |
US9129137B2 (en) | Method, computer program and device for providing security for intermediate programming code for its execution by a virtual machine | |
CN105373728A (zh) | 广告提示系统及方法 | |
CN103136002A (zh) | 一种基于UBoot的自动升级的控制方法及系统 | |
US20130124845A1 (en) | Embedded device and control method thereof | |
CN104133733A (zh) | 一种内存错误检测方法 | |
CN101639877B (zh) | 电子装置及其更新基本输入输出系统方法 | |
CN109542480A (zh) | 美甲打印装置的操作系统升级方法、装置和介质 | |
US11868465B2 (en) | Binary image stack cookie protection | |
CN101477600B (zh) | 一种用于软件自动防护系统的方法及安全卡 | |
CN109271181A (zh) | 应用兼容性修复方法、终端设备及计算机可读存储介质 | |
CN104751082B (zh) | 操作系统及数据安全控制方法及装置 | |
CN105279094A (zh) | NAND Flash操作处理方法、装置及逻辑器件 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information |
Address after: 215011 23rd Floor, Building 3, Suzhou Pioneer Park, 209 Zhuyuan Road, Suzhou High-tech Zone, Jiangsu Province Applicant after: Suzhou Guoxin Technology Co., Ltd. Address before: 215011 23rd Floor, Building 3, Suzhou Pioneer Park, 209 Zhuyuan Road, Suzhou High-tech Zone, Jiangsu Province Applicant before: C*Core Technology (Suzhou) Co., Ltd. |
|
CB02 | Change of applicant information | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20170201 |
|
RJ01 | Rejection of invention patent application after publication |