UDS (Unified Diagnostic Services):汽车诊断标准协议
Tester(诊断方)<--------------------------------------->ECU(汽车电控单元)
2.UDS的硬件实现:CAN总线和诊断接口
3.UDS的软件实现:协议栈(Core)和应用程序
UDS协议的应用:
- 故障诊断
- 实时数据读取
- 控制单元编程
- ECU重置
函数原型如下:
/******************************UDS service main function define***************************************/
/*dig session*/
static void DigSession(struct UDSServiceInfo* i_pstUDSServiceInfo, tUdsAppMsgInfo *m_pstPDUMsg);
/*control DTC setting*/
static void ControlDTCSetting(struct UDSServiceInfo* i_pstUDSServiceInfo, tUdsAppMsgInfo *m_pstPDUMsg);
/*communication control*/
static void CommunicationControl(struct UDSServiceInfo* i_pstUDSServiceInfo, tUdsAppMsgInfo *m_pstPDUMsg);
/*security access*/
static void SecurityAccess(struct UDSServiceInfo* i_pstUDSServiceInfo, tUdsAppMsgInfo *m_pstPDUMsg);
/*write data by identifier*/
static void WriteDataByIdentifier(struct UDSServiceInfo* i_pstUDSServiceInfo, tUdsAppMsgInfo *m_pstPDUMsg);
/*request download*/
static void RequestDownload(struct UDSServiceInfo* i_pstUDSServiceInfo, tUdsAppMsgInfo *m_pstPDUMsg);
/*transfer data*/
static void TransferData(struct UDSServiceInfo* i_pstUDSServiceInfo, tUdsAppMsgInfo *m_pstPDUMsg);
/*request transfer exit*/
static void RequestTransferExit(struct UDSServiceInfo* i_pstUDSServiceInfo, tUdsAppMsgInfo *m_pstPDUMsg);
/*routine control*/
static void RoutineControl(struct UDSServiceInfo* i_pstUDSServiceInfo, tUdsAppMsgInfo *m_pstPDUMsg);
/*reset ECU*/
static void ResetECU(struct UDSServiceInfo* i_pstUDSServiceInfo, tUdsAppMsgInfo *m_pstPDUMsg);
/*Tester present service*/
static void TesterPresent(struct UDSServiceInfo* i_pstUDSServiceInfo, tUdsAppMsgInfo *m_pstPDUMsg);
基于UDS on CAN的bootloader程序
分为三个阶段:
- BootloaderPreProgrammed预编程阶段
- BootloaderProgrammed 编程中阶段
- BootloaderPostProgrammedNode后编程阶段
正在更新!
参考文档:
1.图解基于UDS的Flash BootLoader - 心机之花的文章 - 知乎
https://zhuanlan.zhihu.com/p/69819290