Infineon Aurix TC397启动过程学习

这篇具有很好参考价值的文章主要介绍了Infineon Aurix TC397启动过程学习。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、概览

TC397整个启动过程如下图所示:
Infineon Aurix TC397启动过程学习
首先由某个复位事件开始,必要情况下经历上电过程,然后执行芯片的引导固件进而跳转到用户启动代码,最后执行用户程序,因此整个过程可总结为”复位上电引导启动”八个字。

二、复位

2.1 复位类型

2.1.1 Cold(initial) power-on reset

冷复位,芯片供电从无到有时产生的复位事件,整个芯片会回到初始状态。

2.1.2 System reset

产生系统复位的复位源根据来源可以分为三类:
1.来自片内外设——如看门狗定时器超时产生复位
2.来自片外外设——连接外设的引脚被设为触发源,外设改变引脚状态时产生复位
3.来自软件设置——软件写相关寄存器控制位产生复位
对于大多数复位源来讲,是否产生系统复位可以由软件进行配置。
和冷复位相反,系统复位属于暖复位(warm power-on reset),即整个过程芯片不断电。发生系统复位后,芯片内部除了供电模块、调试模块和复位寄存器外其它部分会回到初始状态。

2.1.3 Application reset

应用复位和系统复位类似,复位源一样分为三类,是否产生应用复位一样可以通过软件设置,主要区别是应用复位后芯片的所有外设、CPU和部分SCU寄存器会回到初始状态,其他部分(如时钟)状态维持不变,影响范围比系统复位要小,也因此应用复位耗时最短。

2.1.4 CPU module reset

CPU复位只影响CPU自身,CPU外围设备不受影响,从核复位会进入halt状态,主核(CPU0)复位会跳转到程序入口地址。

三、引导固件

Boot firmware存储在Boot ROM内,TC397 Boot ROM区间定义如下:

Segment Address Range Size Description
8(cached) 8FFF 0000H - 8FFF FFFFH 64KB Boot ROM(BROM)
10(non-cached) AFFF 0000H - AFFF FFFFH 64KB Boot ROM(BROM)

芯片复位后最先由CPU0执行Boot firmware代码,其他CPU处于halt状态。Boot firmware会对启动模式进行评估,并根据评估结果执行相应启动流程,此外还会进行一些初始化配置操作(如准备Flash、配置芯片寄存器、初始化RAM等),其执行流程如下图所示:
Infineon Aurix TC397启动过程学习

3.1 BMHD

Boot firmware根据BMHD(Boot Mode Header)来评估启动模式,BMHD有四个(BMHDx for x=0~3)存储在UCB区域内,为了以防数据损坏,每个BMHD又包含一个备份(COPY),每组BMHD(BMHD_ORIG和BMHD_COPY)需要同时设置,不能只设置其中一个。
BMHD在UCB中的地址定义如下:

Address range Size BMHD block
0xAF400000 512 Bytes UCB_BMHD0_ORIG
0xAF400200 512 Bytes UCB_BMHD1_ORIG
0xAF400400 512 Bytes UCB_BMHD2_ORIG
0xAF400600 512 Bytes UCB_BMHD3_ORIG
0xAF401000 512 Bytes UCB_BMHD0_COPY
0xAF401200 512 Bytes UCB_BMHD1_COPY
0xAF401400 512 Bytes UCB_BMHD2_COPY
0xAF401600 512 Bytes UCB_BMHD3_COPY

每个BMHD结构定义如下:
Infineon Aurix TC397启动过程学习

<>PINDIS

该位和引脚P14.3(HWCFG[3])一起用来控制是否通过MCU引脚P10.5(HWCFG[4])和P10.6(HWCFG[5])选择启动模式。
Infineon Aurix TC397启动过程学习

<> HWCFG

该位域决定启动模式,作用时机见上表。

<> LSENA0~LSENA3

CPU0~CPU3的lockstep功能设置,TC397有六个核,其中只有四个核具有锁步核。

<> LBISTENA

控制是否使能LBIST自检功能。

<> BMHDID

只能为0xB359,取其他值时无效。

<> STAD

指定程序起始地址,配合启动模式使用,当选择ABM模式时为ABMH(Alternate Boot Mode Header)的地址,当选择内部Flash启动时为用户启动代码入口地址。

<> CRCBMHD

BMHD前八个字节(BMI、BMHDID、STAD)的CRC校验值,CRC参数如下:

CRC算法名称 多项式 初始值 结果异或值 输入反转 输出反转
CRC-32 04C11DB7 FFFFFFFF FFFFFFFF true true
<> CRCBMHD_N

为CRCBMHD值取反。

四、启动代码

启动代码的流程示意如下:
Infineon Aurix TC397启动过程学习
启动代码分为六个阶段:

Phase1

初始化PSW寄存器,评估复位类型是application reset、power-on reset还是CPU0 reset。
由SW、STMx、SMU、ESRx和CB3(Cerberus 3)触发的复位属于application reset,其他的复位源属于system reset。

Phase2

该阶段只在冷复位(Cold power-on reset)情况下才会执行,包含三部分:

  1. 根据使用情况初始化并校验EVR寄存器;
  2. 评估LBIST测试结果;
  3. 执行MONBIST测试;
Phase3

第三阶段会设置CSA,初始化栈指针(A10),因此在该阶段结束后才可以使用函数调用,但不能使用全局变量。

Phase4

该阶段只在power-on reset情况下才会执行,包含三部分:

  1. MMIC时钟检查(for ADAS);
  2. 初始化时钟和flash,喂狗;
  3. 执行MBIST测试;
