本规约规约 AUTOSAR 基础软件模块 MCU 驱动(Microcontroller Unit Driver, MCU)的功能、API 与配置。MCU 驱动位于微控制器抽象层(MCAL),提供微控制器初始化、下电功能、复位与微控制器特定功能服务(其他 MCAL 软件模块所需)。
MCU 驱动直接访问微控制器硬件。其特性:
| 缩略语 | 描述 |
|---|---|
| MCU | Microcontroller Unit(微控制器单元) |
| MCAL | Microcontroller Abstraction Layer(微控制器抽象层) |
| PLL | Phase Locked Loop(锁相环) |
| RAM | Random Access Memory(随机访问存储器) |
| DEM | Diagnostic Event Manager(诊断事件管理器) |
| DET | Default Error Tracer(默认错误追踪器) |
| EcuM | ECU State Manager(ECU 状态管理器) |
| SFR | Special Function Register(特殊功能寄存器) |
| OS | Operating System(操作系统) |
| Power On Reset | 上电复位 |
| Watchdog Timer Reset | 看门狗定时器复位 |
AUTOSAR_EXP_LayeredSoftwareArchitecture — 分层软件架构AUTOSAR_SRS_BSWGeneral — 基础软件通用需求AUTOSAR_SWS_BSWGeneral — 基础软件通用规范AUTOSAR_SRS_MCUDriver — MCU 驱动需求AUTOSAR_SRS_SPALGeneral — SPAL 通用需求MCU 驱动实现可能仅在 power-up/start-up 阶段执行,或仅测试运行时未共享的资源。多微控制器系统不在 MCU 驱动范围内。
Mcu.c # 主源文件
Mcu_Lcfg.c # Link-time 配置
Mcu_PBcfg.c # PostBuild 配置
MCU 驱动依赖 EcuM(资源管理)、DEM(错误报告)、DET(开发错误追踪)、OS(中断管理)。
MCU 驱动满足 SRS_Mcu_NNNNN 中的 13 条需求(参见 SRS 翻译)以及 RS_BRF_NNNNN 顶层需求。MCU 自身的 SWS_Mcu_NNNNN 规范项 ID 约 200+ 条(详细列表见原文第 6/7/8/10 章;编号范围 00005-00258)。
MCU 驱动允许以下预配置:
MCU 驱动初始化序列:
Mcu_Init() 初始化 MCU 模块(设置 SFR 寄存器);Mcu_InitRamSection() 初始化 RAM 段(可选);Mcu_InitClock() 初始化时钟系统(PLL 因子、PLL 锁定等);Mcu_DistributePllClock() 激活 PLL 时钟分布;Mcu_GetPllStatus() 检查 PLL 状态;Mcu_GetResetReason() 获取复位原因;Mcu_SetMode() 切换到节能模式(如需)。| 错误码 | 含义 |
|---|---|
MCU_E_PARAM_CONFIG | 无效的配置指针 |
MCU_E_PARAM_CLOCK | 无效的时钟引用 |
MCU_E_PARAM_MODE | 无效的模式引用 |
MCU_E_PARAM_RAMSECTION | 无效的 RAM 段引用 |
MCU_E_PLL_NOT_LOCKED | PLL 未锁定 |
MCU_E_UNINIT | MCU 未初始化 |
MCU_E_PARAM_POINTER | 无效的指针 |
MCU_E_INIT_FAILED | 初始化失败 |
无。
无。
| 错误码 | 含义 |
|---|---|
MCU_E_CLOCK_FAILURE | 时钟源失败 |
无。
Std_ReturnType、Std_VersionInfoType、Std_ConfigType| 类型 | 描述 |
|---|---|
Mcu_ConfigType | MCU 抽象配置类型(外部数据结构) |
Mcu_PllStatusType | PLL 状态枚举(MCU_PLL_LOCKED / MCU_PLL_UNLOCKED / MCU_PLL_STATUS_UNDEFINED) |
Mcu_ClockType | 时钟设置 ID(uint8/16/32) |
Mcu_ResetType | 标准化复位原因枚举(MCU_POWER_ON_RESET / MCU_WATCHDOG_RESET / MCU_SOFT_RESET / MCU_HW_RESET / MCU_UNDEFINED_RESET) |
Mcu_RawResetType | 原始复位值(µC 特定,uint8/16/32) |
Mcu_ModeType | MCU 节能模式 ID(uint8/16/32) |
Mcu_RamSectionType | RAM 段 ID(uint8/16/32) |
Mcu_RamStateType | RAM 状态枚举(MCU_RAMSTATE_INVALID / MCU_RAMSTATE_VALID) |
| API | 签名 | 功能 |
|---|---|---|
Mcu_Init | void Mcu_Init(const Mcu_ConfigType* ConfigPtr) | 初始化 MCU 模块(设置 SFR) |
Mcu_InitRamSection | Std_ReturnType Mcu_InitRamSection(Mcu_RamSectionType RamSection) | 初始化已配置 RAM 段 |
Mcu_InitClock | Std_ReturnType Mcu_InitClock(Mcu_ClockType ClockSetting) | 初始化时钟系统(PLL 因子、PLL 锁定) |
Mcu_DistributePllClock | Std_ReturnType Mcu_DistributePllClock(void) | 激活 PLL 时钟分布到整个 MCU |
Mcu_GetPllStatus | Mcu_PllStatusType Mcu_GetPllStatus(void) | 获取 PLL 锁定状态 |
Mcu_GetResetReason | Mcu_ResetType Mcu_GetResetReason(void) | 获取标准化复位原因 |
Mcu_GetResetRawValue | Mcu_RawResetType Mcu_GetResetRawValue(void) | 获取原始复位值(µC 特定) |
Mcu_PerformReset | void Mcu_PerformReset(void) | 执行 MCU 复位 |
Mcu_SetMode | void Mcu_SetMode(Mcu_ModeType McuMode) | 设置 MCU 节能模式 |
Mcu_GetVersionInfo | void Mcu_GetVersionInfo(Std_VersionInfoType* VersionInfoPtr) | 获取版本信息 |
Mcu_GetRamState | Mcu_RamStateType Mcu_GetRamState(void) | 获取 RAM 状态 |
共 11 个 API 函数。
MCU 驱动通常不定义调度函数(除 EcuM 状态管理所需外)。
Det_ReportError()(强制)Dem_SetEventStatus()(可选)Mcu_Init() → Mcu_InitRamSection() → Mcu_InitClock() → Mcu_DistributePllClock() → 启动完成;Mcu_SetMode(MCU_MODE_LOW_POWER) → MCU 进入低功耗;Mcu_PerformReset() → MCU 复位;Mcu_GetResetReason() → 返回标准化原因;Dem_SetEventStatus(MCU_E_CLOCK_FAILURE)。| 参数 | 描述 |
|---|---|
| McuDevErrorDetect | 开发错误检测开关 |
| McuVersionInfoApi | Mcu_GetVersionInfo() API 开关 |
| McuInitClockApi | Mcu_InitClock() API 开关 |
| McuDistributePllClockApi | Mcu_DistributePllClock() API 开关 |
| McuGetPllStatusApi | Mcu_GetPllStatus() API 开关 |
| McuPerformResetApi | Mcu_PerformReset() API 开关 |
| McuGetResetReasonApi | Mcu_GetResetReason() API 开关 |
| McuGetResetRawValueApi | Mcu_GetResetRawValue() API 开关 |
| McuRamInitApi | Mcu_InitRamSection() API 开关 |
| 参数 | 描述 |
|---|---|
| McuNumberOfMcuModes | MCU 模式数量 |
| McuNumberOfRamSections | RAM 段数量 |
| McuClockSrcFailureNotification | 时钟失败通知开关 |
| 参数 | 描述 |
|---|---|
| McuClockSettingId | 时钟设置 ID |
| McuClockSettingPll | PLL 设置引用 |
| 参数 | 描述 |
|---|---|
| McuPllId | PLL ID |
| McuPllInputClockRef | PLL 输入时钟引用 |
| McuPllOutputClock | PLL 输出时钟频率 |
| McuPllDivider | PLL 分频器 |
| McuPllMultipler | PLL 倍频器 |
| 参数 | 描述 |
|---|---|
| McuRamSectionId | RAM 段 ID |
| McuRamSectionBaseAddress | RAM 段基址 |
| McuRamSectionSize | RAM 段大小 |
| McuRamSectionInitValue | RAM 段初始化值 |
| 参数 | 描述 |
|---|---|
| McuModeId | 模式 ID |
| McuModePowerMode | 电源模式(Normal/Sleep/Stop) |
| 参数 | 描述 |
|---|---|
| McuResetId | 复位 ID |
| McuResetRawValue | 复位原始值(µC 特定) |
| McuResetReason | 标准化复位原因 |
发布信息包括 MCU 模块版本、配置变体、RAM 段数量、PLL 数量、模式数量等。
校对轮次:L1 自动校对(2026-06-13)
MCU_E_PARAM_CONFIG/PARAM_CLOCK/PARAM_MODE/PARAM_RAMSECTION/PLL_NOT_LOCKED/UNINIT/PARAM_POINTER/INIT_FAILED) + 1 个生产错误 MCU_E_CLOCK_FAILURE 完整翻译。