当前位置: 首页 > news >正文

AUTOSAR进阶图解==>AUTOSAR_SWS_BSWGeneral

AUTOSAR基础软件模块通用规范详解

AUTOSAR基础软件架构、配置、初始化与状态管理深度剖析

目录

  • 1. 概述
    • 1.1 AUTOSAR架构简介
    • 1.2 文档约定
  • 2. AUTOSAR基础软件架构
    • 2.1 分层架构
    • 2.2 模块组织
  • 3. BSW模块配置
    • 3.1 配置类型
    • 3.2 版本管理
  • 4. BSW模块初始化
    • 4.1 初始化流程
    • 4.2 依赖管理
  • 5. BSW模块状态管理
    • 5.1 状态转换
    • 5.2 错误处理
  • 6. BSW模块API接口
    • 6.1 通用API
    • 6.2 错误处理API
  • 7. 总结

1. 概述

1.1 AUTOSAR架构简介

本文档是AUTOSAR基础软件模块的通用规范,作为各个BSW模块的补充规范,为BSW模块定义了一套通用的工作产出和规则。

AUTOSAR(汽车开放系统架构)是一个标准化的汽车软件架构,旨在简化汽车电子控制单元(ECU)的开发和集成。其基础软件(BSW)是整个架构的核心,提供了标准化的接口和服务。

1.2 文档约定

本文档中的规范项描述了BSW模块实现或其部分与基础软件规范的关系。对于每个BSW模块,本文档和相应的BSW模块规范建立了规范项与基础软件需求之间的可追溯性。


2. AUTOSAR基础软件架构

2.1 分层架构

AUTOSAR采用分层架构设计,清晰地分离了不同层次的功能,提高了软件的可维护性和可移植性。

在这里插入图片描述

图2.1 AUTOSAR基础软件分层架构

图表解释:

应用层 (Application Layer)

  • 功能:包含实现具体应用功能的软件组件(SWC)
  • 组件:
    • 应用软件组件(SWC):实现特定功能的软件单元,如车身控制、发动机管理等
    • RTE:运行时环境,为应用软件组件提供标准接口,屏蔽底层实现细节

基础软件层 (Basic Software Layer)

  • 功能:提供标准化的服务和硬件抽象
  • 子层:
    • 服务层:提供高层次的服务,如通信服务、内存服务、诊断服务和操作系统服务
    • ECU抽象层:抽象ECU特定的硬件功能,包括通信硬件抽象、存储硬件抽象和I/O硬件抽象
    • 微控制器抽象层(MCAL):直接操作微控制器硬件,提供标准化接口
    • 复杂驱动层:处理复杂设备的驱动,直接连接到RTE和微控制器驱动
代码示例:
/* AUTOSAR BSW模块头文件示例 */
#ifndef MODULE_NAME_H
#define MODULE_NAME_H/* 标准AUTOSAR类型头文件 */
#include "Std_Types.h"
#include "ComStack_Types.h"/* 模块版本信息 */
#define MODULENAME_VENDOR_ID         42
#define MODULENAME_MODULE_ID         123
#define MODULENAME_SW_MAJOR_VERSION  2
#define MODULENAME_SW_MINOR_VERSION  5
#define MODULENAME_SW_PATCH_VERSION  1/* 服务层模块API */
Std_ReturnType ModuleName_Init(const ModuleName_ConfigType* ConfigPtr);
void ModuleName_GetVersionInfo(Std_VersionInfoType* VersionInfoPtr);
Std_ReturnType ModuleName_ProvidedService(uint8 ServiceId);/* 微控制器抽象层的API调用示例 */
void ModuleInit_Example(void) {/* 调用MCAL模块接口 */Mcu_Init(&McuConfig);          /* 初始化MCU */Port_Init(&PortConfig);        /* 初始化IO端口 */Dio_WriteChannel(LED_CHANNEL, STD_HIGH); /* 设置IO状态 *//* 服务层模块初始化 */Com_Init(&ComConfig);          /* 初始化通信模块 *//* 应用RTE接口示例 */Rte_Write_AppSignal_Value(signalValue);
}#endif /* MODULE_NAME_H */

