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

目录

1.概述

2. 应用启动代码逻辑

2.1 启动阶段1

2.2 启动阶段2

2.3 启动阶段3

2.4 启动阶段4

2.5 启动阶段5

2.6 启动阶段6

3.小结


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 启动的流程图,我们可以复刻出一个具备参考意义的应用启动代码。

  • 26
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
英飞凌tc3xx safety 手册是一本关于英飞凌tc3xx系列产品安全性的研究手册。该手册主要涵盖了英飞凌tc3xx系列产品在安全方面的设计原则、功能特点和使用方法等内容。 首先,英飞凌tc3xx系列产品是一类具备安全功能的电子芯片。手册详细介绍了该系列产品的设计原则,包括硬件和软件方面的安全措施。硬件方面,手册解释了如何通过物理隔离和安全芯片设计来防止潜在的安全漏洞。软件方面,手册介绍了如何编写安全的代码和使用加密算法来保护系统的安全性。 其次,手册还介绍了英飞凌tc3xx系列产品的功能特点。这些产品具备了多种安全功能,包括故障检测和容错机制、身份验证和数据保护等。手册详细解释了这些功能的原理和实施方法,为用户提供了使用技术支持和指导。 最后,手册还提供了一些使用英飞凌tc3xx系列产品的案例和实例,以帮助用户更好地理解和应用这些安全功能。例如,手册可能包含了一些具体的安全设计方案和实施步骤,让用户能够根据自己的需求和环境来配置和使用英飞凌tc3xx系列产品。 总体而言,英飞凌tc3xx safety 手册是一本关于英飞凌tc3xx系列产品安全性的专业研究手册。通过阅读该手册,用户可以了解到关于产品设计原则、功能特点和使用方法等方面的重要信息,从而更好地应用英飞凌tc3xx系列产品来保护系统的安全。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

CyberSecurity_zhang

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

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

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

打赏作者

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

抵扣说明:

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

余额充值