S32K324 UDS Bootloader开发-需求篇
文章目录
- 前言
- 内存分配
- UDS诊断协议需求
- CAN ID及时间参数
- UDS诊断服务
- Bootloader诊断服务
- APP诊断服务
- DID
- 22服务的DID:
- 2E服务的DID:
- Routine Control DID:
- 刷写流程
- 预编程
- 主编程
- 后编程
- 总结
前言
之前做过一个STM32的UDS Bootloader,协议栈主要是NXP官网下的,最近在用NXP的S32K3开发,官网也有Bootloader的demo工程,本文记录S32K324 UDS Bootloader的开发过程,有了之前的经验,及方法论之后,整个Bootloader+APP+上位机+调通,只花了三天实际。现在整理下开发过程及遇到的一些问题。本篇是需求篇
内存分配
本次使用的单片机为S32K324,flash大小4M,一个扇区8k,SRAM:512KB
flash起始地址为0x4000000
RAM起始地址为0x2000000
将flash划分为Bootloader和App两块
APP跳转到boot,这个标志放在ram中,但要保证软复位时不清除.
FlashDrive需要放到ram中,每次下载APP时先下载FlashDriver
APP有效标志放入Flash中,每次刷写前清除标志,刷写成功后写入标志。
flash分配如下
UDS诊断协议需求
CAN ID及时间参数
波特率:500k
物理寻址ID:0x714
功能寻址ID:0x7FF
ECU 响应ID: 0x614
P2 Server:50ms P2 *Server:5000ms
P2 Client:50ms P2 *Client:5000ms
S3server:5000ms
S3client:2000ms
STmin:0ms 连续帧协议数据单元发送的最小时间间隔
BlockSize:0 每一块中包含连续帧的个数
UDS诊断服务
Bootloader诊断服务
10 | 01 | Diagnostic Session Control | Default Session | Phy Req | Fun Req |
10 | 02 | Diagnostic Session Control | ECU Programming Session | Phy Req | |
10 | 03 | Diagnostic Session Control | ECU Extended Session | Phy Req | Fun Req |
11 | 01 | ECU Reset | Hard Reset | Phy Req | Fun Req |
22 | Read Data By Identifier | Phy Req | |||
2E | Write Data By Identifier | Phy Req | |||
27 | 01 | Security Access | Request Seed | Phy Req | |
27 | 02 | Security Access | Send key | Phy Req | |
31 | 01 | Routine Control | Start Routine | Phy Req | |
34 | Request Download | Phy Req | |||
36 | Transfer Data | Phy Req | |||
37 | Request Transfer Exit | Phy Req |
APP诊断服务
10 | 01 | Diagnostic Session Control | Default Session | Phy Req | Fun Req |
10 | 02 | Diagnostic Session Control | ECU Programming Session | Phy Req | |
10 | 03 | Diagnostic Session Control | ECU Extended Session | Phy Req | Fun Req |
11 | 01 | ECU Reset | Hard Reset | Phy Req | Fun Req |
14 | ClearDiagnosticInformation | FF FF FF Clear all | Phy Req | ||
22 | Read Data By Identifier | Phy Req | |||
28 | 00 | CommunicationControl | Enable Rx and Tx | Phy Req | Fun Req |
28 | 01 | CommunicationControl | Enable Rx and DisableTx | Phy Req | Fun Req |
28 | 02 | CommunicationControl | Disable Rx and EnableTx | Phy Req | Fun Req |
28 | 02 | CommunicationControl | Disable Rx and Tx | Phy Req | Fun Req |
31 | 01 | Routine Control | Start Routine | Phy Req | |
85 | 01 | ControlDTCSetting | On | Phy Req | Fun Req |
85 | 02 | ControlDTCSetting | Off |
DID
22服务的DID:
F1AA:读取版本号
2E服务的DID:
F15A -写指纹
Routine Control DID:
FF00:擦除内存
0201:检查预编程条件
0202:检查checksum
FF01:检查编程完整性和兼容性
刷写流程
预编程
1.进入扩展模式(功能寻址)10 83 (83表示不需要服务器应答)
2.检查预编程条件(物理寻址)31 01 02 01,针对要刷写的ECU。一般就是检查供电电压,车速这些,如果厂家没指定,那么由ECU自己定义。如果ECU不满足预编程条件,则收到10 02进入编程模式时,返回0x22不满足条件否定响应。
3.停止DTC设置(功能寻址),85 82(82表示不需要服务器应答)
4.禁止无关通讯(功能寻址),28 83 03(83表示发送和接收报文都禁止,且不需要服务器应答,第三位01表示是应用软件报文,第三位03则表示应用软件和网络管理报文都禁止)
5.读取版本号(物理寻址)22 F1 AA ,诊断仪读取当前ECU版本信息。
主编程
1.进入编程会话10 02 ,此时在APP中应该执行复位,然后进入boot中的编程模式
2.请求种子 27 01
3.发送密匙 27 02 key
4.解锁成功后,2E服务写入指纹信息。一般就是时间和设备号这些
5.下载flash驱动程序,34 36 37服务。因为bootloader里是不带驱动程序的,防止意外操作导致flash改变,程序出现异常,所以只在刷写的时候才允许操作flash。下载完成后一般还需要例程控制31服务进行完整性检查(CRC32校验)和依赖性检查(ecu指定,DID为FF01-14229-1规定)(该步骤暂时不做)
6.擦除内存,由31服务执行,具体的DID按14229-1应该为FF00,需要给定擦除的起始地址和大小。(实际一般擦除都是ECU自己判断的区域)
7.下载APP程序,34,36,37服务。下载完成后也需要例程控制31服务中的完整性检查(CRC32校验)和依赖性检查(ecu指定,DID为FF01-14229-1规定)
8.ECU复位,一般发送11 01进行复位,复位完成后Flash驱动程序将被清除。避免意外激活这些可能会进行非预期的内存擦除或程序操作的代码。
后编程
1.主编程完成后,ECU复位,诊断仪发送进入扩展模式10 83(功能寻址,不需要ECU回复)
2.恢复通讯28 80 03(功能寻址,不需要ECU回复,03表示网络管理报文和应用报文都恢复)
3.开启DTC诊断85 81(功能寻址,不需要ECU回复)
4.清除刷写ECU的故障信息(物理寻址14 FF FF FF)
5.进入默认会话模式10 81(功能寻址)
总结
刷写流程和UDS协议和之前的都差不多,主要是需要弄清楚芯片的flash和ram区域,以及分配合适的空间给Boot和APP。后面就是Boot和APP软件的开发了。将会在后面的文章中详细介绍。
相关文章:

