uds_note

uds(unified diagnostic service)

1. 简介

  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
      
    • 诊断服务本质是一个轻量的通信协议
    • 故障诊断数据的记录功能
  2. 使用场景:
    1. 产线诊断:
      1. 22/2e等服务进行配置数据的刷写和读取验证
      2. 2f/31等服务进行下线测试
    2. 售后维修:
      1. ota升级软件版本
      2. 22/2e等服务更改配置数据和读取车辆信息
      3. 31等服务打开/关闭车辆功能
      4. 19/14服务读取故障信息诊断故障

2. 功能

  1. 请求与回复:
    1. uds会先检查请求的服务状态,若不满足要求,则回复负响应。格式为7f sid nrc
    2. 常见的nrc有0x7f/7e(当前会话不支持),0x13(长度不对),0x33(未进行安全解锁),0x31(请求超范围),0x78(等待)
    3. 正响应格式为 sid+0x40 + subfunction + data
    4. 部分服务如10,3e, 28, 85等支持响应抑制,子服务+0x80会抑制正响应
  2. 故障码(diagnostic trouble code)
    1. 四字节: 三字节编码加一个字节的状态位
    2. 状态位: bit0 test failed, bit1 test failed this monitoring cycle…
      definedescription
      Bit 0Test Failed
      Bit 1Test Failed this monitoring cycle
      Bit 2Pending DTC
      Bit 3Confirmed DTC
      Bit 4Test not completed since last clear
      Bit 5Test Failed since last clear
      Bit 6Test not completed this monitering cycle
      Bit 7Warning indicator requested
  3. 10服务 诊断会话
    1. 1001(default session): uds启动处于该会话,在切入非默认会话超时自动切回默认会话
    2. 1002(programming session): 刷写会话,升级相关的功能会限制在该会话执行,02会话不能直接从01进入,需要从03进入
    3. 1003(extend session): 扩展会话,比默认会话范围大,通常2e等服务会在该会话支持
    4. 1060(production session): 产线会话,支持多种刷写配置和测试功能等服务,大多数需求由工厂定义
  4. 11服务 重启功能
    1. 01(硬重启): 通过设置芯片的reset针脚实现硬件意义上的重启
    2. 02(快速休眠): 设备进入休眠状态
    3. 03(软重启): 通过软件的reset功能进行重启
  5. 27服务 安全访问(securityAccess level = (n+1)/2)
    1. 奇数n作为seed request
    2. n+1作为key confirm
  6. 28服务 通信控制
    1. 00 开启接收和发送
    2. 01 开启接收和禁用发送
    3. 02 开启发送和禁用接收
    4. 03 禁用接收和发送
    5. 01 app报文,02 网络管理报文,03 所有报文
  7. 3E服务 会话维持
    1. 00子服务需要设备回复响应
    2. 80子服务会抑制设备的正响应
  8. 85服务 故障控制
    1. 01 开启故障
    2. 02 禁用故障
  9. 19服务 故障查询
  10. 01 和掩码匹配的dtc个数 19 01 xx
  11. 02 和掩码匹配的dtc 19 02 xx
  12. 04 对应dtc的snapshot 19 04 xx xx xx xx
  13. 06 对应dtc的扩展信息 19 06 xx xx xx xx
  14. 0a 设备所有支持的dtc 19 0a
  15. 14服务 故障清除
    1. 通常仅支持ff ff ff(清除全部故障)
  16. 22服务 数据读取
    1. 会有两个字节的ID来标识需要读取的lidar信息
  17. 2E服务 数据写入
    1. 会有两个字节的ID来标识需要写入的lidar信息
    2. 长度不能小于4
  18. 31服务 例程控制
    1. 01子服务,启动例程控制
    2. 02子服务,停止例程控制
    3. 03子服务,获取结果
  19. 34服务 传输请求(34 00 44 00 00 00 00 00 00 00 01)
    1. 00 表示压缩格式和加密格式(00 没有压缩没有加密)
    2. 44表示4字节的memory地址和4字节的文件大小
    3. 回复报文会带有36服务可以接收的单帧最大长度
  20. 36服务 数据传输
    1. 36 + n(数据序号) + data_n
    2. n从1开始,到达255以后重置为0
  21. 37服务 传输结束
    1. 结束传输数据

3. 实现

  1. 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的故障条件设置和快照等信息会在这部分实现

      SWC1
      DiagSWC
      RTE
      Communication service-dcm
      Tester
      SWC2
      SWC3
      System services-dem
  2. 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
      
      在这里插入图片描述
  • 11
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值