2.2 模块组织

AUTOSAR基础软件层包含多个功能模块,每个模块都有特定的职责和标准化的接口。这些模块按照其功能和层次进行组织,形成一个完整的软件栈。

在AUTOSAR架构中,基础软件模块之间的依赖关系需要明确定义,以确保正确的初始化顺序和运行时行为。


3. BSW模块配置

3.1 配置类型

每个AUTOSAR BSW模块都需要一套配置结构,用于初始化和参数化模块行为。这些配置结构定义了模块的运行参数、功能选项和行为特征。

在这里插入图片描述

图3.1 AUTOSAR BSW模块配置类图

图表解释:

配置类型体系

  • Std_VersionInfoType

    • 描述:标准版本信息类型,用于模块版本管理
    • 属性:
      • vendorID:供应商标识符,类型uint8
      • moduleID:模块标识符,类型uint8
      • sw_major_version:软件主版本号,类型uint8
      • sw_minor_version:软件次版本号,类型uint8
      • sw_patch_version:软件补丁版本号,类型uint8
  • ModuleConfigType

    • 描述:基础模块配置类型,所有BSW模块配置的基类
    • 属性:
      • moduleId:模块标识符,类型uint8
      • moduleEnabled:模块启用状态,类型boolean
      • moduleState:模块初始状态,类型uint8
      • versionInfo:版本信息,类型Std_VersionInfoType
  • 派生配置类型

    • Module_PreInitConfigType:预初始化配置,包含modulePreInitState
    • Module_InitConfigType:初始化配置,包含moduleInitState和configDataPtr
    • Module_PostBuildConfigType:后期构建配置,支持链接后配置修改
  • 辅助配置类型

    • Module_PublishedInformationType:发布信息配置,包含idBase、numberOfInstances等
    • Module_ConfigConsistencyHashType:配置一致性哈希,用于验证配置完整性
代码示例:
/* AUTOSAR BSW模块配置类型定义示例 *//* 标准版本信息类型 */
typedef struct {uint8 vendorID;           /* 供应商ID,例如Bosch为1,Continental为2等 */uint8 moduleID;           /* 模块ID,如Com=20, CanIf=60等 */uint8 sw_major_version;   /* 软件主版本号 */uint8 sw_minor_version;   /* 软件次版本号 */uint8 sw_patch_version;   /* 软件补丁版本号 */
} Std_VersionInfoType;/* 基础模块配置类型 */
typedef struct {uint8 moduleId;                  /* 模块标识符 */boolean moduleEnabled;           /* 模块启用状态 */uint8 moduleState;               /* 模块初始状态 */Std_VersionInfoType versionInfo; /* 版本信息 */
} ModuleConfigType;/* 预初始化配置类型 */
typedef struct {ModuleConfigType moduleConfig;   /* 基础模块配置 */uint8 modulePreInitState;        /* 预初始化状态 */
} Module_PreInitConfigType;/* 初始化配置类型 */
typedef struct {ModuleConfigType moduleConfig;   /* 基础模块配置 */uint8 moduleInitState;           /* 初始化状态 */void* configDataPtr;             /* 配置数据指针 */
} Module_InitConfigType;/* 后期构建配置类型 */
typedef struct {ModuleConfigType moduleConfig;   /* 基础模块配置 */uint16 configChecksum;           /* 配置校验和 */void* postBuildPtr;              /* 后期构建指针 */
} Module_PostBuildConfigType;/* 模块配置实例初始化示例 */
const Module_InitConfigType ModuleConfig = {{   /* 基础模块配置 */123,                         /* moduleId */TRUE,                        /* moduleEnabled */MODULE_STATE_UNINIT,         /* moduleState */{   /* 版本信息 */1,                       /* vendorID */20,                      /* moduleID */2,                       /* sw_major_version */5,                       /* sw_minor_version */0                        /* sw_patch_version */}},MODULE_STATE_READY,              /* moduleInitState */NULL                             /* configDataPtr */
};