S32K324 UDS Bootloader开发-需求篇
文章目录 前言内存分配UDS诊断协议需求CAN ID及时间参数UDS诊断服务Bootloader诊断服务APP诊断服务 DID22服务的DID:2E服务的DID:Routine Control DID: 刷写流程预编程主编程后编程 总结 前言 之前做过一个STM32的UDS Bootloader,协议栈主要是NXP官网下…...
【前端设计模式】之调停者模式(中介者模式)
调停者模式是一种行为设计模式,它通过引入一个调停者对象来集中处理一组对象之间的交互。调停者模式的目标是减少对象之间的直接通信,从而降低耦合度,并且使代码更易于维护和扩展。 调停者模式特性 将对象之间的通信集中在一个调停者对象中…...

【MySQL架构篇】SQL执行流程与缓冲池
文章目录 1. SQL执行流程2. 数据库缓冲池(Buffer Pool)2.1 缓冲池概述2.2 缓冲池如何读取数据2.3 查看和设置缓冲池的大小2.4 多个Buffer Pool实例2.5 引申问题 1. SQL执行流程 查询缓存:因为查询效率往往不高,所以在MySQL8.0之后就抛弃了这个功能解析器…...

[support2022@cock.li].faust、[tsai.shen@mailfence.com].faust勒索病毒数据怎么处理|数据解密恢复
引言: 威胁网络安全的恶意软件不断涌现,而[support2022cock.li].faust勒索病毒则是其中的一员。这个网络黑暗角落的新星,以其数据绑架的方式,一度成为数据安全的威胁焦点。本文将探究[support2022cock.li].faust勒索病毒的运作方…...
力扣学习笔记——49. 字母异位词分组
49. 字母异位词分组 https://leetcode.cn/problems/group-anagrams/?envTypestudy-plan-v2&envIdtop-100-liked 给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。 字母异位词 是由重新排列源单词的所有字母得到的一个新单词。…...

五、Qt中的常用类
1. QString 字符串类 QString是Qt中的字符串类,与C/C不同的是,不再使用ASCII编码,而使用Unicode编码。因此一个字符不是8位的char,而是16位的QChar,这就是为什么之前一个汉字占用一个字符的原因。、 QString几乎向前兼…...

