AUTOSAR实战教程--开放式通用DoIP刷写工具OpenOTA开发计划

news2025/6/9 18:57:34

目录

软件概述

安装与运行

界面说明

3.1 功能区划分

3.2 状态显示

基本操作流程

4.1 DoIP连接配置

4.2 服务配置(刷写流程)

4.3 执行操作

4.4 保存配置

4.5 加载配置

功能详解

5.1 核心功能模块

诊断服务配置

通信设置

文件下载

工具功能

配置管理

注意事项

网络配置

刷写注意事项

错误处理

升级预告

Demo工程

Git地址


OpenOTA使用

软件概述

本软件是基于DoIP协议开发的ECU刷写工具,其顶层架构设计遵循通用、开放的原则,故可支持任意的升级流程,理论上是可以兼容任意主机厂Boot/OTA需求规范的。具体支持功能如下:

- 诊断会话控制

- ECU复位与DTC管理

- 安全访问与数据下载

- 自定义UDS服务

- CRC校验计算

  • 34/36文件下载流程自动化

  • 27安全校验dll库函数使用自动化

- 配置文件保存/加载

- 多线程操作

安装与运行

系统要求

- Windows 7/10/11

- Python 3.7+(32bit版)

- 网络适配器支持以太网通信

依赖安装

'''bash
pip install intelhex doipclient udsoncan tkinter
'''

启动方式

'''bash
python main.py
'''

界面说明

3.1 功能区划分

(左侧)服务列表区 (中间)操作控制区 (右侧)服务序列配置/实例化 (左下)日志区

  • 【诊断会话列表区】,该列表中的服务可以通过"添加"按钮实例化到(2)刷写流程。

  • 【诊断/刷写流程输入区】,该区内容决定升级流程。分为4列:"UDS服务","报文内容","可选值","对比值"。

    1. "报文内容" - 用于录入具体的诊断服务报文;

    2. "可选值" - 用于给初学UDS的初学者作为提示的,比如10服务支持的子服务"01/02/03";

    3. "对比值" - 用于校验返回值是否如我所愿,例如:在读取DID过程中我们希望对返回的DID值做check,返回值是否如我所愿,则在此处录入62F2001234,当执行到该服务后,会自动对回读值进行check,如果check失败,则会通过log显示区和该条目颜色变红来显示出来。

  • 【操作区】,常用的操作接口。

    1. "添加" - 用于将左侧诊断会话列表中的UDS服务实例化到右侧的流程当中;

    2. "删除" - 从右侧流程中删除用的错误/不需要的服务;"连接"-建立通信链路(连接前请先确认对以太网的设置是否正确);

    3. "断开" - 作用与"连接"相反;

    4. "下载" - 即开始数据刷写,开始具体的流程执行;

    5. "清除" - 清除Log显示区(4)的内容。

  • 【信息显示区】,用于显示接收到的UDS报文内容及常用错误提示。

  • 【菜单栏】,菜单栏的具体功能如下

文件

加载配置

加载预先以.json格式保存的诊断流程。

保存配置

保存"诊断/刷写/升级流程显示区"中的内容为xx.json以便下次使用。

退出

退出程序

设置

连接设置

用于设置网络参数,目标地址,源地址,LA/TA值,DoIP版本信息等。

更多设置

功能扩展,未实现

工具

CRC计算

支持CRC-8和CRC-32计算,用于数据完整性校验。

更多工具

功能扩展,未实现

  • 【下载进度显示区】。

3.2 状态显示

  • 【未通过流程/错误流程】 - 会在具体的服务中显示为红色。

  • 【正在执行的流程】 - 会在具体的服务中显示为蓝色。

  • 【连接成功】 - 中间操作区中的"▋▋▋▋▋▋▋"显示为绿色。

  • 【连接失败】 - 中间操作区中的"▋▋▋▋▋▋▋"显示为红色。

基本操作流程

4.1 DoIP连接配置

1. 点击顶部菜单【设置】->【连接设置】

2. 填写参数(典型值):

- 诊断仪IP:192.168.55.70

- 诊断仪LA:0x0555

- DoIP实体IP:192.168.55.60

- DoIP实体LA:0x0789

3. 点击【保存】

4.2 服务配置(刷写流程)

1. 在左侧列表选择"$27_安全访问"

2. 点击【添加>>】配置安全算法DLL路径

3. 添加"$34/6_下载数据"服务并选择刷写文件

4. 添加"$37_退出下载"服务

4.3 执行操作

1. 点击【连接】建立DoIP会话

2. 点击【下载】开始自动流程

3. 观察进度条和日志输出

4. 操作完成后点击【断开】