3.2 版本管理

AUTOSAR BSW模块的版本管理是确保软件兼容性和可追溯性的关键部分。版本信息通常包含在模块的头文件中,并在运行时可通过API获取。

版本管理信息包括:

  • 供应商ID (Vendor ID):标识开发模块的供应商
  • 模块ID (Module ID):标识特定模块
  • 软件版本:主版本、次版本和补丁版本

4. BSW模块初始化

4.1 初始化流程

AUTOSAR BSW模块遵循标准化的初始化流程,确保模块按照正确的顺序启动并建立必要的依赖关系。

在这里插入图片描述

图4.1 AUTOSAR BSW模块初始化序列图

图表解释:

初始化阶段

  1. 预初始化阶段

    • 目的:执行基础设置,不依赖其他模块
    • 操作:调用ModuleName_PreInit()函数
    • 特点:只进行最基本的初始化,不涉及复杂依赖
  2. 初始化阶段

    • 目的:配置模块,建立模块间依赖
    • 操作:调用ModuleName_Init(Config)函数
    • 流程:
      • 校验配置参数
      • 调用依赖模块API
      • 初始化内部数据和硬件接口
      • 设置模块状态
  3. 周期函数启动阶段

    • 目的:启动模块的周期性任务
    • 操作:调用ModuleName_MainFunction()函数
    • 功能:执行需要定期处理的任务,与其他模块交互
  4. 应用程序启动阶段

    • 目的:使应用程序能够访问模块功能
    • 操作:应用程序通过调用模块API使用服务

交互参与者

  • ECU启动:触发整个初始化流程
  • BSW调度器:协调各模块的初始化和运行
  • BSW模块:被初始化的目标模块
  • 依赖模块:与目标模块有依赖关系的其他模块
  • OS/硬件:底层操作系统和硬件平台
  • 应用层:使用BSW模块服务的应用程序
代码示例:
/* AUTOSAR BSW模块初始化示例 *//* 预初始化函数 - 不依赖其他模块 */
void ModuleName_PreInit(void) {/* 基础硬件初始化,不涉及其他模块依赖 *//* 模块内部变量初始化为默认值 */moduleState = MODULENAME_STATE_PRE_INIT;/* 仅执行必要的自包含初始化步骤 */for (uint8 i = 0; i < MODULENAME_MAX_CHANNELS; i++) {moduleChannels[i].state = CHANNEL_STATE_IDLE;}
}/* 完整初始化函数 - 包含配置检查和依赖模块调用 */
Std_ReturnType ModuleName_Init(const ModuleName_ConfigType* ConfigPtr) {Std_ReturnType result = E_NOT_OK;/* 检查模块状态 */if (moduleState != MODULENAME_STATE_PRE_INIT) {/* 报告错误: 模块未处于预初始化状态 */Det_ReportError(MODULENAME_MODULE_ID, 0, MODULENAME_INIT_API_ID, MODULENAME_E_UNINIT);return E_NOT_OK;}/* 参数检查 */if (ConfigPtr == NULL) {/* 报告错误: 配置指针为空 */Det_ReportError(MODULENAME_MODULE_ID, 0, MODULENAME_INIT_API_ID, MODULENAME_E_PARAM_POINTER);return E_NOT_OK;}/* 检查配置版本兼容性 */if ((ConfigPtr->versionInfo.sw_major_version != MODULENAME_SW_MAJOR_VERSION) ||(ConfigPtr->versionInfo.sw_minor_version != MODULENAME_SW_MINOR_VERSION)) {/* 报告错误: 版本不匹配 */Det_ReportError(MODULENAME_MODULE_ID, 0, MODULENAME_INIT_API_ID, MODULENAME_E_VERSION_MISMATCH);return E_NOT_OK;}/* 调用依赖模块API */if (DependModule_GetState() != DEPENDMODULE_STATE_READY) {/* 初始化依赖模块(如果需要) */result = DependModule_Init(&dependModuleConfig);if (result != E_OK) {/* 报告错误: 依赖模块初始化失败 */Det_ReportError(MODULENAME_MODULE_ID, 0, MODULENAME_INIT_API_ID, MODULENAME_E_DEPEND_MODULE);return E_NOT_OK;}}/* 保存配置 */moduleConfig = ConfigPtr;/* 初始化内部数据结构 */for (uint8 i = 0; i < ConfigPtr->numChannels; i++) {moduleChannels[i].config = &ConfigPtr->channelConfigs[i];moduleChannels[i].state = CHANNEL_STATE_READY;}/* 初始化硬件接口(如果适用) */HW_Init(&ConfigPtr->hwConfig);/* 设置模块状态 */moduleState = MODULENAME_STATE_INIT;return E_OK;
}/* 主函数 - 周期性调用 */
void ModuleName_MainFunction(void) {/* 检查模块状态 */if (moduleState != MODULENAME_STATE_INIT && moduleState != MODULENAME_STATE_RUNNING) {/* 模块未初始化,不执行任何操作 */return;}/* 执行周期性任务 */for (uint8 i = 0; i < moduleConfig->numChannels; i++) {/* 处理每个通道的状态 */ProcessChannelState(&moduleChannels[i]);/* 与其他模块交互 */if (moduleChannels[i].state == CHANNEL_STATE_ACTIVE) {DependModule_ProcessData(moduleChannels[i].data);}}/* 第一次主函数调用后,将状态设置为RUNNING */if (moduleState == MODULENAME_STATE_INIT) {moduleState = MODULENAME_STATE_RUNNING;}
}

