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);
TP:Tester Present待机握手
Bootloader——三段式
(1)预编程阶段
- 3E TP
正在更新!
参考文档:
1.图解基于UDS的Flash BootLoader - 心机之花的文章 - 知乎
https://zhuanlan.zhihu.com/p/69819290