4.4 保存配置

  1. 检查右侧"诊断/刷写流程输入区"无误后,

  2. 打开菜单栏"设置/连接设置",检查对网络的设置无误后点击菜单栏"文件/保存配置"。

  3. 在弹出的文件保存对话框输入保存的文件名即可,如"OtaDemo.json",则诊断流程+网络参数一并保存到该json文件中

4.5 加载配置

  1. 点击菜单栏"文件/加载配置",将网络参数+诊断流程载入。

  2. 检查网络设置。

  3. 检查27服务(如有),所用的dll文件路径是否正确。

  4. 检查34/36服务(如有),所用的img文件路径是否正确。

功能详解

5.1 核心功能模块

诊断服务配置

- 支持12种标准UDS服务

- 服务参数格式:

- 十六进制字符串(例:22 F1 90)

- 文件路径(安全访问/下载时使用)

通信设置

```python

# 协议参数示例

connection_settings = {

"P2": 50, # 诊断响应超时(ms)

"P2_star": 5000, # 编程模式超时

"S3": 5000, # 服务器响应间隔

"version": 3 # DoIP协议版本

}

```

文件下载

- 支持文件类型:

- BIN:原始二进制文件

- HEX:Intel Hex格式

- IMG:镜像文件

- 分块传输:2048字节/包

工具功能

CRC计算

- 支持CRC8/CRC32计算

- 文件拖放支持

- 结果直接复制功能

配置管理

- 支持JSON格式导入/导出

- 保存内容包括:

- 连接参数

- 服务序列

- 预期响应值

注意事项

网络配置

- 确保主机与ECU在同一子网

- 关闭防火墙/杀毒软件

- 推荐使用静态IP配置

刷写注意事项

1. 严格按照服务顺序配置:

SecurityAccess -> Download -> TransferExit

2. 大文件传输时保持供电稳定

3. 出现0x78响应时应等待后续完成

错误处理

| 错误代码 | 处理建议 |

|----------|--------------------------|

| 0x10 | 重新初始化会话 |

| 0x22 | 校验DID配置 |

| 0x35 | 检查下载文件完整性 |

| 0x7E | 确认当前诊断会话模式 |

| 0x78 | PENDING显示 |

| -- | 预期值错误显示 |

升级预告

1. 实现UDS协议栈中的timer。

2. 实现对指定服务功能寻址的支持。

Demo工程

github稍后上传

Git地址

github稍后上传

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2405722.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

AI赋能的浏览器自动化:Playwright MCP安装配置与实操案例

以下是对Playwright MCP的简单介绍: Playwright MCP 是一个基于 Playwright 的 MCP 工具,提供浏览器自动化功能不要求视觉模型支持,普通的文本大语言模型就可以通过结构化数据与网页交互支持多种浏览器操作,包括截图、点击、拖动…

【技术笔记】MSYS2 指定 Python 版本安装方案

#工作记录 MSYS2 指定 Python 版本安装 一、前置条件 安装指定版本需要在干净的 MSYS2 环境中执行,为保证工具链的兼容性,若已安装 Python,需先卸载 Python 及与该版本深度绑定的工具链。具体操作如下: 卸载 Python&#xff1a…

《校园生活平台从 0 到 1 的搭建》第一篇:创建项目与构建目录结构

