Autosar Dcm配置-0x23服务ReadMemoryByAddress-基于ETAS软件

2024-06-22 19:04

本文主要是介绍Autosar Dcm配置-0x23服务ReadMemoryByAddress-基于ETAS软件,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

    • 前言
    • Dcm配置
      • DcmDsd
      • DcmDsp
        • DcmDspMemoryIdInfo
    • 代码分析
    • 总结

前言

一般在调教开发阶段,会使用XCP进行观测和标定,本质上也是操作指定的内存地址。量产后,一般XCP会取消。本文介绍的UDS ReadMemoryByAddress服务,也是读取内存地址的值。在没有XCP时,通过ReadMemoryByAddress服务,也可以实现特定地址的观测。
image

Dcm配置

DcmDsd

需要配置对应的Service,包括ID,关联的会话模式,安全等级。示例配置如下:

只允许在扩展会话下读取,不需要安全等级解锁
image
此处配置了会话及等级,在后面还可以单独对每一块内存配置

DcmDsp

配置对应的内存范围,AddressAndLengthFormatIdentifier无法通过工具配置,默认是都支持的。

DcmDspMemoryIdInfo

配置内存,ReadMemory相关,DcmDspReadMemoryRangeInfo

DcmDspReadMemoryRangeHigh:读取内存的高字节

DcmDspReadMemoryRangeLow:读取内存的低字节

DcmDspReadMemoryRangeSecurityLevelRef:配置对应的安全等级

DcmDspReadMemoryRangeSessionLevelRef:配置对应的会话模式

示例配置如下:
image
配置完后生成BSW代码即可

代码分析

实际处理函数为:Dcm_DcmReadMemoryByAddress

生成的内存配置:

const Dcm_RMBAConfig_tst Dcm_RMBAConfig_cast []=
{{0x6FFFD8uL,   /*Lower memory address range allowed for reading*/0x6FFFE0uL,  /*High memory address range allowed for reading*/0x2uL,   /* Allowed Read Security levels */0x4uL,     /* Allowed Read Session levels */NULL_PTR,                                              /* No User specific Mode Rule function configured */0           /*Value of Memory Identifier to select the desired memory device*/}
};

函数调用流:

image
最终调用的函数为DcmAppl_Dcm_ReadMemory,该函数需要用户自行实现

输入的参数为:memoryaddress,datalength

实际在该函数中完成对应的读取功能

 Dcm_ReturnReadMemoryType DcmAppl_Dcm_ReadMemory(Dcm_OpStatusType Rmba_Opstatus,uint8 memoryid,uint32 memoryaddress,uint32 datalength,uint8 * respbuf,Dcm_NegativeResponseCodeType * ErrorCode){/* User Application should add the necessary code to Read the data from the memory address specified by the tester */Dcm_ReturnReadMemoryType retVal = DCM_READ_OK;//添加Read内存的代码,示例如下rba_BswSrv_MemCopy8(respbuf,memoryaddress,datalength);return(retVal);
}

总结

量产取消了XCP后,ReadMemoryByAddress如果利用的合理的话,对调试帮助还是非常大的。

这篇关于Autosar Dcm配置-0x23服务ReadMemoryByAddress-基于ETAS软件的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1085141

相关文章

Android 悬浮窗开发示例((动态权限请求 | 前台服务和通知 | 悬浮窗创建 )

《Android悬浮窗开发示例((动态权限请求|前台服务和通知|悬浮窗创建)》本文介绍了Android悬浮窗的实现效果,包括动态权限请求、前台服务和通知的使用,悬浮窗权限需要动态申请并引导... 目录一、悬浮窗 动态权限请求1、动态请求权限2、悬浮窗权限说明3、检查动态权限4、申请动态权限5、权限设置完毕后

TP-Link PDDNS服将于务6月30日正式停运:用户需转向第三方DDNS服务

《TP-LinkPDDNS服将于务6月30日正式停运:用户需转向第三方DDNS服务》近期,路由器制造巨头普联(TP-Link)在用户群体中引发了一系列重要变动,上个月,公司发出了一则通知,明确要求所... 路由器厂商普联(TP-Link)上个月发布公告要求所有用户必须完成实名认证后才能继续使用普联提供的 D

SpringBoot+MyBatis-Flex配置ProxySQL的实现步骤

《SpringBoot+MyBatis-Flex配置ProxySQL的实现步骤》本文主要介绍了SpringBoot+MyBatis-Flex配置ProxySQL的实现步骤,文中通过示例代码介绍的非常详... 目录 目标 步骤 1:确保 ProxySQL 和 mysql 主从同步已正确配置ProxySQL 的

Spring Boot整合log4j2日志配置的详细教程

《SpringBoot整合log4j2日志配置的详细教程》:本文主要介绍SpringBoot项目中整合Log4j2日志框架的步骤和配置,包括常用日志框架的比较、配置参数介绍、Log4j2配置详解... 目录前言一、常用日志框架二、配置参数介绍1. 日志级别2. 输出形式3. 日志格式3.1 PatternL

配置springboot项目动静分离打包分离lib方式

《配置springboot项目动静分离打包分离lib方式》本文介绍了如何将SpringBoot工程中的静态资源和配置文件分离出来,以减少jar包大小,方便修改配置文件,通过在jar包同级目录创建co... 目录前言1、分离配置文件原理2、pom文件配置3、使用package命令打包4、总结前言默认情况下,

微服务架构之使用RabbitMQ进行异步处理方式

《微服务架构之使用RabbitMQ进行异步处理方式》本文介绍了RabbitMQ的基本概念、异步调用处理逻辑、RabbitMQ的基本使用方法以及在SpringBoot项目中使用RabbitMQ解决高并发... 目录一.什么是RabbitMQ?二.异步调用处理逻辑:三.RabbitMQ的基本使用1.安装2.架构

VScode连接远程Linux服务器环境配置图文教程

《VScode连接远程Linux服务器环境配置图文教程》:本文主要介绍如何安装和配置VSCode,包括安装步骤、环境配置(如汉化包、远程SSH连接)、语言包安装(如C/C++插件)等,文中给出了详... 目录一、安装vscode二、环境配置1.中文汉化包2.安装remote-ssh,用于远程连接2.1安装2

Java中使用Java Mail实现邮件服务功能示例

《Java中使用JavaMail实现邮件服务功能示例》:本文主要介绍Java中使用JavaMail实现邮件服务功能的相关资料,文章还提供了一个发送邮件的示例代码,包括创建参数类、邮件类和执行结... 目录前言一、历史背景二编程、pom依赖三、API说明(一)Session (会话)(二)Message编程客

Redis多种内存淘汰策略及配置技巧分享

《Redis多种内存淘汰策略及配置技巧分享》本文介绍了Redis内存满时的淘汰机制,包括内存淘汰机制的概念,Redis提供的8种淘汰策略(如noeviction、volatile-lru等)及其适用场... 目录前言一、什么是 Redis 的内存淘汰机制?二、Redis 内存淘汰策略1. pythonnoe

windos server2022的配置故障转移服务的图文教程

《windosserver2022的配置故障转移服务的图文教程》本文主要介绍了windosserver2022的配置故障转移服务的图文教程,以确保服务和应用程序的连续性和可用性,文中通过图文介绍的非... 目录准备环境:步骤故障转移群集是 Windows Server 2022 中提供的一种功能,用于在多个