4.2 依赖管理

BSW模块之间存在复杂的依赖关系,正确管理这些依赖是确保系统稳定性的关键。AUTOSAR规定了明确的模块初始化顺序,确保依赖模块在被依赖模块之前初始化。

依赖管理的关键点:

  • 模块初始化顺序遵循依赖关系图
  • 低层模块先于高层模块初始化
  • 模块应检查其依赖模块的状态
  • 初始化失败应向上传播错误

5. BSW模块状态管理

5.1 状态转换

AUTOSAR BSW模块实现了标准化的状态管理机制,确保模块在整个生命周期中的行为一致性和可预测性。

在这里插入图片描述

图5.1 AUTOSAR BSW模块状态转换图

图表解释:

模块状态

  • 未初始化(UNINIT)

    • 描述:上电后的初始状态,模块未被初始化
    • 特点:模块功能不可用,API调用可能返回错误
    • 转换:通过ModuleName_PreInit()转换到PRE_INIT状态
  • 预初始化(PRE_INIT)

    • 描述:模块已执行基础初始化,但配置未加载
    • 特点:只有基本功能可用,大部分API不可用
    • 转换:通过ModuleName_Init(Config)转换到INIT状态
  • 初始化(INIT)

    • 描述:模块已完成配置加载和初始化
    • 特点:所有API可用,但模块可能尚未完全激活
    • 转换:初始化成功后自动转换到RUNNING状态
  • 运行(RUNNING)

    • 描述:模块完全运行状态,所有功能可用
    • 特点:模块执行正常功能,定期调用MainFunction
    • 转换:通过ModuleName_PrepareShutdown()转换到PREPARE_SHUTDOWN状态
  • 关闭准备(PREPARE_SHUTDOWN)

    • 描述:模块准备关闭,完成未完成的操作
    • 特点:限制新请求,完成现有操作
    • 转换:通过ModuleName_Shutdown()转换到SHUTDOWN状态
  • 关闭(SHUTDOWN)

    • 描述:模块已关闭,资源已释放
    • 特点:模块功能不可用,API调用返回错误
    • 转换:通过系统重置转换到UNINIT状态
  • 错误(ERROR)

    • 描述:模块遇到无法恢复的错误
    • 特点:模块功能受限或不可用
    • 转换:通过系统重置或恢复机制转换到UNINIT状态

