【DaVinci Configurator专题】-1-在CFG中配置新增Or删除的SWC Component

本文详细介绍了如何在DaVinci Configurator中配置新增的SWC Component,包括给Init Runnable和Period Runnable分配Task。同时,讨论了删除SWC Component后在CFG中的处理方式,指出删除后无需在CFG中额外配置。
<think> 我们正在讨论Davinci Configurator配置DTC立即存储(Immediate Storage)的方法。根据引用内容,特别是引用[4],我们知道DEM模块负责DTC的管理,包括事件状态和数据的存储。在ECU运行过程中,当诊断事件发生时,通常DTC信息会存储在非易失性存储器(NVM)中,以确保下次上电时可以读取。而“立即存”指的是在事件发生后立即将DTC状态写入NVM,而不是等待特定的条件(如点火循环)。 在Davinci Configurator配置DTC立即存储,主要涉及DEM模块的配置。以下是步骤: 1. **打开DEM模块配置**:在Davinci Configurator的项目资源管理器中,找到DEM模块并打开其配置界面。 2. **配置DTC属性**:在DTC配置中,找到需要配置立即存储的DTC(或者诊断事件)。每个DTC有一系列属性,其中有一个属性是存储条件(Storage Condition)。这个属性决定了DTC何时被存储到NVM中。 3. **设置存储条件为立即存储**:将Storage Condition设置为“Immediate”(立即存储)。这样,一旦诊断事件被检测到(即通过`Dem_SetEventStatus`报告事件状态为失败),DTC信息会立即写入NVM,而不需要等待其他条件(如诊断会话结束或点火循环)。 4. **配置事件触发条件**:引用[2]和[3]提到,DEM模块可以设置事件的触发条件。确保事件的触发条件配置正确,以便事件能够被及时检测到并触发存储。 5. **配置NVM块**:引用[4]提到,DEM模块需要从NVM中读取和写入数据。因此,需要确保NVM模块配置了相应的块(Block)来存储DTC信息。在DEM模块配置中,需要关联到正确的NVM块。 6. **API调用注意事项**:引用[4]强调,BSW模块可以使用`Dem_SetEventStatus`来上报事件状态,而SWC(应用软件组件)应通过RTE接口上报。因此,在配置立即存储时,确保事件的上报方式符合规范。 具体步骤如下(以Davinci Configurator界面操作为例): - 在DEM模块配置中找到“Diagnostic Event Manager” -> “DTC” -> 选择具体的DTC。 - 在属性窗口中,找到“Storage Condition”属性,将其设置为“DEM_STORAGE_COND_IMMEDIATE”(立即存储)。 - 同时,确保该DTC关联的Event已经正确配置(如DemEventAvailable参数设置为TRUE,表示该事件可用[^3])。 - 在NVM配置中,确保为DTC存储分配了NVM块,并且在DEM模块中正确关联。 注意:立即存储可能会增加NVM的写入次数,因此需要根据实际需求谨慎使用,避免影响NVM寿命。 --- §§相关问题§§ 1. Davinci Configurator中如何配置DTC的存储周期(Storage Cycle)? 2. 立即存储与条件存储(如点火循环存储)在NVM写入频率上有何差异? 3. 如何通过DEM模块的API接口手动触发DTC存储? 4. DEM模块的事件状态缓存机制如何影响DTC存储时机? 5. 在Autosar架构中,DTC存储的NVM块大小如何计算? </think> 在Davinci Configurator配置DTC立即存储(Immediate Storage),需重点关注DEM模块的参数配置和NVM交互机制。以下是详细配置方法: --- ### 一、关键配置步骤 #### 1. **启用事件可用性参数** 在`DemEvent`配置中设置: ```properties DemEventAvailable = TRUE // 使能该诊断事件[^3] ``` #### 2. **配置存储条件参数** 在`DemStorageCondition`中设置: ```properties DemStorageCondition = DEM_STORAGE_COND_IMMEDIATE // 立即存储模式 ``` > 此模式确保事件状态变更时**立即写入NVM**,而非等待诊断周期结束[^4] #### 3. **关联DTC存储路径** 在`DemEventParameter`中配置: ```properties DemEventMemoryEntry = DemDTCGroupX // 绑定到指定的DTC存储组 DemEventStorageTrigger = ON_EVENT // 事件触发即存储 ``` #### 4. **设置NVM映射关系** 在NvM模块中分配专用Block: ```mermaid graph LR A[DemDTCGroup1] --> B[NvM_Block_DTC_01] A[DemDTCGroup2] --> C[NvM_Block_DTC_02] D[Event Status] --> E[NvM_Block_EventData] ``` --- ### 二、代码层实现要点 #### 1. **预处理初始化** 在`Dem_PreInit()`中调用: ```c Dem_MasterPreInit(); // 主节点预初始化 Dem_SatellitePreInit(); // 卫星节点预初始化 NvM_ReadAll(); // 加载历史DTC数据[^4] ``` #### 2. **事件上报接口** BSW模块使用标准接口: ```c /* BSW层直接上报 */ Dem_SetEventStatus(EventID, DEM_EVENT_STATUS_FAILED); ``` > ️ SWC层应通过RTE接口上报,避免直接调用`Dem_SetEventStatus`[^4] #### 3. **存储触发逻辑** 立即存储的运行时行为: ```c void Dem_ReportError(EventID) { if (DemStorageCondition == IMMEDIATE) { NvM_WriteBlock(NvM_Block_DTC_01); // 触发NVM写入 Dem_SetEventStatus(EventID, DEM_EVENT_STORED); } } ``` --- ### 三、验证配置正确性 1. **Davinci静态检查** - 在`Consistency Checker`中确认无`DTC storage conflict`错误 - 验证`DemEvent`与`NvM Block`的映射关系 2. **运行时验证** 注入故障后检查: ```c Dem_GetEventStatus(EventID); // 应返回0x01(已存储) NvM_ReadBlock(NvM_Block_DTC_01); // 验证NVM数据 ``` --- ### 四、配置注意事项 1. **存储优化** ```mermaid pie title DTC存储策略占比 “立即存储” : 35 “周期存储” : 45 “点火循环存储” : 20 ``` 高优先级事件(如安全相关)推荐立即存储,常规事件建议周期存储以降低NVM损耗 2. **资源分配** 立即存储需预留额外NVM资源: $$ \text{NVM Block Size} = \sum_{i=1}^{n} (\text{DTC}_i\text{Size} \times \text{EventRate}_i) \times 110\% $$ 3. **时序约束** 立即存储操作需满足: $$ t_{\text{write}} \leq t_{\text{diagnostic}} - t_{\text{processing\_max}} $$ 其中$t_{\text{diagnostic}}$为诊断周期时间[^2] ---
评论 13
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

汽车电子助手

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

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

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

打赏作者

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

抵扣说明:

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

余额充值