在本系列第一篇中,我们将从项目初始化开始,搭建基本的目录结构,并完成四个主页面的创建与 TabBar 设置。 (tip:你可能会觉得有点 ai 化,因为这个文案是我自己写了一遍文案之后让 ai 去优化输出的&#xff0…

1 Studying《蓝牙核心规范5.3》

目录 [Vol 0][Part B 蓝牙规范要求] 3 定义 3.1 蓝牙产品类型 4 核心配置 4.1 基本速率核心配置 4.2 增强型数据速率核心配置 4.4 低功耗核心配置 4.5 基本速率和低功耗结合的核心配置 4.6 主机控制器接口核心配置 [Vol 1][Part A 架构]1 概述 1.1 BR/EDR操作概述 …

STM32+MPU6050传感器

#创作灵感## 在嵌入式系统开发中,STM32F103C8T6单片机与MPU6050传感器的组合因其高性能、低功耗以及丰富的功能而备受青睐。本文将简单介绍如何在Keil 5开发环境中实现STM32F103C8T6与MPU6050的连接和基本数据采集,带你快速入门智能硬件开发。 一、硬件…

26考研——数据的表示和运算_整数和实数的表示(2)

408答疑 文章目录 二、整数和实数的表示1、整数的表示1.1、无符号整数的表示1.2、有符号整数的表示1.3、C 语言中的整数类型及类型转换1.3.1、C 语言中的整型数据类型1.3.2、有符号数和无符号数的转换1.3.3、不同字长整数之间的转换 2、实数的表示2.1、浮点数的相关概念2.2、浮…

关于智能体API参考接口

关于智能体在Flask的源码:请求体(在payload里的是请求体)、请求头(在headers里的i局势请求头)。 我的例子: 我的疑问:为什么没按Coze官方API文档格式,在Apifox里发POST请求却能收到回复? 1. 你…

直角坐标系和斜角坐标系

前情概要 笛卡尔坐标系是直角坐标系和斜角坐标系的统称。为什么会有这两种坐标系呢,教材中为什么最后只用直角坐标系呢?我们这样解释: 研究一维空间中的向量时,由于一维空间中的向量有无数条,如果我们选定一条作为基…

vmware 设置 dns

vmware 设置 dns 常用的 DNS(Domain Name System)服务器地址可以帮助你更快、更安全地解析域名。以下是一些国内外常用的公共 DNS 服务: 国内常用 DNS 阿里云 DNS IPv4: 223.5.5.5、223.6.6.6IPv6: 2400:3200::1、2400:3200:baba::1特点&am…

基于单片机的病房呼叫系统(源码+仿真)

该系统由以 STM32F4 为平台的监控终端以及以 CC2530 为平台的无线传感网组成。系统上电后自动完成 ZigBee 网络的组建、终端节点的加入,病人可利用便携式的病人终端发出呼叫求助请求信息、节点在线信息以及对护士的服务评价信息等,这些信息通过路由节点发…

基于微信小程序的睡眠宝系统源码数据库文档

摘 要 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,睡眠宝系统被用户普遍使用,为方便用户能够可以…

VibePlayer

源代码地址: VibePlayer: VibePlayer是一款功能强大的Android音乐播放器应用,专为音乐爱好者设计,提供了丰富的音乐播放和管理功能。 用户需求 VibePlayer是一款功能强大的Android音乐播放器应用,专为音乐爱好者设计&#xff0…

【汇编逆向系列】三、函数调用包含单个参数之float类型-xmm0寄存器,sub,rep,stos,movss,mulss,addss指令

一、汇编代码 single_float_param:0000000000000060: F3 0F 11 44 24 08 movss dword ptr [rsp8],xmm00000000000000066: 57 push rdi0000000000000067: 48 83 EC 10 sub rsp,10h000000000000006B: 48 8B FC mov …

基于fpga的疲劳驾驶检测

基于fpga的疲劳驾驶检测 前言一、系统硬件设计二、系统软件设计系统上板实验测试 前言 代码基于网络大佬代码进行修改的。限制性比较大,不太灵活,当个本科毕业设计还是够的。 基于FPGA的疲劳检测模块硬件设计以FPGA核心控制模块为中心,通过…

感谢阿里云RDS产品及时的“光速服务”

❝ 开头还是介绍一下群,如果感兴趣PolarDB ,MongoDB ,MySQL ,PostgreSQL ,Redis, OceanBase, Sql Server等有问题,有需求都可以加群群内有各大数据库行业大咖,可以解决你的问题。加群请联系 liuaustin3 ,(共3000人左右…

从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(十一)

下载buildroot https://buildroot.org/download.html下载交叉工具链 使用ST官方交叉工具链的话,在buildroot配置外部工具会有问题,所以直接使用正点原子的交叉编译工具 buildroot构建根文件系统 - 参考正点原子 配置 buildroot tar -vxf buildroot-20…

Linux68 FTP 测试 上传下载

6.在vi编辑器里,哪个命令能将光标移到第200行?( B ) 7.A、200g B、:200 C、g200 D、G200 假如您需要找出 /etc/my.conf 文件属于哪个包 (package) ,您可以执行( D )C A、 rpm -q /etc/my.co…

山东大学《数据可视化》期末复习宝典

🌈 个人主页:十二月的猫-CSDN博客 🔥 系列专栏:🏀山东大学期末速通专用_十二月的猫的博客-CSDN博客 💪🏻 十二月的寒冬阻挡不了春天的脚步,十二点的黑夜遮蔽不住黎明的曙光 目录 1…

【Elasticsearch】映射:Join 类型、Flattened 类型、多表关联设计

映射:Join 类型、Flattened 类型、多表关联设计 1.Join 类型1.1 主要应用场景1.1.1 一对多关系建模1.1.2 多层级关系建模1.1.3 需要独立更新子文档的场景1.1.4 文档分离但需要关联查询 1.2 使用注意事项1.3 与 Nested 类型的区别 2.Flattened 类型2.1 实际运用场景和…

SpringBoot十二、SpringBoot系列web篇之过滤器Filte详解

一、前言 JavaWeb三大组件Servlet、Filter、Listener,其中之一便是过滤器Filter。 其实,Filter我们平常用的不多,一般多为项目初期搭建web架构的时候使用,后面用的就少了,在日常业务开发中不太可能碰到需要手写Filte…