CN115167904A - 一种防篡改的Bootloader升级方法及系统 - Google Patents
一种防篡改的Bootloader升级方法及系统 Download PDFInfo
- Publication number
- CN115167904A CN115167904A CN202210926819.5A CN202210926819A CN115167904A CN 115167904 A CN115167904 A CN 115167904A CN 202210926819 A CN202210926819 A CN 202210926819A CN 115167904 A CN115167904 A CN 115167904A
- Authority
- CN
- China
- Prior art keywords
- bootloader
- data
- program
- programming
- upgrade
- 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
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
-
- 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/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Stored Programmes (AREA)
Abstract
本发明属于汽车电子技术领域,具体涉及一种防篡改的Bootloader升级方法及系统,通过刷新请求标志位是否有效,以判断是否继续执行程序升级;在线升级进入预编程阶段;在线升级进入编程阶段;以及在线升级进入后编程阶段,实现了数据的可靠传输,确保了数据的完整性和有效性,避免数据传输中出现非法源的干扰。
Description
技术领域
本发明属于汽车电子技术领域,具体涉及一种防篡改的Bootloader升级方法及系统。
背景技术
随着半导体技术的不断进步,消费者对于汽车节能(经济和法规对排放的要求)型、舒适性、互联性、安全性(功能安全和信息安全)的要求越来越高,特别是近年来新能源电动车、车联网和自动驾驶技术的兴起,更大大加速了汽车电子技术的发展。汽车电子ECU(Electronic Control Unit--电控单元)集成的功能日益复杂,为了应对软件远程(在线)功能升级(增加新的功能)和bug修复的需求,对Bootloader(启动加载程序)的需求越来越多。
Bootloader,顾名思义,就是驻留在ECU非易失性存储器中的一段程序加载代码,每次ECU复位后,都会先运行bootloader。它会检查是否有来自通信总线的远程程序加载请求,如果有,则进入bootloader模式,建立与程序下载端(通常为PC上位机)的总线通信并接收通信总线下载的应用程序,从而完成应用程序更新。如果没有来自通信总线的远程程序加载请求,则直接跳转到应用程序复位入口函数,运行应用程序。
为了实现数据的可靠传输,发送端会对有效数据进行校验并将校验结果和有效数据一起发送,接收端接收到有效数据后,也会对有效数据进行发送端同样的校验,校验的结果与接收到的发送端的校验结果进行比较,从而判断数据的完整性。
然而,上述升级方法仅仅能判断数据的完整性,不能保证数据的正确性,一旦传输的数据来自非法源的下载动作,上述校验方法不能识别出来。
因此,基于上述技术问题需要设计一种新的防篡改的Bootloader升级方法及系统。
发明内容
本发明的目的是提供一种防篡改的Bootloader升级方法及系统。
为了解决上述技术问题,本发明提供了一种防篡改的Bootloader升级方法,包括:
刷新请求标志位是否有效,以判断是否继续执行程序升级;
在线升级进入预编程阶段;
在线升级进入编程阶段;以及
在线升级进入后编程阶段。
进一步,所述刷新请求标志位是否有效,以判断是否继续执行程序升级的方法包括:
ECU上电首先执行Bootloader代码;
Bootloader首先执行初始化,然后检查刷新请求标志位是否有效,如果刷新请求标志位有效,则继续执行Bootloader程序进行升级。
进一步,所述在线升级进入预编程阶段的方法包括:
发送10h 03h进入扩展会话模式,以禁止ECU间的正常通信和禁止DTC设置;
发送例程控制31h 01h D0h 04h,以通过此例程来检查ECU刷新条件;
发送85h 02h控制DTC设置,以通过该过程通过功能寻址发送给所有的ECU,禁止DTC存储;
发送28h 03h 03h进行通信控制,通过功能寻址发送给所有的ECU,禁止非诊断报文的发送和接收。
进一步,所述在线升级进入编程阶段的方法包括:
通过10h 02h切换到编程会话模式;
通过27服务进行安全解锁;
通过2E服务写入ECU软件刷新日期;
通过34、36、37服务下载FlashDriver程序;
通过31服务检查FlashDriver程序的数据完整性;
通过31服务请求目标ECU清除APP内存;
通过34、36、37服务下载APP程序;
通过31服务检查APP程序的数据完整性;
通过31服务检查APP程序的数据有效性。
进一步,ECU中Flash空间划分为两个部分:Bootloader代码区域和APP代码区域。
进一步,所述通过31服务检查APP程序的数据有效性中,刷新的APP程序文件格式为S19格式;
先在ECU flash空间APP代码区域的固定地址写入四个字节的固定数值,APP代码生成HEX文件,通过转换工具将该HEX文件生成S19文件,并将S19文件中除上述固定地址4个字节之外的所有有效数据进行CRC32计算,将计算结果覆盖原来4个字节的固定数值;
数据下载完成之后,Bootloader计算接收到的数据字节的CRC32值,并将计算结果与接收到的固定地址的4个字节的CRC32的值进行比较,如果一致,说明数据接收正确,反之,说明下载的S19文件数据无效。
进一步,所述在线升级进入后编程阶段的方法包括:
通过10h 01h切换到默认会话;
通过14h FFh FFh FFh清除DTC。
另一方面,本发明还提供一种防篡改的Bootloader升级系统,包括:
刷新模块,刷新请求标志位是否有效,以判断是否继续执行程序升级;
预编程模块,在线升级进入预编程阶段;
编程模块,在线升级进入编程阶段;以及
后编程模块,在线升级进入后编程阶段。
本发明的有益效果是,本发明通过刷新请求标志位是否有效,以判断是否继续执行程序升级;在线升级进入预编程阶段;在线升级进入编程阶段;以及在线升级进入后编程阶段,实现了数据的可靠传输,确保了数据的完整性和有效性,避免数据传输中出现非法源的干扰。
本发明的其他特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。
为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明的一种防篡改的Bootloader升级方法的流程图;
图2是本发明的ECU上电启动时序示意图;
图3是本发明的Bootloader升级流程预编程流程图;
图4是本发明的Bootloader升级流程编程流程图;
图5是本发明的Bootloader升级流程后编程流程图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图1-图5所示,本实施例提供了一种防篡改的Bootloader升级方法,包括:刷新请求标志位是否有效,以判断是否继续执行程序升级;在线升级进入预编程阶段;在线升级进入编程阶段;以及在线升级进入后编程阶段,实现了数据的可靠传输,确保了数据的完整性和有效性,避免数据传输中出现非法源的干扰。
在本实施例中,所述刷新请求标志位是否有效,以判断是否继续执行程序升级的方法包括:ECU一上电首先执行Bootloader代码。Bootloader首先执行一些基本的初始化,然后检查刷新请求标志位是否有效,如果刷新请求标志位有效,即使应用程序APP(Application)是有效的,也会继续执行Bootloader程序进行升级;
在本实施例中,所述在线升级进入预编程阶段的方法包括:
a)预编程开始,发送10h 03h扩展会话请求,即发送10h 03h进入扩展会话模式:该过程是为了禁止ECU间的正常通信和禁止DTC设置,预刷新需要切换到扩展会话,通过功能寻址发送给所有的ECU;
b)通过31服务检查编程条件是否满足(如电压、车速等),即发送例程控制31h 01hD0h 04h:通过此例程来检查ECU刷新条件,从而确保系统安全,如果有任何不安全的因素,ECU将拒绝刷新;
c)通过85服务关闭DTC存储,因为切换到10h 02h会话后会停止发送应用报文,避免其他ECU记录节点丢失DTC故障,即发送85h 02h控制DTC设置:该过程通过功能寻址发送给所有的ECU,禁止DTC存储;
d)通过28服务禁止应用报文收发,即发送28h 03h 03h进行通信控制:该过程通过功能寻址发送给所有的ECU,禁止非诊断报文的发送和接收。
在本实施例中,所述在线升级进入编程阶段的方法包括:
a)通过10h 02h切换到编程会话模式,即发送10h 02h进入诊断会话模式:通过物理寻址发送10h 02h,然后写入刷写标志位,最后ECU重启进入Bootloader,在BootLoader中需先发送肯定响应再执行跳转到刷新模式动作。
b)通过27服务进行安全解锁,即发送27h 03h/04h进行安全访问:刷写必须通过安全访问,安全访问(27h)服务确保只有合法的诊断仪或上位机能对ECU进行下载操作;通过2E服务写入ECU软件刷新日期。
c)通过34、36、37服务下载FlashDriver程序,即发送34h,36h,37h,31h进行flash驱动下载:通常ECU的flash中不会存储flash读写驱动,因此首先将执行flash驱动的下载。下载应该按照如下时序来进行:请求下载、传输数据、请求传输退出。下载完所有字节后,用“检查刷新完整性”例程(31h 01h FFh 01h)来检查所有的字节都正确传输。
d)发送2Eh F1h 5Ah写入指纹信息:“指纹”标识了是哪个诊断仪对ECU内存做了修改。应用程序下载前,诊断仪将首先写“指纹”,在下载完应用程序后,追踪指纹信息时,诊断仪将发报文“22h F1h 5Bh”,ECU将通过“62h F1h 5Bh…”,返回指纹信息。
e)通过31服务请求目标ECU清除APP内存,即通过发送31h 01h FFh 00h例程控制擦除APP内存:此步骤通过例程控制服务(31h)来执行擦除APP内存。如果擦除内存例程被调用执行,那么应用软件的标志位将被置为无效。
f)通过34、36、37服务下载APP程序,下载过程34h,36h,37h:应用软件或者数据的每一个连续的数据块下载到ECU非易失性内存中,都是遵循下面的服务顺序完成数据传输:请求下载(34h);传输数据(36h);请求退出传输(37h)。
g)通过31服务检查APP程序的数据完整性,即通过发送31h 01h FFh 01h例程控制检查数据完整性:此例程用来检查下载数据的完整性。当所有数据下载完成后,使用CRC32算法验证当前所有数据是否被正确传输和写入。当ECU接收到此服务请求时,Bootloader将计算所有接收到的数据的CRC32值,并将计算结果与诊断仪请求报文中发送的CRC32校验值进行比较,若两者相等,说明数据接收完整。
h)通过31服务检查APP程序的数据有效性,即通过发送31h 01h D0h 03h例程控制检查数据有效性:ECU通过“检查数据有效性”例程控制激活ECU数据有效性校验。刷新ECU之前,先在ECU flash空间APP代码区域的固定地址写入四个字节的固定数值(AA AA AA AA),APP代码生成HEX文件,通过转换工具将该HEX文件生成S19文件,并将S19文件中除上述固定地址4个字节(AA AA AA AA)之外的所有有效数据进行CRC32计算,将计算结果覆盖原来4个字节的固定数值(AA AA AA AA)。数据下载完成之后,Bootloader计算接收到的数据字节(不包含权利要求3所述的固定地址的4个字节)的CRC32值,并将计算结果与接收到的固定地址的4个字节的CRC32的值进行比较,如果一致,说明数据接收正确,反之,说明下载的S19文件数据无效,确保了数据的有效性。
i)通过发送11h 01h请求ECU复位:诊断仪通过ECU复位服务请求将使ECU结束刷新过程,返回到正常的操作模式。内存flash驱动代码必须从RAM缓存中完全清除,避免意外激活这些可能会进行非预期的内存擦除或程序操作的代码。
在本实施例中,ECU中Flash空间划分为两个部分:Bootloader代码区域和APP代码区域。
在本实施例中,所述在线升级进入后编程阶段的方法包括:
a)通过10h 01h切换到默认会话,即通过发送10h 01h进入默认会话控制:ECU接收10h 01h请求,而进入到默认会话模式。
b)通过14h FFh FFh FFh清除DTC,通过发送14h FFh FFh FFh清除DTC:当编程ECU运行在默认会话模式时,网络上其它的ECU仍然在不能正常通信状态,此时,一些可能被存储在编程ECU中的DTC就应该通过14h服务来清除。
本实施例还提供一种防篡改的Bootloader升级系统,包括:刷新模块,刷新请求标志位是否有效,以判断是否继续执行程序升级;预编程模块,在线升级进入预编程阶段;编程模块,在线升级进入编程阶段;以及后编程模块,在线升级进入后编程阶段;各模块的功能已经详细描述不再赘述。
综上所述,本发明通过刷新请求标志位是否有效,以判断是否继续执行程序升级;在线升级进入预编程阶段;在线升级进入编程阶段;以及在线升级进入后编程阶段,实现了数据的可靠传输,确保了数据的完整性和有效性,避免数据传输中出现非法源的干扰。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本发明的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本发明各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上述依据本发明的理想实施例为启示,通过上述的说明内容,相关工作人员完全可以在不偏离本项发明技术思想的范围内,进行多样的变更以及修改。本项发明的技术性范围并不局限于说明书上的内容,必须要根据权利要求范围来确定其技术性范围。
Claims (8)
1.一种防篡改的Bootloader升级方法,其特征在于,包括:
刷新请求标志位是否有效,以判断是否继续执行程序升级;
在线升级进入预编程阶段;
在线升级进入编程阶段;以及
在线升级进入后编程阶段。
2.如权利要求1所述的防篡改的Bootloader升级方法,其特征在于,
所述刷新请求标志位是否有效,以判断是否继续执行程序升级的方法包括:
ECU上电首先执行Bootloader代码;
Bootloader首先执行初始化,然后检查刷新请求标志位是否有效,如果刷新请求标志位有效,则继续执行Bootloader程序进行升级。
3.如权利要求2所述的防篡改的Bootloader升级方法,其特征在于,
所述在线升级进入预编程阶段的方法包括:
发送10h 03h进入扩展会话模式,以禁止ECU间的正常通信和禁止DTC设置;
发送例程控制31h 01h D0h 04h,以通过此例程来检查ECU刷新条件;
发送85h 02h控制DTC设置,以通过该过程通过功能寻址发送给所有的ECU,禁止DTC存储;
发送28h 03h 03h进行通信控制,通过功能寻址发送给所有的ECU,禁止非诊断报文的发送和接收。
4.如权利要求3所述的防篡改的Bootloader升级方法,其特征在于,
所述在线升级进入编程阶段的方法包括:
通过10h 02h切换到编程会话模式;
通过27服务进行安全解锁;
通过2E服务写入ECU软件刷新日期;
通过34、36、37服务下载FlashDriver程序;
通过31服务检查FlashDriver程序的数据完整性;
通过31服务请求目标ECU清除APP内存;
通过34、36、37服务下载APP程序;
通过31服务检查APP程序的数据完整性;
通过31服务检查APP程序的数据有效性。
5.如权利要求4所述的防篡改的Bootloader升级方法,其特征在于,
ECU中Flash空间划分为两个部分:Bootloader代码区域和APP代码区域。
6.如权利要求5所述的防篡改的Bootloader升级方法,其特征在于,
所述通过31服务检查APP程序的数据有效性中,刷新的APP程序文件格式为S19格式;
先在ECU flash空间APP代码区域的固定地址写入四个字节的固定数值,APP代码生成HEX文件,通过转换工具将该HEX文件生成S19文件,并将S19文件中除上述固定地址4个字节之外的所有有效数据进行CRC32计算,将计算结果覆盖原来4个字节的固定数值;
数据下载完成之后,Bootloader计算接收到的数据字节的CRC32值,并将计算结果与接收到的固定地址的4个字节的CRC32的值进行比较,如果一致,说明数据接收正确,反之,说明下载的S19文件数据无效。
7.如权利要求6所述的防篡改的Bootloader升级方法,其特征在于,
所述在线升级进入后编程阶段的方法包括:
通过10h 01h切换到默认会话;
通过14h FFh FFh FFh清除DTC。
8.一种防篡改的Bootloader升级系统,其特征在于,包括:
刷新模块,刷新请求标志位是否有效,以判断是否继续执行程序升级;
预编程模块,在线升级进入预编程阶段;
编程模块,在线升级进入编程阶段;以及
后编程模块,在线升级进入后编程阶段。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210926819.5A CN115167904A (zh) | 2022-08-03 | 2022-08-03 | 一种防篡改的Bootloader升级方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210926819.5A CN115167904A (zh) | 2022-08-03 | 2022-08-03 | 一种防篡改的Bootloader升级方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115167904A true CN115167904A (zh) | 2022-10-11 |
Family
ID=83478144
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210926819.5A Pending CN115167904A (zh) | 2022-08-03 | 2022-08-03 | 一种防篡改的Bootloader升级方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115167904A (zh) |
-
2022
- 2022-08-03 CN CN202210926819.5A patent/CN115167904A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110231952B (zh) | 一种ecu程序备份及循环升级控制方法及装置 | |
CN110347412B (zh) | 电子控制单元固件升级管理方法、装置、设备和存储介质 | |
US6285948B1 (en) | Control apparatus and method having program rewriting function | |
CN102135922B (zh) | 应用程序的刷新方法和系统 | |
CN108279916B (zh) | 电子控制单元程序更新方法和装置 | |
CN107678762B (zh) | 一种系统版本升级方法及装置 | |
CN111782234A (zh) | 一种车载软件的刷写方法、控制装置、中央处理器及汽车 | |
CN110825403A (zh) | 一种汽车电子控制单元ecu刷写的方法及系统 | |
JP2001265582A (ja) | 車両制御装置のためのメモリ書き換えシステム | |
CN113448604B (zh) | 一种ota刷写方法、系统、可读存储介质及车辆 | |
CN113645590B (zh) | 基于加密算法的远程控制车辆的方法、装置、设备及介质 | |
CN110263590B (zh) | 一种车载ecu及其安全防护方法 | |
CN112540778A (zh) | 车辆数据的刷写方法、诊断设备及刷写系统 | |
CN112000358A (zh) | 充电桩的升级方法与智能充电桩 | |
CN106843979B (zh) | 一种应用程序的更新方法及装置 | |
CN115167904A (zh) | 一种防篡改的Bootloader升级方法及系统 | |
US20020046344A1 (en) | Vehicle data rewrite technique | |
JP3176506B2 (ja) | 自動車用制御装置 | |
CN117130915A (zh) | 控制器刷写方法及系统 | |
CN114840241A (zh) | 一种数据处理方法以及相关设备 | |
JP2001297009A (ja) | 車両制御装置のための書き換えシステム | |
CN111475191A (zh) | 基于多核技术的汽车控制器软件升级系统及方法 | |
CN115982710A (zh) | 一种基于以太网ota安全升级方法 | |
JP3732413B2 (ja) | 自動車用制御装置 | |
CN113935011A (zh) | 用于执行控制设备的安全启动序列的方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |