STM32上实现简化版的AUTOSAR DEM模块

AUTOSAR从入门到实战:车载底层嵌入式学习路线与核心模块解析 汽车电子软件日益复杂,分层架构与接口标准化成为行业刚需。AUTOSAR作为全球主流的汽车电子软件架构标准,通过定义应用层、RTE和基础软件层(BSW)的清晰边界,解决了ECU软件复用与协作难题。理解其核心原理,不仅能帮助开发者快速上手CAN通信、UDS诊断、网络管理等关键模块,还能为后续学习BswM状态管理、AUTOSAR OS任务调度打下扎实基础。在智能座舱、域控制器等场景中,掌握基于AUTOSAR的嵌入式开发技能已成为Tier1和OEM招聘的重要门槛。本文围绕车载底层嵌入式工程师的成长路径,梳理从CAN 阅读详情

请添加图片描述

文章目录


摘要

在一些可以不使用AUTOSAR的项目中,往往也有故障检测和DTC存储的需求,开发一套类似于AUTOSAR DEM模块的软件代码,能够满足DTC的检出和存储,使用FalshDB代替Nvm模块,轻松构建持久化存储,如果你也有这样的需求,请阅读本篇,希望能够帮到你。


/**
  ******************************************************************************
  * @file    dem.c
  * @brief   DEM模块实现 - 基于FlashDB的故障管理
  * @note    支持功能:
  *           - DTC状态管理(当前/历史故障)
  *           - 故障计数器
  *           - 快照功能
  *           - FlashDB持久化存储
  ******************************************************************************
  */
#include <stdint.h>
#include <stdbool.h>
#include <string.h>
#include "fdb.h"
#include "stm32f4xx_hal.h"

/* 配置区 - 根据实际硬件调整 -------------------------------------------------*/
#define DEM_DB_NAME              "dem_db"        // 数据库名称
#define DEM_MAX_DTC_ENTRIES      50              // 最大DTC条目数
#define DEM_CURRENT_THRESHOLD    3               // 当前故障确认阈值
#define DEM_HISTORY_MAX_COUNT    0xFF            // 历史故障最大计数

/* 宏定义 --------------------------------------------------------------------*/
#define DTC_STATUS_CURRENT       (0x01U)         // 当前故障状态位
#define DTC_STATUS_HISTORY       (0x02U)         // 历史故障状态位
#define DEM_SNAPSHOT_MAGIC       (0xDEADC0DE)    // 快照数据魔数

/* 类型定义 ------------------------------------------------------------------*/
#pragma pack(push, 1)  // 严格字节对齐
/**
  * @brief  DTC条目存储结构
  */
typedef struct {
   
   
    uint32_t dtc_code;           // DTC编码 (SAE标准格式)
    uint8_t status;              // 状态位
    uint16_t current_counter;    // 当前故障计数器
    uint16_t history_counter;    // 历史故障计数器
    uint32_t first_occurrence;   // 首次发生时间戳
    uint32_t last_occurrence;    // 最后发生时间戳
} DTC_Entry;

/**
  * @brief  快照数据结构
  */
typedef struct {
   
   
    uint32_t magic;             // 魔数校验
    uint32_t timestamp;         // 快照时间戳
    uint16_t dtc_count;         // 有效DTC数量
    DTC_Entry entries[];        // DTC条目数组
} DEM_Snapshot;
#pragma pack(pop)

/* 模块全局变量 --------------------------------------------------------------*/
static struct fdb_kvdb dem_kvdb;            // FlashDB实例
static DTC_Entry dtc_list[DEM_MAX_DTC_ENTRIES]; // DTC内存缓存
static uint16_t<
AUTOSAR看门狗学习(1) 分享对AUTOSAR规范下的看门狗的理解 阅读详情

相关推荐

stm32中用到的实时系统_实时控制系统的时序模型及其在AUTOSAR系统仿真监控中的应用-4.2-时序模型...

原文引自:Frey, Patrick. "A timing model for real-time control-systems and its application on simulation and monitoring of AUTOSAR systems." (2010).本文仅用于自学和交流使用,未经允许请勿转载~4.2时序模型通过监视或模拟并行和分布式计算机系统来确定定时属性是基于...

