打印
[通用 MCU]

英飞凌TC3xx 启动逻辑梳理(2)

[复制链接]
304|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
tpgf|  楼主 | 2024-5-27 09:10 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
1.概述
限于篇幅,上一篇英飞凌TC3xx 启动逻辑梳理(1)-CSDN博客讲述了SSW里面的一些关键事项,接下来我们来看应用启动代码中的逻辑

2. 应用启动代码逻辑
SSW完成后,进入到用户的应用启动代码,英飞凌称之为Startup Software,这部分代码可以让用户修改和更新,所以我们就从iLLD中的启动代码 Ifx_Ssw_Tc0.c 开始入手。

应用启动代码共分为6个阶段,整体逻辑如下:



可以看到,根据复位类型的不一样,启动代码逻辑也存在差异,冷复位需要走全流程,应用复位则只需要1->3->5->6步骤。

2.1 启动阶段1
该阶段,主要是判断启动类型,并跳转至目标启动阶段。时序图如下:



需要关注的寄存器包括:

SCU_RSTSTAT



RSTCON:



CPU0_KRST:



代码逻辑如下:

    if (Ifx_Ssw_isApplicationReset() != 1)
    {
        Ifx_Ssw_jumpToFunction(__StartUpSoftware_Phase2);
    }
    else
    {
        Ifx_Ssw_jumpToFunction(__StartUpSoftware_Phase3ApplicationResetPath);
    }
2.2 启动阶段2
该阶段主要做电源、EVRC的配置,同时检查LBIST结果,值得一提的是,如果在SSW里没有做LBIST,那么就可以选择触发LBIST,这时候就需要进行一个热复位,然后再次跳到该阶段检查LBIST结果。流程如下:



如果LBIST没有错误,继续使能MONBIST,完成测试后进入到启动阶段3;

2.3 启动阶段3
该阶段最简单,即初始化上下文,包括用户堆栈指针设置、CSA区域初始化等等;

2.4 启动阶段4
这个阶段开始进行时钟的配置、MBIST。

时钟配置重点关注CCU,根据需求配置不同模块的时钟。



紧接着来MBIST,之前讲过MTU的用法,我们在这里也会采用NDT方式进行测试,因此只有当所有RAM初始化完成后进行MBIST才有意义。

完成测试后进入到阶段5。

2.5 启动阶段5
该阶段主要是处理alarm,这时候SMU派上用场了,因为之前如果MBIST、LBIST、MONBIST触发了alarm,SMU需要进入到RUN状态才能开始进行处理;同时我们还要在运行app前配置好所有需要的alarm的行为,这样功能安全逻辑才能闭环。在英飞凌示例代码中,这是一个空函数。



2.6 启动阶段6
最后在进入CPU0的main函数前,我们需要开启多核(如有需要) ,示例如下:

#if (IFX_CFG_SSW_ENABLE_TRICORE1 != 0)
    Ifx_Ssw_startCore(&MODULE_CPU1, (unsigned int)__START(1));           /*The status returned by function call is ignored */
#endif /* #if (IFX_CFG_CPU_CSTART_ENABLE_TRICORE1 != 0)*/
#if (IFX_CFG_SSW_ENABLE_TRICORE1 == 0)
#if (IFX_CFG_SSW_ENABLE_TRICORE2 != 0)
    Ifx_Ssw_startCore(&MODULE_CPU2, (unsigned int)__START(2));           /*The status returned by function call is ignored */
3.小结
上文我们从硬件复位开始,简述了SSW里的关键逻辑,把BMHD、ABMHD、锁板子的现象,同时分析了英飞凌示例的启动代码,整个一套下来,大家应该对英飞凌TC3xx的启动有初步的概念了。

从这个流程我们可以发现,在SSW里涉及到了安全启动,我们需要结合SSW里的描述以及HSM内部启动流程做综合设计,这里面不仅要考虑启动的安全性,还要考虑启动的时效。

在SSW和应用StartUp里涉及到了功能安全,而所有的检查和确认主要集中在应用StartUp,因此我们需要了解不同功能安全机制的前置条件以及触发条件,从而才能设计好符合功能安全的启动流程。借用Hitex关于AURIX 启动的流程图,我们可以复刻出一个具备参考意义的应用启动代码。



————————————————

                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/djkeyzx/article/details/138674388

使用特权

评论回复
沙发
szt1993| | 2024-5-27 12:53 | 只看该作者
根据复位类型的不一样,启动代码逻辑也存在差异

使用特权

评论回复
板凳
l63t89| | 2024-6-30 23:03 | 只看该作者
需要关注的寄存器包括:

SCU_RSTSTAT
RSTCON
CPU0_KRST

使用特权

评论回复
地板
l63t89| | 2024-6-30 23:03 | 只看该作者
冷复位需要走全流程,而应用复位只需走1->3->5->6步骤。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1536

主题

14520

帖子

9

粉丝