《AutoSar实战》禁止功能寻址


->返回总目录<-

前言

本章基于DaVinCi禁止功能寻址的办法。DaVinCi默认支持功能寻址,因此需要特殊处理。


一、功能寻址是什么?

诊断报文的CAN identifier分为物理寻址和功能寻址。前者针对整车上一个ECU会指定一个物理寻址ID。
例如物理寻址ID为0x716,功能寻址ID为0x7DF(均由整车厂定义
物理寻址:通过诊断仪发送物理寻址0x716的报文时,只有被指定的某个ECU可以接收到这个报文,类似单播模式。
功能寻址:通过诊断仪发送物理寻址0x7DF的报文时,整车上所有ECU均能收到这个报文,功能类似广播方式。

二、步骤

1.使能制造商函数接口

1)使能函数
在这里插入图片描述
2)申明函数名
在这里插入图片描述
3)将Service port 连接到诊断模块,保持打开DaVinci Dev。
在这里插入图片描述
4)打开DaVinci Dev, 检查是否port生成了
在这里插入图片描述

5)DaVinci configurator 编译并生成代码
在这里插入图片描述
在这里插入图片描述
到此配置已结束。


2.分析函数并填充代码

下图为该函数的函数指针
在这里插入图片描述
形参分析:
sid: 诊断服务ID (如0x10,会话控制服务)
reqData: 诊断报文SID后面的数据(指针类型)
reqDataLen: 报文中除SID之外的数据长度(Byte)
reqType: 诊断请求类型,0 - 物理寻址, 1- 功能寻址
srcAddr: 测试地址(指针类型,没使用过)
nrc: 要返回的NRC码(指针类型)

代码如下(示例):

FUNC(Std_ReturnType, AppDiag_CODE) ServiceRequestManufacturerNotification_DcmDslServiceRequestManufacturerNotification_Indication(uint8 SID, P2CONST(uint8, AUTOMATIC, RTE_APPDIAG_APPL_DATA) RequestData, uint16 DataSize, uint8 ReqType, uint16 SourceAddress, P2VAR(Dcm_NegativeResponseCodeType, AUTOMATIC, RTE_APPDIAG_APPL_VAR) ErrorCode) /* PRQA S 0850 */ /* MD_MSR_19.8 */
{
	Std_ReturnType returnVal = RTE_E_OK;
	 if( ReqType == 1u)  
	  { 
	    /* Functional Request */
	    switch(SID)
	    {
	      case 0x27:  /* SecurityAccess */
	          returnVal = RTE_E_ServiceRequestNotification_E_REQUEST_NOT_ACCEPTED;
	          break;
	      case 0x2E:  /* WriteDataById */
	          returnVal = RTE_E_ServiceRequestNotification_E_REQUEST_NOT_ACCEPTED;
	          break;
	      case 0x2F:  /* IoControlById */
	          returnVal = RTE_E_ServiceRequestNotification_E_REQUEST_NOT_ACCEPTED;
	          break;
	      case 0x31:  /* RoutineControl */
	          returnVal = RTE_E_ServiceRequestNotification_E_REQUEST_NOT_ACCEPTED;
	          break;
	      default:
	          break;
	    }
  }
  return returnVal;
}

总结

当你发送任何诊断报文,都会先进入这个函数里执行,类似于可以扼杀一切的一个闸门。
例如:你以功能寻址的方式发送 27 01请求seed,这时会先调用这个函数,然后返回RTE_E_ServiceRequestNotification_E_REQUEST_NOT_ACCEPTED。
ECU不会做任何响应,即实现了禁止功能寻址。

->返回总目录<-

  • 5
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 10
    评论
AUTOSARAutomotive Open System Architecture,汽车开放系统架构)是一种面向汽车电子系统的开放式软件架构标准。AUTOSAR旨在解决现代汽车电子系统中的复杂性和互操作性的问题。 AUTOSAR实战教程为学习AUTOSAR开发的人员提供了实用的指导和练习。教程通常包括以下方面的内容: 1. AUTOSAR架构概述:教程介绍AUTOSAR标准的基本概念、架构和组件。学习者将了解AUTOSAR中的不同软件组件并了解各个软件模块之间的通信方式。 2. AUTOSAR工具链:教程会介绍AUTOSAR开发所需的工具,如配置工具、开发工具、仿真工具等。学习者将学习如何使用这些工具进行AUTOSAR应用程序的开发、调试和验证。 3. AUTOSAR软件开发:教程将指导学习者如何根据AUTOSAR标准的要求进行软件开发,包括编写软件组件、配置网络通信和实现诊断功能等。 4. AUTOSAR应用案例:教程通常会提供一些实际的AUTOSAR应用案例,以帮助学习者将知识应用于实际项目中。这些案例将涉及汽车电子系统的各个方面,如电动驱动、车身电子系统等。 AUTOSAR实战教程对于初学者来说非常有用,可以帮助他们更好地理解AUTOSAR架构和开发流程。它们提供了一种实践的方法,让学习者通过实际操作来掌握AUTOSAR开发的技能。通过参与实际项目案例,学习者将能够更好地理解AUTOSAR汽车电子系统中的应用,并成为一名优秀的AUTOSAR开发工程师。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

&春风有信

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值