状态转换触发

  • 正常初始化路径:UNINIT → PRE_INIT → INIT → RUNNING
  • 正常关闭路径:RUNNING → PREPARE_SHUTDOWN → SHUTDOWN → UNINIT
  • 错误处理路径:任何状态 → ERROR → UNINIT
代码示例:
/* AUTOSAR BSW模块状态管理示例 *//* 模块状态定义 */
typedef enum {MODULENAME_STATE_UNINIT = 0,        /* 未初始化状态 */MODULENAME_STATE_PRE_INIT = 1,      /* 预初始化状态 */MODULENAME_STATE_INIT = 2,          /* 初始化状态 */MODULENAME_STATE_RUNNING = 3,       /* 运行状态 */MODULENAME_STATE_PREPARE_SHUTDOWN = 4, /* 准备关闭状态 */MODULENAME_STATE_SHUTDOWN = 5,      /* 关闭状态 */MODULENAME_STATE_ERROR = 0xFF       /* 错误状态 */
} ModuleName_StateType;/* 模块当前状态 */
static ModuleName_StateType moduleState = MODULENAME_STATE_UNINIT;/* 状态获取函数 */
ModuleName_StateType ModuleName_GetState(void) {return moduleState;
}/* 状态转换示例 - 关闭准备 */
Std_ReturnType ModuleName_PrepareShutdown(void) {/* 检查当前状态是否允许转换 */if (moduleState != MODULENAME_STATE_RUNNING) {/* 报告错误: 模块不在运行状态 */Det_ReportError(MODULENAME_MODULE_ID, 0, MODULENAME_PREPARESHUTDOWN_API_ID, MODULENAME_E_INVALID_STATE);return E_NOT_OK;}/* 完成所有未完成的操作 */for (uint8 i = 0; i < moduleConfig->numChannels; i++) {/* 如果通道有未完成的操作,等待完成或中止 */if (moduleChannels[i].pendingOperations > 0) {FinishPendingOperations(&moduleChannels[i]);}}/* 更新模块状态 */moduleState = MODULENAME_STATE_PREPARE_SHUTDOWN;/* 通知依赖模块(如果需要) */NotifyModuleStateChange(MODULENAME_STATE_PREPARE_SHUTDOWN);return E_OK;
}/* 状态转换示例 - 关闭 */
Std_ReturnType ModuleName_Shutdown(void) {/* 检查当前状态是否允许转换 */if (moduleState != MODULENAME_STATE_PREPARE_SHUTDOWN) {/* 报告错误: 模块未处于准备关闭状态 */Det_ReportError(MODULENAME_MODULE_ID, 0, MODULENAME_SHUTDOWN_API_ID, MODULENAME_E_INVALID_STATE);return E_NOT_OK;}/* 释放资源 */for (uint8 i = 0; i < moduleConfig->numChannels; i++) {ReleaseChannelResources(&moduleChannels[i]);}/* 重置内部变量 */ResetModuleVariables();/* 更新模块状态 */moduleState = MODULENAME_STATE_SHUTDOWN;return E_OK;
}/* 错误状态处理示例 */
void ModuleName_HandleError(uint8 errorId) {/* 记录错误信息 */moduleLastError = errorId;/* 尝试安全处理错误 */switch (errorId) {case MODULENAME_E_MINOR_ERROR:/* 可恢复的轻微错误,尝试恢复 */if (RecoverFromError(errorId) == E_OK) {/* 恢复成功,保持当前状态 */return;}break;case MODULENAME_E_MAJOR_ERROR:case MODULENAME_E_FATAL_ERROR:/* 严重错误,无法恢复 */break;default:/* 未知错误 */break;}/* 无法恢复,转入错误状态 */moduleState = MODULENAME_STATE_ERROR;/* 通知系统错误管理器 */Dem_ReportErrorStatus(MODULENAME_E_ERROR_STATUS, DEM_EVENT_STATUS_FAILED);
}

5.2 错误处理

AUTOSAR提供了标准化的错误处理机制,确保系统能够检测、报告和管理模块中的错误。

