UDS之10服务

     笔者最近接触一个UDS的项目,现针对UDS中遇到的问题进行总结。

    10服务是UDS中的会话切换。由于之前做的BOOTLOADER比较多,现在算是重点放到了UDS诊断这一块。

     BOOT中 10服务分为 1.默认会话;2.刷新会话;3.扩展会话。

     APP  中只有 01.默认会话和扩展会话。当诊断仪发送 02 10 02时回复78等待。重启控制器进入BOOT模式。

   

uds_service_10 (uint8 msg_buf[], uint16 msg_dlc)
{
    uint8 subfunction;
	uint8 rsp_buf[8];

	subfunction = UDS_GET_SUB_FUNCTION (msg_buf[1]);

	rsp_buf[0] = USD_GET_POSITIVE_RSP(SID_10);
	rsp_buf[1] = subfunction;
	rsp_buf[2] = (uint8)(P2_SERVER >> 8);
	rsp_buf[3] = (uint8)(P2_SERVER & 0x00ff);
	rsp_buf[4] = (uint8)(P2X_SERVER >> 8);
	rsp_buf[5] = (uint8)(P2X_SERVER & 0x00ff);
	switch (subfunction)
	{
		case UDS_SESSION_STD:
			curr_sa = UDS_SA_NON;
			uds_session = (uds_session_t)subfunction;
			uds_positive_rsp (rsp_buf, 6);
			break;

        case UDS_SESSION_PROG:
            uds_negative_rsp (SID_10,0x78);
            EEPRM_CLEAR_PROGFlg();
            reset();
            break;

		case UDS_SESSION_EXT:
			curr_sa = UDS_SA_NON;
			uds_session = (uds_session_t)subfunction;
			uds_positive_rsp (rsp_buf, 6);
            uds_timer_start (UDS_TIMER_S3server);
			break;
		default:
			uds_negative_rsp (SID_10,0x12);
			break;
	}
}

你可能感兴趣的:(前端)