• 645查看
  • 0回复

[网络开发] 英飞凌TC27X芯片的启动学习笔记

[复制链接]


该用户从未签到

发表于 14-8-2023 09:42:17 | 显示全部楼层 |阅读模式

汽车零部件采购、销售通信录       填写你的培训需求,我们帮你找      招募汽车专业培训老师


启动软件是芯片复位后执行的第一个软件。

SSW在CPU0上执行 - 所有其他CPU在引导期间保持Halt状态,由用户软件启动,而:

    BootROM中的SSW起始地址是CPU0的程序计数器寄存器中的复位值。从该位置获取指令,这是在任何设备启动之后执行的第一条指令。在此入口点之后,固件立即检查testmode,如果选择了testmode,则执行跳转到测试固件

    最后一条SSW指令跳转到第一条用户代码指令。取决于用户选择的启动配置,可以从不同位置获取该第一用户指令。

启动软件包含根据以下一项或多项初始化设备的过程:

    以前存储在专用Flash位置的信息

    专用寄存器/存储器位置中的特殊位/字段的当前状态

    触发SSW执行的事件类型(最后一次重置事件),SSW执行可以由不同的事件触发,包括上电、系统复位、应用复位。

    应用于外部(配置)引脚的值(可选)SSW还会调用 - 以防 - 其他固件模块。

启动时的时钟系统

上电或是系统复位后,时钟模块处于初始化状态,各个总线的时钟频率如下:

英飞凌TC27X芯片的启动学习笔记w1.jpg

而应用程序复位后,时钟系统不会改变其状态,因此器件以与复位事件之前相同的频率和时钟源运行。

有个注意的点是上电启动过程和系统复位会重写从CPU0 DSPR起的8 KByte空间。因此,应用软件不应使用该区域保存数据。不同复位的影响如下图所示。

英飞凌TC27X芯片的启动学习笔记w2.jpg

启动模式

其中HWCFG[0:2]用于配置MCU的供电模式,HWCFG[3]是BMI的选择引脚,它决定启动配置从引脚HWCFG[4:5]选择,还是从Flash中BMI选择。为了节省引脚资源和避免安全漏洞,通常启动模式选择用Flash中的BMI,芯片的判断流程如下图所示。

英飞凌TC27X芯片的启动学习笔记w3.jpg

BMI信息存放在BMHD寄存器中,共由9个字段组成,如下图所示,Flash中的BMHD寄存器总共有4个,如图2所示,其目的是为了做冗余设计,保证在一个或多个损坏时,芯片仍能正常启动。

英飞凌TC27X芯片的启动学习笔记w4.jpg

英飞凌TC27X芯片的启动学习笔记w5.jpg

其中:

1、STADABM存放的是用户代码的入口地址;

2、BMI用于配置用户的启动模式,BMI.PINDIS用于配置是否屏蔽硬件HWCFG[3:5]引脚功能,如果该位置位,那么BMI.HWCFG用作启动配置;

3、LCL0LSEN、LCL1LSEN用于配置是否使能core0、core1的锁步功能;

4、BMHDID为固定值0xB359;

5、ChkStart、ChkEnd用于存放计算CRC的起始地址和末尾地址,CRCrange、CC—R—C—r—a—n—g—e—分别是按照IEEE802.3中的CRC算法计算的CRC值和其取反的值;

6、CRChead、C—R—C—h—e—a—d—是计算BMHD的00H~17H的CRC值和其取反的值。

启动流程

如下图所示,主要的初始化过程在CPU0上执行,如果初始化阶段要求锁步核校验,也可以切换至CPU1。其中Firmware固化在BootROM中的启动程序。对于冷复位,可以通过配置PROCOND寄存器选择性地初始化内存区。下面结合图3介绍启动的主要步骤:

1、调用Cstart()函数初始化C运行环境;初始化堆栈指针和程序状态字(PSW)寄存器,A10寄存器用作堆栈指针,用户堆栈指针基地址和堆栈大小通过连接文件设置,启动代码应该测试和初始化用于堆栈的存储区,对齐堆栈边界;上下文存储区(CSA)初始化,PSW(CDC )寄存器中表示连续上下文切换的调用深度内容应该被重置,通过PCXI、LCX、FCX寄存器初始化CSA链表,通过连接文件配置CSA的大小;中断及陷阱向量表的基地址初始化,也就是BIV和BTV寄存器;初始化PCON和DCON寄存器使能程序缓存、数据缓存,该寄存器的配置能有效缩短程序的运行时间;清除bss段的内存,复制data段的数据至内存中。

2、确认已发生的复位时间类型,并测试是否有电源故障和内存数据是否一致。如果复位类型为应用复位,且内存数据没有破坏,则不需要初始化内存、时钟、Flash模块,从而进入快速启动过程。

3、初始化驱动和外设至默认状态。例如将端口引脚初始化为所需要的初始电气状态。

4、进行安全测试和初始化。包括CPU测试、RAM测试、SMU警告检测和其他重要的安全启动测试。另外可以调用safeTlib程序。

5、完成安全测试之后,对应用需要的硬件模块驱动进行初始化,时钟初始化,Flash配置,GTM初始化等。

6、在驱动程序初始化后,此时硬件只启动了CPU0,其他核仍保持Halt状态,软件通过调用Startcore()、Cstart()函数启动和初始化相应的核,最后把控制权交给操作系统。

英飞凌TC27X芯片的启动学习笔记w6.jpg


该用户从未签到

发表于 20-3-2025 08:23:01 | 显示全部楼层
英飞凌TC27X芯片的启动学习笔记简述如下:启动软件是芯片复位后首先运行的软件。在CPU0上执行SSW,其他CPU在引导期间保持暂停状态,等待用户软件启动。BootROM中的SSW起始地址存储在CPU0的程序计数器寄存器中。芯片复位后,从此位置读取指令,这是设备启动后执行的第一条指令。随后,固件检查测试模式并进行跳转。最后,SSW指令跳转到用户代码的第一条指令,该指令的位置取决于启动配置。启动软件包含根据特定信息初始化设备的步骤,如存储在专用Flash位置的信息等。整体流程严谨、专业,确保芯片启动的准确性和稳定性。
回复 支持 反对

使用道具 举报


  • TA的每日心情
    无聊
    1-7-2015 18:46
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 20-3-2025 08:23:00 | 显示全部楼层
    针对英飞凌TC27X芯片的启动学习笔记,启动软件是芯片复位后首个执行的软件,其执行过程专业且关键。在CPU0上执行SSW(启动软件),其他CPU在引导期间保持暂停状态。BootROM中的SSW起始地址是CPU0复位后的程序计数器值,此为第一条执行的指令。接着,固件会检查测试模式,若启用则跳转到测试固件。最后,SSW指令跳转到用户代码第一条指令,该指令位置取决于启动配置。启动软件需完成设备的初始化,这包括依据存储在专用Flash位置的信息等来进行初始化。这是一个涉及多个关键环节的复杂流程,需专业工程师精心设计和调试以确保系统的稳定运行。
    回复 支持 反对

    使用道具 举报

    快速发帖

    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    QQ|手机版|小黑屋|Archiver|汽车工程师之家 ( 渝ICP备18012993号-1 )

    GMT+8, 19-8-2025 04:04 , Processed in 0.541232 second(s), 36 queries .

    Powered by Discuz! X3.5

    © 2001-2013 Comsenz Inc.