错误处理机制包括:

  • 开发错误检测(DET):用于检测和报告开发阶段的错误
  • 故障管理(DEM):用于生产环境中的错误报告和管理
  • 运行时错误处理:模块内部的错误检测和恢复机制

6. BSW模块API接口

6.1 通用API

AUTOSAR规范要求每个BSW模块提供一组标准化的API接口,确保模块之间的一致性和互操作性。

在这里插入图片描述

图6.1 AUTOSAR BSW模块通用API接口图

图表解释:

API接口组成

  • 通用API接口

    • 描述:每个AUTOSAR BSW模块必须实现的标准接口
    • 函数:
      • ModuleName_Init():初始化模块
      • ModuleName_GetVersionInfo():获取模块版本信息
      • ModuleName_GetState():获取模块当前状态
      • ModuleName_MainFunction():执行周期性任务
      • ModuleName_Shutdown():关闭模块
  • 配置类型

    • 描述:模块配置结构,定义初始化参数
    • 属性:
      • moduleId:模块标识符
      • moduleEnabled:模块启用状态
      • versionInfo:版本信息
      • specificConfig:模块特定配置
  • 错误处理

    • 描述:提供错误报告和管理功能
    • 函数:
      • ModuleName_ReportError():报告错误
      • ModuleName_GetErrorStatus():获取错误状态
      • ModuleName_ClearError():清除错误
  • 高级接口

    • 描述:模块特定的扩展功能
    • 函数:
      • ModuleName_SpecificFunction1():模块特定功能1
      • ModuleName_SpecificFunction2():模块特定功能2
      • ModuleName_CallbackFunction():回调函数
  • 版本定义

    • 描述:定义模块版本常量
    • 常量:
      • MODULENAME_VENDOR_ID:供应商ID
      • MODULENAME_MODULE_ID:模块ID
      • MODULENAME_SW_MAJOR_VERSION:软件主版本号
      • MODULENAME_SW_MINOR_VERSION:软件次版本号
      • MODULENAME_SW_PATCH_VERSION:软件补丁版本号
代码示例:
/* AUTOSAR BSW模块API接口示例 *//* 模块头文件 */
#ifndef MODULENAME_H
#define MODULENAME_H/* 包含标准类型定义 */
#include "Std_Types.h"/* 模块版本定义 */
#define MODULENAME_VENDOR_ID           42
#define MODULENAME_MODULE_ID           123
#define MODULENAME_SW_MAJOR_VERSION    2
#define MODULENAME_SW_MINOR_VERSION    5
#define MODULENAME_SW_PATCH_VERSION    1/* API服务ID定义 */
#define MODULENAME_INIT_API_ID         0x01
#define MODULENAME_GETVERSIONINFO_API_ID  0x02
#define MODULENAME_GETSTATE_API_ID     0x03
#define MODULENAME_MAINFUNCTION_API_ID 0x04
#define MODULENAME_SHUTDOWN_API_ID     0x05/* 错误代码定义 */
#define MODULENAME_E_UNINIT            0x10
#define MODULENAME_E_ALREADY_INIT      0x11
#define MODULENAME_E_PARAM_POINTER     0x12
#define MODULENAME_E_INVALID_STATE     0x13
#define MODULENAME_E_VERSION_MISMATCH  0x14/* 模块状态类型定义 */
typedef enum {MODULENAME_STATE_UNINIT = 0,MODULENAME_STATE_INIT = 1,MODULENAME_STATE_RUNNING = 2,MODULENAME_STATE_SHUTDOWN = 3,MODULENAME_STATE_ERROR = 0xFF
} ModuleName_StateType;/* 模块配置类型定义 */
typedef struct {uint8 moduleId;boolean moduleEnabled;Std_VersionInfoType versionInfo;/* 模块特定配置... */
} ModuleName_ConfigType;/* 核心API函数 *//* 初始化函数 */
Std_ReturnType ModuleName_Init(const ModuleName_ConfigType* ConfigPtr
);/* 获取版本信息 */
void ModuleName_GetVersionInfo(Std_VersionInfoType* VersionInfoPtr
);/* 获取模块状态 */
ModuleName_StateType ModuleName_GetState(void);/* 主函数 - 周期调用 */
void ModuleName_MainFunction(void);/* 关闭函数 */
Std_ReturnType ModuleName_Shutdown(void);/* 错误处理函数 */
void ModuleName_ReportError(uint8 instanceId,uint8 apiId,uint8 errorId
);uint8 ModuleName_GetErrorStatus(uint8 instanceId
);void ModuleName_ClearError(uint8 instanceId
);/* 模块特定功能函数 */
Std_ReturnType ModuleName_SpecificFunction1(uint8 param1,uint16 param2
);void ModuleName_SpecificFunction2(uint8 param1
);/* 回调函数类型定义 */
typedef void (*ModuleName_CallbackFunctionType)(uint8 eventId,uint8 status
);/* 回调注册函数 */
Std_ReturnType ModuleName_RegisterCallback(ModuleName_CallbackFunctionType callbackFunc
);#endif /* MODULENAME_H */