weixin_39839018的博客 563

从STM32到汽车电子:一个嵌入式工程师的DTC实战入门笔记(含DEM模块配置)

本文分享了嵌入式工程师从STM32转型到汽车电子领域的DTC实战经验,重点解析了DEM模块的配置细节和DTC全生命周期管理。通过对比传统嵌入式与AUTOSAR架构的差异,详细介绍了DTC生成流程、DEM模块状态机管理及典型问题排查方法,帮助工程师快速掌握汽车电子诊断系统的开发技巧。

weixin_33728708的博客 393

autosar 诊断入门

这样,当驾驶员打开头灯的开关时,“开关控制SWC” 会通过 RTE 发送消息给 “头灯控制SW灯控制SWC” 会调用基础软件层的 GPIO 驱动程序,通过微控制器抽象层控制硬件层的 GPIO 引脚,从而点亮头灯。它的主要目标是为了创建一种独立于硬件的软件架构,以提高汽车电子系统的模块化和可重用性。例如,当驾驶员打开头灯的开关,"开关控制SW RTE 告诉 "头灯控制SW。应用层:这一层包含所有的软件组件,也就是我们的头灯、尾灯和转向灯的控制代码。硬件层:这一层就是实际的硬件,也就是我们的单片机和灯光硬件。

不断debug,优化中…… 1387

AUTOSAR架构深度剖析:BSW模块功能图解说明

深入解析AUTOSAR架构下的BSW模块组成与工作原理,通过图解方式清晰展示各子层功能,帮助开发者更好理解autosar架构在汽车电子系统中的实际应用与设计逻辑。

weixin_36212459的博客 533

Autosar视频教学:从BSWM模块到汽车软件开发实践指南

嵌入式系统开发中,软件架构标准化是提升开发效率和软件质量的关键。AUTOSAR(汽车开放系统架构)作为汽车电子领域的主流标准,通过分层架构和模块化设计,解决了ECU软件复用与集成的核心难题。其技术价值在于定义了从应用软件组件到基础软件的统一接口规范,实现了软硬件解耦,支持汽车软件的快速迭代与跨平台部署。在工程实践中,开发者需要掌握BSW(基础软件)模块配置、RTE(运行时环境)生成等核心技能,例如通过BSWM(基础软件管理模块)实现系统模式协调,或配置COM模块完成车载通信。本资源聚焦汽车电子领域的AUTO

weixin_34236869的博客 795

AutoSAR开发指南:实现LED灯闪烁效果

通过配置和编写相应的代码,我们可以利用AutoSAR的强大功能来快速构建和部署嵌入式系统的应用程序。在主循环中,我们交替调用接口函数以实现闪烁效果,并且配合简单的延时函数来控制LED的亮灭时间。AutoSAR是一种广泛应用于汽车电子系统开发的软件架构标准,它提供了一种在分布式系统中进行软件组织和通信的方法。这里我们选择一个基于ARM Cortex-M系列的微控制器作为开发板,并使用AutoSAR开发套件中的相关组件和驱动程序进行开发。根据具体的开发环境和工具链,可以选择适当的方式进行编译和下载。

带你成为别人眼中的大佬! 673

Autosar进阶专栏索引

Autosar进阶专栏索引

赞的博客 3540

【AUTOSAR 从 0 到 1】100 篇完整学习路线

100 篇,看起来很多。这 100 篇其实只能算刚刚把门推开。AUTOSAR 后面还有大量东西可以继续往深处挖。SecOCMulti-CoreSomeIpEthernetDoIPJ1939BootloaderOTAASPICE性能优化复杂故障定位但任何复杂系统,都需要先有一个起点。这个系列的目标不是让你背会多少参数。AUTOSAR 到底是什么?你脑子里面想到的不再只是一张经典的分层架构图。MCU上电↓Startup↓EcuM↓BSW初始化↓OS启动↓。

qq_15856721的博客 419

【论文分享】【Agent】ProAgent: Building Proactive Cooperative Agents with Large Language Models

多智能体系统是由多个智能体组成的集合,这些智能体可以是软件程序、机器人、传感器或其他实体,它们各自具备一定的智能和自主性,并通过交互协作来实现单个智能体难以完成的复杂目标。