Phase5

该阶段可选,主要针对功能安全方面,处理SMU各种alarm。

Phase6

最后阶段处理多核启动,具体包括:文章来源地址https://www.toymoban.com/news/detail-452969.html

  1. 通过设置CPU的PCON和DCON寄存器使能PCACHE和DCACHE功能;
  2. 初始化BIV和BTV,支持中断和TRAP机制;
  3. 初始化全局变量;
  4. 启动从核,多核启动按照菊花链的方式,即由CPU0启动CPU1,CPU1启动CPU2,直到CPU4启动CPU5。

到了这里,关于Infineon Aurix TC397启动过程学习的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Infineon TC3XX的 通过HSM 实现Secure Debug

    AURIX™ 调试接口保护- 内部开关概览 Gate1: 通过OCDS模块控制TriCoreTM 调试访问接口; Gate2: 通过DMU模块控制TriCoreTM 调试访问接口; Gate3和Gate4: HSM直接控制。控制Host CPU的访问并且也可以支持禁用HSM自身的调试功能。 AURIX™ 挑战应答机制-调试访问保护 – 用例分析 AURIX™ 挑战应

    2024年02月02日
    浏览(53)
  • AURIX TC3xx Safety Mannaul

    AURIX TC387芯片基于SEOOC开发,最高支持ASILD。安全手册会对相关模块用于对应安全等级需要Tire1使用者满足哪些AoU。 安全手册中主要包含以下信息: • 芯片安全架构的介绍,芯片的简要功能介绍和对应安全机制的描述 • 对应使用场景应当满足的AoU 芯片需要实现的安全配置和

    2024年02月14日
    浏览(43)
  • Aurix TC3xx系列MCU ADC模块简介(一)

    返回总目录 英飞凌Aurix TC3xx系列MCU中有两种ADC模块,一个是EVADC,另一个是EDSADC,两者在转换精度,转换方式等方面有所区别。EVADC的应用场景比较广泛,通常所说的ADC主要是指EVADC,这里以TC3xx系列MCU为例,主要介绍EVADC模块的一些参数和特点,并对EVADC和EDSADC的特点做一个简

    2024年02月15日
    浏览(38)
  • Arm Cortex R52与TC3xx Aurix上下文切换对比

    目录 1.Arm Cortex R52上下文切换 2.英飞凌TC3xx的CPU上下午切换 2.1 上下文类型 2.2 Task Switching Operation  2.3 Context管理寄存器  2.4 各种事件的上下文切换 2.4.1 中断/Trap的上下文切换 2.4.2 函数调用的上下文切换 2.4.3 FCALL/FRET的上下文切换 2.5 Context Save、Restore操作 2.6 Context 切换性能特性

    2024年02月02日
    浏览(60)
  • Tc0.Springboot项目启动失败

    IDE(IDEA或者Eclipse)调试模式 博主使用的是IDEA 2023社区版:已与地址为 ‘‘127.0.0.1:12574’,传输: ‘套接字’’ 的目标虚拟机断开连接 或者 Disconnected from the target VM, address: ‘127.0.0.1:56065’, transport: ‘socket’ 网络常见问题原因: 缺少依赖项 java和tomcat版本不匹配 端口占用

    2024年03月22日
    浏览(37)
  • 英飞凌TC3xx--深度手撕HSM安全启动(五)--TC3xx HSM启动流程、通信机制分析

            在包含HSM的MCU的软件开发里,Host和Hsm应该为两个独立的软件工程。不管是Etas还是Vector的HSM包,都是需要单独收费的。         既然是单独的工程,相应的启动代码也是必须要有的。         在英飞凌的HSM固件架构里,HSM BootRom主要有以下几个作用:内部测试、生产

    2024年02月05日
    浏览(42)
  • AURIX TriCore内核架构学习笔记

    ISA - Instruction Set Architecture,指令集架构 PC - Program Counter, holds the address of the instruction that is currently running GPRs - 32 General Purpose Registers PSW - Program Status Word PCXI - Previous Context Information CSA - Context Save Area,CSAs are linked together through a Link Word TIN - Trap Identification Number SP - Stack Pointer,

    2024年02月10日
    浏览(38)
  • 英飞凌TC3xx--深度手撕HSM安全启动(一)--安全启动方式

            汽车MCU的信息安全在最近几年是越来越火,而信息安全最重要的一个功能就是系统的安全启动;         从嵌入式角度出发,安全启动最早应用在linux系统上,全称叫secure boot;它是一种逐级验证镜像,从而实现固件可信运行。以常见的uboot启动为例,通常要经过

    2024年02月08日
    浏览(55)
  • 英飞凌TC3xx--深度手撕HSM安全启动(三)--TC3xx HSM系统架构

            今天聊TC3xx HSM系统,包括 所用内核、UCB相关信息、Host和HSM交互方式 。         下图来源于英飞凌官网培训材料。         TC3xx的HSM内核是一颗32位的ARM Cortex M3,主频可达100MHz,支持对称算法AES128、非对称算法PKC(Public Key Crypto) ECC256、Hash SHA2,以及TRNG(真随机数生成

    2024年02月09日
    浏览(40)
  • Android系统启动流程概览

    Boot Rom —— Bootloader —— Linux Kernel —— init进程 —— Zygote进程(dalvik/ art)—— systemServer —— Apps init 进程是Linux系统中,用户空间启动的第一个进程。 创建并挂载一些文件目录 启动属性服务 解析 init.rc 配置文件,启动 Zygote 进程 挂载 seLinux 文件目录,创建seLinux,加载

    2024年02月06日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包