6.2 错误处理API

AUTOSAR BSW模块应提供标准化的错误处理API,用于报告、查询和管理模块内的错误状态。这些API与开发错误跟踪(DET)和诊断事件管理(DEM)模块集成,提供全面的错误管理能力。


7. 总结

AUTOSAR基础软件模块通用规范提供了BSW模块实现的基础框架,确保了不同模块之间的一致性和互操作性。通过标准化的架构、配置、初始化、状态管理和API接口,AUTOSAR简化了复杂汽车电子系统的开发,提高了软件质量和可重用性。

主要优势包括:

  • 标准化的模块结构和接口
  • 清晰的层次化架构
  • 一致的配置和初始化机制
  • 可靠的状态管理和错误处理
  • 良好的可移植性和可维护性

遵循这些规范的BSW模块可以更容易地集成到AUTOSAR系统中,提高开发效率,降低成本,并确保跨平台和跨供应商的兼容性。

http://www.dtcms.com/a/296954.html

相关文章:

  • 【Vue学习笔记】状态管理:Pinia 与 Vuex 的使用方法与对比【附有完整案例】
  • 网络安全入门第一课:信息收集实战手册(2)
  • C语言-指针[变量指针与指针变量]
  • Java 集合框架之----ArrayList
  • Effective Modern C++ 条款16:保证const成员函数的线程安全性
  • 网址收集总结
  • 【硬件-笔试面试题】硬件/电子工程师,笔试面试题-17,(知识点:PCB布线,传输线阻抗影响因素)
  • 第一二章笔记
  • [ComfyUI] --ComfyUI 是什么?比 Stable Diffusion WebUI 强在哪?
  • 【STM32项目】智能台灯
  • 无人机保养指南
  • 深入解析Hadoop NameNode的Full GC问题、堆外内存泄漏及元数据分治策略
  • 软件测试的分类
  • C++实现精确延时的方法
  • 季逸超:Manus的上下文工程启示
  • Photoshop下载安装入门教程:从下载安装到第一次完美使用
  • 应急响应】Linux 自用应急响应工具发版 v6.0(LinuxGun)
  • 20 BTLO 蓝队靶场 Sticky Situation 解题记录
  • Voice AI Agent 知识库:打造你自己的语音智能体!
  • Vitest 用法详解及 Coverage Web 工具介绍
  • C# 密封类_密封方法 (seadled 关键字)
  • 【postgresql按照逗号分割字段,并统计数量和求和】
  • 【Spring AI 1.0.0】Spring AI 1.0.0框架快速入门(4)——Chat Memory(聊天记录)
  • SpringCloud【Sentinel】
  • 7.3.2 内核内存管理运行机制
  • 到底可不可以用jion?jion如何优化?
  • MapStruct类型转换接口未自动注入到spring容器中
  • Web前端:JavaScript find()函数内判断
  • Redis 单线程模型与多线程机制
  • kettle 8.2 ETL项目【二、加载数据】