【AUTOSAR-DCM】-3.3-不依赖CDD手动在CFG中创建配置读一个带一个Data的DID(dataIdentifier)数据标识符(UDS $22服务诊断)

本文详细介绍了在没有CDD的情况下,如何在DaVinci Configurator (CFG) 中手动创建和配置一个数据标识符(DID),包括创建DataInfo、Data、DidInfo和Did,并解决配置完成后出现的错误。接着说明如何在DaVinci Developer (DEV) 中将DID添加到软件组件(SWC)以及在CFG中连接DCM和SWC的通信端口。

案例背景:(共10页精讲

在《【AUTOSAR-DCM】-3.1-将CDD导入CFG并查看$22服务配置变化(UDS诊断DID带一个Data)》中,自动创建/配置DID。接下来讲讲在没有诊断描述文件CDD/ODX/PDX的情况下,有时需要临时手动创建/配置DID。如图0-1,仿照该图在CFG中手动创建和配置DID:0xFE01,DID一个DataRecord:voltage_gain_value

下面我们讲讲,如何在CFG中手动创建/配置一个DID

图0-1

目录

1 在CFG中手动创建并配置DID

1.1 创建一个DataInfo

1.2 创建一个Data

1.3 创建一个DidInfo

1.4 创建一个Did

2 DID创建/配置完成后,消除CFG中的错误

3 在Develop中将该DID对应的C/S Port添加到SWC中

4 在CFG中DCM与SWC对应的C/S Port进行连接

<think>好的,我现在需要在Vector的DaVinci工具中配置一个DID用于数据存储。首先,我需要回顾一下之前学过的相关引用内容,特别是引用[2]和[3],因为它们提到了DaVinci配置DIDCDD文件的处理。 根据引用[2],配置DID的第一步是更新诊断描述文件(CDD),并且只能在现有的工程CDD基础上修改,能新建。这是因为DaVinci有唯一性检查。所以,我应该先找到工程中的CDD文件,然后进行编辑。接下来,引用[3]提到CANdelaStudio可以导出DEXT文件,然后DaVinci加载这个文件来配置基础软件。这说明可能需要使用CANdelaStudio来创建或编辑DID,再导出到DaVinci中。 步骤大概是这样的:首先在CANdelaStudio中定义DID,设置它的标识符、长度、写权限等属性。然后导出为DEXT文件,再在DaVinci Configurator中导入这个DEXT,生成相应的配置过,用户提到的是直接在DaVinci中配置,所以可能需要结合CDD文件的修改和DEXT导入的步骤。 另外,引用[4]中的代码示例展示了如何在代码中使用MemMap来处理内存映射,这可能与DID数据存储位置有关,但用户的问题更偏向配置层面,暂时可能需要深入代码。 现在需要具体步骤:首先,在CDD文件中添加新的DID,指定它的参数,比如DID号、数据长度、写类型(比如存储数据可能是写操作),然后配置对应的处理函数或内存映射。接着,在DaVinci中加载修改后的CDD生成代码,并确保DID的处理逻辑正确,比如存储到EEPROM或特定内存区域。 需要注意的地方包括:确保DID的ID唯一,正确设置数据长度,处理写权限,可能还需要配置Dcm模块的相关参数,如引用[1]提到的Dcm模块总体配置。此外,存储数据可能需要考虑持久化存储,所以在DID配置中可能需要关联到具体的存储地址或处理函数。 总结步骤应该是:1. 在CANdelaStudio中创建或编辑DID定义;2. 导出DEXT;3. 在DaVinci中导入DEXT并配置Dcm模块;4. 生成代码并验证。或者根据引用[2],直接在现有CDD中修改DID配置,然后让DaVinci生成代码。需要确认是否需要使用CANdelaStudio还是直接在CDD中修改。可能两种方法都可以,但根据引用[2],DaVinci要求修改现有CDD,所以可能是在CANdelaStudio中编辑CDD,然后导出到DaVinci? 或者,DaVinci本身是否允许直接编辑CDD中的DID配置?可能需要打开CDD文件,添加新的DID条目,设置相关参数,比如DID号、数据长度、访问权限,以及对应的处理函数或存储地址。然后在DaVinci中重新生成配置代码,确保Dcm模块包含这个DID的定义,并在代码中实现写该DID时的存储逻辑。 可能还需要在代码中实现DID服务,比如当诊断仪发送写请求时,将数据存储到指定位置。这可能需要配置Dcm模块的服务表,关联DID到相应的处理函数,或者在MemMap中指定存储区域,如引用[4]中的内存段。 此外,存储数据可能涉及到非易失性存储,所以需要确保DID的写入操作能够触发存储到EEPROM或其他持久化存储介质,这可能需要底层驱动的支持,但配置层面主要是定义DID及其属性。 可能的错误点包括:DID号冲突,数据长度匹配,权限设置正确,或者未正确关联到存储处理函数。需要仔细检查CDD中的配置,并验证生成的代码是否正确包含这些配置。</think>在Vector的DaVinci工具中配置DIDData Identifier)用于数据存储需遵循以下步骤: --- ### **配置流程** 1. **准备CDD文件** - 打开工程中的诊断描述文件(CDD),直接修改现有CDD文件(可新建,避免唯一性检查)[^2]。 -CDD中添加新的DID条目,定义以下属性: - **DID编号**:例如`0xF100`,需确保全局唯一。 - **数据长度**:根据存储需求定义,例如4字节。 - **访问权限**:设置为`Write`或`ReadWrite`以支持数据存储[^2]。 - **数据格式**:指定数据类型(如`uint8`数组或结构体)。 2. **关联存储逻辑** -DID配置中绑定存储处理函数(如`DID_Write_F100`),该函数需实现将接收的数据写入非易失性存储器(如EEPROM)的逻辑。 - 若使用AUTOSAR内存映射,需在MemMap中定义存储区域(参考`IPC_MemMap.h`的代码风格)[^4]。 3. **生成DEXT文件** - 使用CANdelaStudio导出AUTOSAR诊断提取文件(DEXT),包含新增DID的元数据[^3]。 4. **DaVinci配置** - 在DaVinci Configurator中加载DEXT文件,更新Dcm模块配置- 在`DcmDspData`子模块中添加DID定义。 - 配置诊断服务(如`0x2E WriteDataByIdentifier`)支持该DID写[^1]。 - 生成代码后,验证DID是否在`Dcm_Cfg.c`中正确注册。 5. **代码实现** -生成的代码框架中,补充DID处理函数的实际存储逻辑: ```c FUNC(Std_ReturnType, DCM_CODE) DID_Write_F100(uint8* data, uint16 length) { // 将数据写入EEPROM或指定内存区域 EEPROM_Write(F100_ADDR, data, length); return E_OK; } ``` --- ### **关键注意事项** - **唯一性检查**:确保DID编号与现有诊断服务冲突。 - **持久化存储**:若需掉电保存,需调用非易失性存储接口。 - **数据校验**:建议在写入前添加CRC校验或范围检查。 --- ### **验证方法** 1. 使用诊断工具(如CANoe)发送`2E F100 [数据]`请求,确认返回正响应(`67 F100`)。 2. 取存储区域,验证数据是否正确写入。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

汽车电子助手

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

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

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

打赏作者

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

抵扣说明:

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

余额充值