nanxun___的博客 1123

qt下使用grpc编程(2) —— 练手!自己改的一个简单小例子!1

(1)在研究了grpc官方提供的helloworld例程后,自己试着写了个小程序。 (2)编写proto文件。 proto文件用于定义服务和消息,用protobuf的语法编写,protobuf是一种通信协议,详细请百度。下面附上源码: syntax = "proto3"; option java_multiple_files = true; option java_pac

u011099079的博客 3925

AI人工智能全模态大模型架构:推动智能交通发展的架构设计

本文旨在阐述全模态大模型在智能交通领域的架构设计原理和应用方法。我们将探讨如何利用多模态AI技术解决交通流量预测、事故预警、路线优化等关键问题。文章将从基础概念入手,逐步深入技术细节,最后探讨实际应用和未来发展方向。全模态大模型:能够处理和理解多种数据模态(如图像、文本、语音等)的大型AI模型智能交通系统(ITS):利用先进技术优化交通流量和安全性的综合系统多模态融合:将不同数据源的信息整合处理的技术核心概念回顾全模态大模型是能够处理多种数据类型的强大AI系统。

AGI×大数据,开启智能时代的认知跃迁;解码AGI,赋能数据驱动的智能革命。 835

泛微E9集成登录实战:5分钟搞定第三方系统单点登录配置(附避坑指南)

本文详细解析了泛微E9集成登录的实战配置流程与核心原理。通过理解其基于信任代理的身份传递机制,文章指导用户如何在5-10分钟内完成第三方系统的单点登录对接,涵盖基础配置、核心参数设置、高级表达式应用,并提供了编码问题、账号不一致等常见避坑指南,助力企业快速构建统一身份认证门户。

weixin_29185493的博客 293

Comsol有限元网格剖分实战:从基础操作到高效仿真技巧

本文系统介绍了COMSOL有限元网格剖分的核心实战技巧。从基础的物理场控制与用户控制网格选择,到三角形、四边形、四面体等网格单元类型的适用场景,再到扫掠网格、边界层网格与复制网格等高效剖分方法,最后讲解了网格质量评估与几何预处理的关键步骤。旨在帮助用户掌握从自动到手动、从基础到高效的网格剖分艺术,实现仿真精度与计算效率的最佳平衡。

j7k8l的博客 376

innovus 命令每日精要 | 掌控Innovus布线的利器——setNanoRouteMode详解

在数字IC后端设计的复杂世界里,布线优化是至关重要的一步。今天,我来给大家深入讲解Innovus工具中setNanoRouteMode命令的精妙之处,让你轻松驾驭布线策略,提升设计质量。setNanoRouteMode是Innovus中用于配置NanoRoute绕线行为的关键命令。通过其丰富的参数,你可以精细控制布局后阶段的绕线策略、信号完整性优化、工艺适配及设计规则修复等流程。下面,我将按功能分类总结其核心选项,并针对不同场景给出建议。

weixin_50820814的博客 3529

输入过欠压保护电路分析

输入过欠压保护电路仿真分析

HW-BASE的博客 6912

SAP GR(Group Reporting)合并报表内容及功能简介(五)-合并和抵消

随着合并和收购数量的显著增加,企业在全球经济中面临着诸多挑战。其中最常见的是法律实体与子公司之间缺乏透明度,导致无法以经济高效的方式对账法律实体与子公司之间的公司间交易,从而造成结算出现重大延迟。公司间匹配和对账功能允许用户在关账过程中进行早期分析,以避免公司间差异,并缩短关账时的延迟。公司间匹配和对账功能交易级别匹配和实时对账基于各种组织维度(如公司、利润中心和合并单位)的灵活建模自动差异解决。应用内通信和工作流。与公司间抵销集成。

weixin_43853754的博客 4400

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

上一篇: C++,设计模式,【抽象工厂模式】
下一篇: C语言中,memmove和memcpy的区别?
智驾
博客等级 码龄11年 6671粉丝 574原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

打赏作者

智驾

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

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

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

打赏作者

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

抵扣说明:

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

余额充值