目录
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服务","报文内容","可选值","对比值"。
"报文内容" - 用于录入具体的诊断服务报文;
"可选值" - 用于给初学UDS的初学者作为提示的,比如10服务支持的子服务"01/02/03";
"对比值" - 用于校验返回值是否如我所愿,例如:在读取DID过程中我们希望对返回的DID值做check,返回值是否如我所愿,则在此处录入62F2001234,当执行到该服务后,会自动对回读值进行check,如果check失败,则会通过log显示区和该条目颜色变红来显示出来。
【操作区】,常用的操作接口。
"添加" - 用于将左侧诊断会话列表中的UDS服务实例化到右侧的流程当中;
"删除" - 从右侧流程中删除用的错误/不需要的服务;"连接"-建立通信链路(连接前请先确认对以太网的设置是否正确);
"断开" - 作用与"连接"相反;
"下载" - 即开始数据刷写,开始具体的流程执行;
"清除" - 清除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 保存配置
检查右侧"诊断/刷写流程输入区"无误后,
打开菜单栏"设置/连接设置",检查对网络的设置无误后点击菜单栏"文件/保存配置"。
在弹出的文件保存对话框输入保存的文件名即可,如"OtaDemo.json",则诊断流程+网络参数一并保存到该json文件中
4.5 加载配置
点击菜单栏"文件/加载配置",将网络参数+诊断流程载入。
检查网络设置。
检查27服务(如有),所用的dll文件路径是否正确。
检查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稍后上传