AdaMaYun 发表于 2024-12-28 20:23

英飞凌TC3XX芯片执行软件复位后初始化失败的问题

在使用TC3xx芯片开发过程中,调用Mcu_PerformReset()接口函数进行软件复位,发现复位后restart,卡死在初始化过程中。
调用call stack发现,core0压栈情况如下

core1压栈情况为




AdaMaYun 发表于 2024-12-28 20:24

2、问题定位

查询memory地址发现,core1的地址为非法地址。在core0的det中打断点,查看local如下图



查询手册AUTOSAR_TR_BSWModuleList.pdf



找到ModuleId为101的对应模块Mcu。在Mcu.h中查询到ApiId为0对应Api为Mcu_Init()



ErrorId为17对应错误为Mcu初始化失败







AdaMaYun 发表于 2024-12-28 20:26

3、猜想及验证
由于调用的接口为软件复位,查询手册可知软件复位不会清ram,猜测可能是mcu初始化时校验ram,发现其中初始值不为0导致的错误。
修改定段信息,将原本定段为NOINIT的变量改为定段到ZERO_INIT中,即初始化为0。

重新编译验证发现可以正常restart,证实了猜想。









AdaMaYun 发表于 2024-12-28 20:27

4、问题解决

方案一 通过修改定段,修改MemMap_Common.h文件,将定段为NOINIT的变量改为定段到ZERO_INIT中。

方案二 调用autosar下电流程
调用Vector SIP包中ECUM模块的接口执行复位,在EcuM_AL_Reset函数中将ram清0。
复位函数接口如下

EcuM_AL_Reset中清零ram代码如下


ewyu 发表于 2025-1-23 18:13

在软件复位后,某些复位源可能未被正确清除,导致初始化失败。解决方法:检查复位源寄存器(如RSTSTAT),确保所有复位源已被正确清除

gra22ce 发表于 2025-1-23 19:21

复位后,时钟配置可能未正确初始化,导致系统无法正常运行。请检查时钟配置寄存器(如SCU_CLK),确保时钟源和分频器配置正确。

nuan11nuan 发表于 2025-1-23 20:26

某些外设可能需要在特定顺序下初始化,否则可能导致初始化失败。一般解决可以检查外设初始化顺序,确保按照正确的顺序进行初始化。

twinkhahale 发表于 2025-1-23 21:30

复位后,内存(如SRAM、Flash)可能未正确初始化,导致程序无法正常运行。其实你可以检查内存初始化代码,确保内存配置正确。

pe66ak 发表于 2025-1-23 22:39

中断配置问题,复位后,中断配置可能未正确初始化,导致系统无法响应中断。如果是这样,可以检查中断配置寄存器(如SCU_IR),确保中断配置正确。

tiakon 发表于 2025-1-23 23:51

电源管理模块可能未正确初始化,导致系统无法正常供电,可能也这样,检查电源管理寄存器(如SCU_PM),确保电源配置正确

canfeil 发表于 2025-1-24 09:13

软件复位代码可能存在问题,导致复位后系统无法正常初始化。一般可以检查软件复位代码,确保复位操作正确执行。

一切D都好 发表于 2025-1-24 10:09

硬件可能存在故障,导致复位后初始化失败。解决方法如下检查硬件连接和电源供应,确保硬件正常工作

nqty 发表于 2025-1-24 12:10

使用调试工具(如JTAG、Trace32)可以帮助定位问题。使用调试工具逐步检查复位后的系统状态,定位问题所在。

hhdhy 发表于 2025-1-24 14:19

你这个现象没遇到过,其实可以参考英飞凌提供的技术手册和示例代码可以帮助解决问题。
页: [1]
查看完整版本: 英飞凌TC3XX芯片执行软件复位后初始化失败的问题