CN114741737A - 一种基于uds-fbl的app完整性检查方法 - Google Patents
一种基于uds-fbl的app完整性检查方法 Download PDFInfo
- Publication number
- CN114741737A CN114741737A CN202210405378.4A CN202210405378A CN114741737A CN 114741737 A CN114741737 A CN 114741737A CN 202210405378 A CN202210405378 A CN 202210405378A CN 114741737 A CN114741737 A CN 114741737A
- Authority
- CN
- China
- Prior art keywords
- application program
- bootloader
- program
- binary data
- uds
- 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
- 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
-
- 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/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44589—Program code verification, e.g. Java bytecode verification, proof-carrying code
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种基于UDS‑FBL的APP完整性检查方法,通过UDS统一诊断服务发送与刷写相关的请求报文;生成并下载bootloader程序和应用程序对应的二进制数据,将其存储至控制器的ROM空间,进入Bootloader编程模式,接收通过诊断服务下载FALSHDRIVER,然后通过FALSHDRIVER擦除应用程序,Bootloader程序将应用程序有效标志位写为无效,再把ROM空间中对应应用程序的区域擦除;再将新的应用程序二进制数据写入应用程序对应的ROM空间中;Bootloader程序进行新的应用程序完整性校验,校验成功,则将新的应用程序有效性设置为有效,控制器重启并进入新的应用程序。
Description
技术领域
本发明涉及数据处理技术领域,具体涉及一种基于UDS-FBL的APP完整性检查方法。
背景技术
随着汽车电子技术跟新迭代,越来越多的汽车电子器件需要基于原有硬件上进行升级软件;同时,由于嵌入式软件的开发无法避免设计测试阶段未能测出的bug。应用软件的升级以及问题修复都要求电子器件本身具备应用软件的能力。
常用的汽车电子器件软件升级方式是利用统一诊断服务协议IOS-14229中的诊断命令,通过车载网络连接的诊断仪/刷新仪,发送一系列的诊断请求,将新的软件由外部设备传输至控制器中,并指导控制器进行软件升级。但现行方案中,从应用程序APP的生成,到升级完成到控制单元,需要经过多次传输保存,无法保证APP是否被篡改、丢失部分数据等情况发生。
发明内容
针对上述现有技术的不足,本发明所要解决的技术问题是:如何提供一种应用程序刷新时,降低APP被篡改或数据丢失风险的基于UDS-FBL的APP完整性检查方法。
为了解决上述技术问题,本发明采用了如下的技术方案:
一种基于UDS-FBL的APP完整性检查方法,其特征在于:包括:
通过UDS统一诊断服务发送与刷写相关的请求报文;
生成并下载bootloader程序对应的二进制数据,将bootloader程序对应的二进制数据存储至控制器的ROM空间,该ROM空间为不可编程区域;
生成并下载应用程序对应的二进制数据,将应用程序对应的二进制数据储存至控制器的ROM空间,该ROM空间是在进行程序刷写时擦除和写入的可编程区域;
所述UDS统一诊断服务支持默认、扩展和编程模式;Bootloader程序包含UDS诊断协议层、数据传输层以及CAN驱动层,其能够实现完整的诊断协议栈,该诊断协议栈支持默认、扩展和编程模式;应用程序包括诊断协议栈,支持默认和扩展模式;应用程序设置外部编程请求标志位,用于执行切换编程诊断模式的诊断请求命令;
当在应用程序中接收到切换编程诊断模式的诊断请求命令时,设置外部编程请求标志位,重启控制器,Bootloader程序对外部编程请求标志位判断,进而进入Bootloader编程模式;
进入Bootloader编程模式后,接收通过诊断服务下载FALSHDRIVER,然后通过FALSHDRIVER擦除应用程序, Bootloader程序将应用程序有效标志位写为无效,再把ROM空间中对应应用程序的区域擦除;
应用程序对应的二进制数据设置为A1,通过CRC计算可以得出C1,将C1按照A1的存储格式bin或S19或hex方式进行拼接,将C1拼接到A1后面,形成新的应用程序二进制数据A2,再将新的应用程序二进制数据写入应用程序对应的ROM空间中;
Bootloader程序进行新的应用程序完整性校验,校验成功,则将新的应用程序有效性设置为有效,控制器重启并进入新的应用程序。
作为优化,控制器的ROM空间分为Bootloader程序区域和应用程序区域,Bootloader程序区域存储的是bootloader源码经过编译后的二进制可执行代码,控制器上电或复位时,完成自检后软件会跳转至其区域的入口;应用程序区域存储的是应用程序源码经过编译后的二进制可执行代码,bootloader程序可以对此区域的ROM进行擦除与写入,bootloader程序执行后,会跳转至此区域入口。
作为优化,bootloader程序在收到新的应用程序二进制数据A2后,将A1和C1分别存储入ROM空间和RAM空间。
作为优化,bootloader程序在收到新的应用程序二进制数据A2后,判断A2是否为最后4个byte,如果是,则将A2存入RAM空间,否则将A2存入ROM空间,对ROM空间内的A2进行CRC计算,得出新的CRC值C2,将C1和C2进行比较,相同则将新的应用程序有效标志位写为有效。
综上所述,本发明的有益效果在于:本发明具有以下优点:
(1)校验码C2由APP程序生成时加入,最后刷入ECU后由bootloader检验;保证应用程序在刷新到MCU内的整个传输过程中数据被篡改或丢失能检测出来;
(2)bootloader只将A1存入ROM,C1则在RAM,控制器重启后,自动遗弃RAM内数据,C1不会影响到原有应用程序执行。
附图说明
为了使发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步的详细描述,其中:
图1为本发明中的Bootloader程序与应用程序在控制器内存中的映像示意图;
图2为本发明中的新应用程序的生成示意图;
图3为本发明中的下载刷新数据流示意图;
图4为本发明中的程序启动步骤示意图;
图5为本发明中的下载刷写步骤示意图。
具体实施方式
下面结合附图对本发明作进一步的详细说明。
如图1至图5所示,本具体实施方式中的一种基于UDS-FBL的APP完整性检查方法,包括:
通过UDS统一诊断服务发送与刷写相关的请求报文;
生成并下载bootloader程序对应的二进制数据,将bootloader程序对应的二进制数据存储至控制器的ROM空间,该ROM空间为不可编程区域;
生成并下载应用程序对应的二进制数据,将应用程序对应的二进制数据储存至控制器的ROM空间,该ROM空间是在进行程序刷写时擦除和写入的可编程区域;
所述UDS统一诊断服务支持默认、扩展和编程模式;Bootloader程序包含UDS诊断协议层、数据传输层以及CAN驱动层,其能够实现完整的诊断协议栈,该诊断协议栈支持默认、扩展和编程模式;应用程序包括诊断协议栈,支持默认和扩展模式;应用程序设置外部编程请求标志位,用于执行切换编程诊断模式的诊断请求命令;
当在应用程序中接收到切换编程诊断模式的诊断请求命令时,设置外部编程请求标志位,重启控制器,Bootloader程序对外部编程请求标志位判断,进而进入Bootloader编程模式;
进入Bootloader编程模式后,接收通过诊断服务下载FALSHDRIVER,然后通过FALSHDRIVER擦除应用程序, Bootloader程序将应用程序有效标志位写为无效,再把ROM空间中对应应用程序的区域擦除;
应用程序对应的二进制数据设置为A1,通过CRC计算可以得出C1,将C1按照A1的存储格式bin或S19或hex方式进行拼接,将C1拼接到A1后面,形成新的应用程序二进制数据A2,再将新的应用程序二进制数据写入应用程序对应的ROM空间中;
Bootloader程序进行新的应用程序完整性校验,校验成功,则将新的应用程序有效性设置为有效,控制器重启并进入新的应用程序。
本具体实施方式中,控制器的ROM空间分为Bootloader程序区域和应用程序区域,Bootloader程序区域存储的是bootloader源码经过编译后的二进制可执行代码,控制器上电或复位时,完成自检后软件会跳转至其区域的入口;应用程序区域存储的是应用程序源码经过编译后的二进制可执行代码,bootloader程序可以对此区域的ROM进行擦除与写入,bootloader程序执行后,会跳转至此区域入口。
本具体实施方式中,bootloader程序在收到新的应用程序二进制数据A2后,将A1和C1分别存储入ROM空间和RAM空间。
本具体实施方式中,bootloader程序在收到新的应用程序二进制数据A2后,判断A2是否为最后4个byte,如果是,则将A2存入RAM空间,否则将A2存入ROM空间,对ROM空间内的A2进行CRC计算,得出新的CRC值C2,将C1和C2进行比较,相同则将新的应用程序有效标志位写为有效。
最后说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管通过参照本发明的优选实施例已经对本发明进行了描述,但本领域的普通技术人员应当理解,可以在形式上和细节上对其作出各种各样的改变,而不偏离所附权利要求书所限定的本发明的精神和范围。
Claims (4)
1.一种基于UDS-FBL的APP完整性检查方法,其特征在于:包括:
通过UDS统一诊断服务发送与刷写相关的请求报文;
生成并下载bootloader程序对应的二进制数据,将bootloader程序对应的二进制数据存储至控制器的ROM空间,该ROM空间为不可编程区域;
生成并下载应用程序对应的二进制数据,将应用程序对应的二进制数据储存至控制器的ROM空间,该ROM空间是在进行程序刷写时擦除和写入的可编程区域;
所述UDS统一诊断服务支持默认、扩展和编程模式;Bootloader程序包含UDS诊断协议层、数据传输层以及CAN驱动层,其能够实现完整的诊断协议栈,该诊断协议栈支持默认、扩展和编程模式;应用程序包括诊断协议栈,支持默认和扩展模式;应用程序设置外部编程请求标志位,用于执行切换编程诊断模式的诊断请求命令;
当在应用程序中接收到切换编程诊断模式的诊断请求命令时,设置外部编程请求标志位,重启控制器,Bootloader程序对外部编程请求标志位判断,进而进入Bootloader编程模式;
进入Bootloader编程模式后,接收通过诊断服务下载FALSHDRIVER,然后通过FALSHDRIVER擦除应用程序, Bootloader程序将应用程序有效标志位写为无效,再把ROM空间中对应应用程序的区域擦除;
应用程序对应的二进制数据设置为A1,通过CRC计算可以得出C1,将C1按照A1的存储格式bin或S19或hex方式进行拼接,将C1拼接到A1后面,形成新的应用程序二进制数据A2,再将新的应用程序二进制数据写入应用程序对应的ROM空间中;
Bootloader程序进行新的应用程序完整性校验,校验成功,则将新的应用程序有效性设置为有效,控制器重启并进入新的应用程序。
2.根据权利要求1所述的一种基于UDS-FBL的APP完整性检查方法,其特征在于:控制器的ROM空间分为Bootloader程序区域和应用程序区域,Bootloader程序区域存储的是bootloader源码经过编译后的二进制可执行代码,控制器上电或复位时,完成自检后软件会跳转至其区域的入口;应用程序区域存储的是应用程序源码经过编译后的二进制可执行代码,bootloader程序可以对此区域的ROM进行擦除与写入,bootloader程序执行后,会跳转至此区域入口。
3.根据权利要求1所述的一种基于UDS-FBL的APP完整性检查方法,其特征在于:bootloader程序在收到新的应用程序二进制数据A2后,将A1和C1分别存储入ROM空间和RAM空间。
4.根据权利要求1所述的一种基于UDS-FBL的APP完整性检查方法,其特征在于:bootloader程序在收到新的应用程序二进制数据A2后,判断A2是否为最后4个byte,如果是,则将A2存入RAM空间,否则将A2存入ROM空间,对ROM空间内的A2进行CRC计算,得出新的CRC值C2,将C1和C2进行比较,相同则将新的应用程序有效标志位写为有效。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210405378.4A CN114741737A (zh) | 2022-04-18 | 2022-04-18 | 一种基于uds-fbl的app完整性检查方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210405378.4A CN114741737A (zh) | 2022-04-18 | 2022-04-18 | 一种基于uds-fbl的app完整性检查方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114741737A true CN114741737A (zh) | 2022-07-12 |
Family
ID=82282519
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210405378.4A Pending CN114741737A (zh) | 2022-04-18 | 2022-04-18 | 一种基于uds-fbl的app完整性检查方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114741737A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116643772A (zh) * | 2023-05-30 | 2023-08-25 | 深圳市乐祺微电子科技有限公司 | 一种低成本芯片ota升级方法 |
-
2022
- 2022-04-18 CN CN202210405378.4A patent/CN114741737A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116643772A (zh) * | 2023-05-30 | 2023-08-25 | 深圳市乐祺微电子科技有限公司 | 一种低成本芯片ota升级方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110231952B (zh) | 一种ecu程序备份及循环升级控制方法及装置 | |
CN109189445B (zh) | 一种物联网设备程序升级的方法 | |
CN111142907B (zh) | 离线关键词识别系统分区升级方法 | |
CN111026427B (zh) | 一种含cpu和fpga的嵌入式系统远程在线升级方法 | |
CN112000358B (zh) | 充电桩的升级方法与智能充电桩 | |
WO2022213641A1 (zh) | 进程接替的方法、装置、电子设备及存储介质 | |
CN110825403A (zh) | 一种汽车电子控制单元ecu刷写的方法及系统 | |
WO2022160816A1 (zh) | 一种数据处理方法以及相关设备 | |
CN113094072A (zh) | 车辆升级方法、装置、电子装置及存储介质 | |
CN117687664A (zh) | 一种dsp的在线升级配置方法及装置 | |
CN113835735A (zh) | 一种fpga远程升级方法、系统和存储介质 | |
CN114741737A (zh) | 一种基于uds-fbl的app完整性检查方法 | |
CN111414182B (zh) | 一种基于spi的fpga远程升级方法 | |
CN113220319A (zh) | 一种数据更新方法、装置及车辆 | |
CN113093694A (zh) | 一种基于uds的车载电控单元数据刷写方法及系统 | |
CN112230848A (zh) | 一种nvm自动配置方法、装置和设备 | |
CN116755737A (zh) | 汽车软件ota升级方法、装置、设备、存储介质及程序 | |
CN114996717A (zh) | 一种防止误擦除的升级程序设计方法 | |
US20230027611A1 (en) | Power supply device, power supply system and non-transitory computer-readable recording medium | |
CN115167904A (zh) | 一种防篡改的Bootloader升级方法及系统 | |
CN114880008A (zh) | 软件升级方法及系统 | |
CN110119284B (zh) | Flash存储器烧写系统及方法 | |
KR20010027466A (ko) | 차량의 엔진제어유닛 리프로그래밍 방법 | |
Ji et al. | Implementation and research of bootloader for automobile ECU remote incremental update | |
JP2009223435A (ja) | データ記憶方法及び装置、並びにプログラム |
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 |