【AUTOSAR】UDS协议的代码分析与解读(七)----UDS读取数据和读取内存

8.7 读取数据 ReadDataByIdentifier (22h)

此服务允许诊断工具读取数据标识符对应的数据记录。

ECU肯定响应报文发送数据记录值。记录值的格式和定义需在零部件诊断规范中详细描述。记 录值要求包括模拟输入和输出信号, 数字输入和输出信号,ECU支持的内部数据和系统的状态等。

8.7.1 报文格式

 36 读取数据服务的请求报文

Byte

Name

Cvt

Value  (Hex)

#1

RequestServiceIdentifier

M

22

#2

#3

DataIdentifier[]=[

byte#1

byte#2]

M

00-FF

00-FF

 37 读取数据服务的肯定响应

Byte

Name

Cvt

Value  (Hex)

#1

PositiveResponseServiceID

M

62

#2

#3

DataIdentifier[]=[

byte#1

byte#2]

M

00-FF

00-FF

#4

DataRecord[]=[

data#1

data#n]

M

00-FF

00-FF

8.7.2 支持的否定响应码

38 读取数据服务的否定响应码

Hex

Cvt

ErrorText

13

M

报文长度错

如果报文长度错误或者诊断工具一次请求的DID个数超过允许的最大值,则 发送否定响应码。

31

M

请求超出范

下情况时,发送此否定响应码:

1.没有一个请求的DID值被ECU支持;

2.当前会话下没有一个请求的DID值被ECU支持。

22

U

条件未满足

如果ECU操作条件不满足执行相应动作的要求,发送此否定响应代码。

33

U

安全访问拒绝

如果与专用地相关的数据标识符处于保护状态并且ECU锁定, 发送此否定响应 

8.7.3 参数定义

附录B中定义了h业部强制要求的数据标识符,每个ECU都必须支持。其他与ECU功能相关的 据标识符h事业部及供应商的诊断工程师共同定义并在零部件诊断规范中详细描述。

8.7.4 执行规定

通过此诊断服务一次读取的数据标识符多为1个。

8.8 读取内存 Read Memory By Address (23h)

该服务允许诊断工具根据起始地址及定义的数据大小从ECU中读取数据。

8.8.1 报文格式

 39 读取内存服务的请求报文

Byte

Name

Cvt

Value  (Hex)

#1

Request Service Identifier

M

23

#2

Address And Length Format Identifier

M

24

#3

#6

Memory Address[]=[

byte#1(MSB)

byte#m]

M

M

00-FF

#7

#8

memorySize[]=[

byte#1(MSB)

byte#2]

M

M

00-FF

 40 读取内存服务的肯定响应

Byte

Name

Cvt

Value  (Hex)

#1

PositiveResponseServiceID

M

63

#2

#3

dataRecord[]=[

data#1

data#m]

M

U

00-FF

00-FF

8.8.2 支持的否定响应码

41 读取内存服务的否定响应码

Hex

Cvt

ErrorText

13

M

报文长度错

如果报文长度错误,发送此否定响应码

31

M

请求超出范

下情况时,发送此否定响应码:

1.[$MA,($MA+$MS-$1)]内的任意内存地址无效;

2.[$MA,($MA+$MS-$1)]内的任意内存地址受限;

3.请求报文中的参数memorySize大于ECU支持的最大值;

4.指定的addressAndLengthFormatIdentifier无效。

33

M

安全访问拒绝

如果[$MA,($MA+$MS-$1)]内的任意内存地址是受保护的且ECU没有处于解锁状 态,发送否定响应码。

22

U

条件未满足

如果ECU的操作条件不满足执行相应动作的要求,发送此否定响应码。

8.8.3 参数定义

内存地址”  (MemoryAddress)长度为4字节。

参数内存大小”  (MemorySize)长度为2字节。

8.8.4 执行规定

此服务的参数无特殊要求,但ECU需为直接读取内存的执行考虑适当的安全机制。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Autosar UDS NVM是指在Autosar架构中,用于实现用户数据存储和诊断功能的模块。UDS代表诊断服务,NVM代表非易失存储。UDS模块提供了标准化的诊断服务,包括故障码读取、清除和测试等功能。NVM模块用于管理和存储非易失数据,如故障码、配置参数等。 在Autosar架构中,使用了一些代码片段来实现功能。引用中的代码片段是将一个16位的偏移量左移8位,并将结果赋值给offset_u16变量。这个操作可能是为了对偏移量进行位操作或转换。 引用中的代码片段是将buffer_data_u8数组中的第一个元素与offset_u16进行按位或操作,并将结果赋值给offset_u16变量。这个操作可能是用于将buffer_data_u8中的数据与偏移量进行合并或更新。 因此,Autosar UDS NVM模块是用于实现诊断服务和非易失数据存储的模块,通过执行一系列的操作来读取、写入和管理数据。这些模块在Autosar架构中广泛应用,以提供丰富的诊断和数据存储功能。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Autosar诊断实战系列05-需存储NvM的DID配置开发详解](https://blog.csdn.net/initiallizer/article/details/131347964)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [【AUTOSAR-DCM】-4.3-UDS $22和$2E服务如何读取和写入NVM Block数据](https://blog.csdn.net/qfmzhu/article/details/125549843)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

大道生

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

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

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

打赏作者

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

抵扣说明:

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

余额充值