uds(unified diagnostic service)
1. 简介
- 含义: 通常指ISO-14229-1定义在应用层的的诊断服务
- uds可以支持多种网络通信协议,常见包括ethernet, can/canfd, flexray, lin…
block-beta columns 5 a("uds"):5 b("eth") c("can/canfd") d("flexray") e("lin") f("...") classDef UDS fill:#A3D8FF class a UDS
- 诊断服务本质是一个轻量的通信协议
- 故障诊断数据的记录功能
- uds可以支持多种网络通信协议,常见包括ethernet, can/canfd, flexray, lin…
- 使用场景:
- 产线诊断:
- 22/2e等服务进行配置数据的刷写和读取验证
- 2f/31等服务进行下线测试
- 售后维修:
- ota升级软件版本
- 22/2e等服务更改配置数据和读取车辆信息
- 31等服务打开/关闭车辆功能
- 19/14服务读取故障信息诊断故障
- 产线诊断:
2. 功能
- 请求与回复:
- uds会先检查请求的服务状态,若不满足要求,则回复负响应。格式为7f sid nrc
- 常见的nrc有0x7f/7e(当前会话不支持),0x13(长度不对),0x33(未进行安全解锁),0x31(请求超范围),0x78(等待) …
- 正响应格式为 sid+0x40 + subfunction + data
- 部分服务如10,3e, 28, 85等支持响应抑制,子服务+0x80会抑制正响应
- 故障码(diagnostic trouble code)
- 四字节: 三字节编码加一个字节的状态位
- 状态位: bit0 test failed, bit1 test failed this monitoring cycle…
define description Bit 0 Test Failed Bit 1 Test Failed this monitoring cycle Bit 2 Pending DTC Bit 3 Confirmed DTC Bit 4 Test not completed since last clear Bit 5 Test Failed since last clear Bit 6 Test not completed this monitering cycle Bit 7 Warning indicator requested
- 10服务 诊断会话
- 1001(default session): uds启动处于该会话,在切入非默认会话超时自动切回默认会话
- 1002(programming session): 刷写会话,升级相关的功能会限制在该会话执行,02会话不能直接从01进入,需要从03进入
- 1003(extend session): 扩展会话,比默认会话范围大,通常2e等服务会在该会话支持
- 1060(production session): 产线会话,支持多种刷写配置和测试功能等服务,大多数需求由工厂定义
- 11服务 重启功能
- 01(硬重启): 通过设置芯片的reset针脚实现硬件意义上的重启
- 02(快速休眠): 设备进入休眠状态
- 03(软重启): 通过软件的reset功能进行重启
- 27服务 安全访问(securityAccess level = (n+1)/2)
- 奇数n作为seed request
- n+1作为key confirm
- 28服务 通信控制
- 00 开启接收和发送
- 01 开启接收和禁用发送
- 02 开启发送和禁用接收
- 03 禁用接收和发送
- 01 app报文,02 网络管理报文,03 所有报文
- 3E服务 会话维持
- 00子服务需要设备回复响应
- 80子服务会抑制设备的正响应
- 85服务 故障控制
- 01 开启故障
- 02 禁用故障
- 19服务 故障查询
- 01 和掩码匹配的dtc个数 19 01 xx
- 02 和掩码匹配的dtc 19 02 xx
- 04 对应dtc的snapshot 19 04 xx xx xx xx
- 06 对应dtc的扩展信息 19 06 xx xx xx xx
- 0a 设备所有支持的dtc 19 0a
- 14服务 故障清除
- 通常仅支持ff ff ff(清除全部故障)
- 22服务 数据读取
- 会有两个字节的ID来标识需要读取的lidar信息
- 2E服务 数据写入
- 会有两个字节的ID来标识需要写入的lidar信息
- 长度不能小于4
- 31服务 例程控制
- 01子服务,启动例程控制
- 02子服务,停止例程控制
- 03子服务,获取结果
- 34服务 传输请求(34 00 44 00 00 00 00 00 00 00 01)
- 00 表示压缩格式和加密格式(00 没有压缩没有加密)
- 44表示4字节的memory地址和4字节的文件大小
- 回复报文会带有36服务可以接收的单帧最大长度
- 36服务 数据传输
- 36 + n(数据序号) + data_n
- n从1开始,到达255以后重置为0
- 37服务 传输结束
- 结束传输数据
3. 实现
- cp autosar uds大多是c语言和基于CAN网络实现(DoCAN)
-
cp autosar架构如下图所示,其中uds实现基于协议栈的DCM和DEM模块,加上SWC(APP Layer)的功能代码组成
-
DCM(diagnostic communication manager)负责诊断通信,包括报文解析,服务判断和分发等与通信相关的功能
-
DEM(diagnostic event manager)负责故障诊断功能,实现包括DTC,扩展数据和快照,故障关联等故障相关的功能
-
SWC(software component): 类比ap的app,dcm的功能实现比如22/2e/31等和dem的故障条件设置和快照等信息会在这部分实现
-
- ap autosar uds大多是c++和基于以太网实现(DoIP)
- ap autosar架构如下图所示(yellow[Non-PF Service], blue[Platform Foundation FCs], red[PF Service FCs])
block-beta columns 5 a1("AdaptiveApp") a2("AdaptiveApp") a3("AdaptiveApp") a4("ASW::XYZ \nNon-PF Service") a5("ASW::ABC \nNon-PF Service") ar1("ara::com \nCommunication \nManagement") ar2("ara::rest \nrest") ar3("ara::tsync \nTime Synchronization") ar4("ara::diag \nDiagnostics") ar5("ara::sm service \State \nManagement") block:ARA0:1 columns 2 ar6("IPC") ar7("SingalPDU") ar8("SOME/IP") ar9("DDS") end ar10("ara::per \nPersistency") ar11("ara::phm \nPlatform Health \nManagement") ar12("ara::log \nLog and Trace") ar13("ara::ucm service \nUpdate and Config \nManagement") ar14("ara::core \nCore") ar15("ara::exec \nExecution Management") ar16("ara::lam \nIdentity and Access Management") ar17("ara::crypto \nCryptography") ar18("ara::nm service \nNetwork \nManagement") ar19("POSIX PSE51/C++ STL \nOperating System Interface"):4 space m("(Virtual) Machine/Container/Hardware"):5 classDef APP_STYTE fill:#FFEC9E; classDef ARA_STYTE fill:#FFCBCB; classDef MACHINE_STYTE fill:#DFD0B8 class a1,a2,a3,a4,a5 APP_STYTE class ar5,ar13,ar18 ARA_STYTE class m MACHINE_STYTE
- diagnostic manager
block-beta columns 5 a1("applicationInterface\nDiagnostic Interface") space:3 a2("platformExtensionInterface\nUDS Transport Protocal API") a3("Diagnostic manager"):5 a4("applicationInterface\nFile Storage") a5("externalInterface\nTCP/IP Stack") a6("applicationInterface\nLogger") a7("internalInterface\nPolicy Decision Point") a8("applicationInterface\nCrypto Stack") a9("Persistency") a10("Operating System") a11("Log and Trace") a12("Identity and Access Management") a13("Cryptography") classDef STYTE1 fill:#E59BE9; class a1,a2,a4,a5,a6,a7,a8 STYTE1 classDef STYTE2 fill:#8DECB4; class a9 STYTE2 classDef STYTE3 fill:#F3D0D7; class a10 STYTE3 classDef STYTE4 fill:#FFB1B1; class a11 STYTE4 classDef STYTE5 fill:#FDFFC2; class a12,a13 STYTE5
- ap autosar架构如下图所示(yellow[Non-PF Service], blue[Platform Foundation FCs], red[PF Service FCs])