CentOS 7.9.2009 数据盘挂载
一、linux版本: lsb_release -a 二、操作步骤 2.1,查看磁盘挂载情况,确认sdb是需挂载的硬盘 ## 查看磁盘挂载情况,确认sdb是需挂载的硬盘 lsblk 2.2,对硬盘sdb进行分区 ## 对硬盘sdb进行分区 fdisk /dev/sdb# 命令…...
cv::solvePnP使用方法及注意点详解(OpenCV/C++)
cv::solvePnP(objectPoints, imagePoints, cameraMatrix, distCoeffs, rvec, tvec, useExtrinsicGuess, flags); 1、参数说明: objectPoints:一个 vector<cv::Point3f>,包含了在世界坐标系中的三维点的坐标,至少需要4个点…...

DevOps持续集成-Jenkins(4)
❤️作者简介:2022新星计划第三季云原生与云计算赛道Top5🏅、华为云享专家🏅、云原生领域潜力新星🏅 💛博客首页:C站个人主页🌞 💗作者目的:如有错误请指正,将…...
【数据仓库-零】数据仓库知识体系 ing
文章目录 一. 数仓基本概念二. 离线数仓建设方法论三. etl流程四. 数仓规范建设指南四. 数据仓库架构五. 数据可视化 通过熟悉构建数仓整体的过程,可以系统的了解 数仓构建理论:能够站在全局角度看数仓的运行架构,数仓执行流程。了解到构建数…...
css3 3D 转换 技巧详细解析与代码实例
CSS3 3D转换是CSS3中的一项新特性,通过它我们可以比较容易地实现3D效果。在这里,我将向大家介绍CSS3 3D转换的一些基本概念、使用方法和常见技巧。 1. 基本概念 在使用CSS3 3D转换时,需要了解一些基础概念: 三维坐标系…...
[Unity]给场景中的3D字体TextMesh增加描边方案一
取你的文本对象,简单地添加以下脚本: using UnityEngine; using System.Collections; using UnityEngine.UI;public class TextOutline : MonoBehaviour {public float pixelSize 1;public Color outlineColor Color.black;public bool resolutionDependant fal…...

TDengine(taos)数据库导出历史数据
业务需求:导出某个站点的累计充电量,累计放电量,光伏总放电量,进线总功率的所有数据‘ 1、登录taos,使用存数据的库; 提示Database changed;即为使用成功; 2、找到你想要导出的字段…...
算法进修Day-37
算法进修Day-37 73. 矩阵置零 难度:中等 题目要求 给定一个 _m_ x _n_ 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。 示例1 输入:matrix [[1,1,1],[1,0,1],[1,1,1]] 输出:[…...
服务器之日常整活
文章目录 一,序二、服务器相关流水帐未完,待补充 一,序 假如你有一台服务器,你最想做哪些事? 等等,什么叫假如你有一台服务器,假如只有一台,肯定我想搞第二台,顺便第三台…...

交互式 Web 应用 0 基础入门
初探 Gradio:轻松构建交互式 Web 应用 文章目录 初探 Gradio:轻松构建交互式 Web 应用Why Gradio?安装 Gradio创建交互式界面1. gr.Interface2. gr.Blocks 强大的组件库输入输出组件控制组件布局组件 示例交互式数据可视化多组件同时(嵌套&a…...
JSONP的安全性较差,那么在跨域情况下,有没有其他更安全的替代方案呢?
在跨域情况下,为了保证安全性,有几种更安全的替代方案可以考虑使用: 1:CORS(Cross-Origin Resource Sharing): CORS 是一种现代化的跨域解决方案,通过在服务器端设置响应头来控制跨…...

Slax Linux 获得增强的会话管理和启动参数选项
Slax Linux 的创建者和维护者托马斯-马特吉切克(Tomas Matejicek)在自己生日这天(生日快乐!)发布了其小巧便携的 GNU/Linux 发行版的新版本,带来了各种增强功能和错误修复。 新发布的 Slax Linux 版本&…...

C/C++新冠疫情死亡率 2020年9月电子学会青少年软件编程(C/C++)等级考试一级真题答案解析
目录 C/C新冠疫情死亡率 一、题目要求 1、编程实现 2、输入输出 二、算法分析 三、程序编写 四、程序说明 五、运行结果 六、考点分析 C/C新冠疫情死亡率 2020年9月 C/C编程等级考试一级编程题 一、题目要求 1、编程实现 2020年全世界爆发了新冠疫情,请…...

Adobe Photoshop 基本操作
PS快捷键 图层 选择图层 Ctrl T:可以对图层的大小和位置进行调整 填充图层 MAC: AltBackspace (前景) or CtrlBackspace (背景) WINDOWS: AltDelete (前景) or CtrlDelete (背景) 快速将图层填充为前景色或背景色 平面化图层(盖印图层)…...

简易版抽奖活动的设计技术方案
1.前言 本技术方案旨在设计一套完整且可靠的抽奖活动逻辑,确保抽奖活动能够公平、公正、公开地进行,同时满足高并发访问、数据安全存储与高效处理等需求,为用户提供流畅的抽奖体验,助力业务顺利开展。本方案将涵盖抽奖活动的整体架构设计、核心流程逻辑、关键功能实现以及…...

Mybatis逆向工程,动态创建实体类、条件扩展类、Mapper接口、Mapper.xml映射文件
今天呢,博主的学习进度也是步入了Java Mybatis 框架,目前正在逐步杨帆旗航。 那么接下来就给大家出一期有关 Mybatis 逆向工程的教学,希望能对大家有所帮助,也特别欢迎大家指点不足之处,小生很乐意接受正确的建议&…...

转转集团旗下首家二手多品类循环仓店“超级转转”开业
6月9日,国内领先的循环经济企业转转集团旗下首家二手多品类循环仓店“超级转转”正式开业。 转转集团创始人兼CEO黄炜、转转循环时尚发起人朱珠、转转集团COO兼红布林CEO胡伟琨、王府井集团副总裁祝捷等出席了开业剪彩仪式。 据「TMT星球」了解,“超级…...
SQL慢可能是触发了ring buffer
简介 最近在进行 postgresql 性能排查的时候,发现 PG 在某一个时间并行执行的 SQL 变得特别慢。最后通过监控监观察到并行发起得时间 buffers_alloc 就急速上升,且低水位伴随在整个慢 SQL,一直是 buferIO 的等待事件,此时也没有其他会话的争抢。SQL 虽然不是高效 SQL ,但…...

三分算法与DeepSeek辅助证明是单峰函数
前置 单峰函数有唯一的最大值,最大值左侧的数值严格单调递增,最大值右侧的数值严格单调递减。 单谷函数有唯一的最小值,最小值左侧的数值严格单调递减,最小值右侧的数值严格单调递增。 三分的本质 三分和二分一样都是通过不断缩…...

基于Java+VUE+MariaDB实现(Web)仿小米商城
仿小米商城 环境安装 nodejs maven JDK11 运行 mvn clean install -DskipTestscd adminmvn spring-boot:runcd ../webmvn spring-boot:runcd ../xiaomi-store-admin-vuenpm installnpm run servecd ../xiaomi-store-vuenpm installnpm run serve 注意:运行前…...

Chrome 浏览器前端与客户端双向通信实战
Chrome 前端(即页面 JS / Web UI)与客户端(C 后端)的交互机制,是 Chromium 架构中非常核心的一环。下面我将按常见场景,从通道、流程、技术栈几个角度做一套完整的分析,特别适合你这种在分析和改…...
Python 训练营打卡 Day 47
注意力热力图可视化 在day 46代码的基础上,对比不同卷积层热力图可视化的结果 import torch import torch.nn as nn import torch.optim as optim from torchvision import datasets, transforms from torch.utils.data import DataLoader import matplotlib.pypl…...

macOS 终端智能代理检测
🧠 终端智能代理检测:自动判断是否需要设置代理访问 GitHub 在开发中,使用 GitHub 是非常常见的需求。但有时候我们会发现某些命令失败、插件无法更新,例如: fatal: unable to access https://github.com/ohmyzsh/oh…...
[USACO23FEB] Bakery S
题目描述 Bessie 开了一家面包店! 在她的面包店里,Bessie 有一个烤箱,可以在 t C t_C tC 的时间内生产一块饼干或在 t M t_M tM 单位时间内生产一块松糕。 ( 1 ≤ t C , t M ≤ 10 9 ) (1 \le t_C,t_M \le 10^9) (1≤tC,tM≤109)。由于空间…...