英飞凌TC377之flash、UCB、HSM

1、概述

TC3xx芯片最多有6个内核,每个核有自己的私有的Memory以及共有的Memory。

私有的:PSPR, DSPR, PCache, DCache, DLMU, LPB。PSPR主要用来运行RAM Code,比如说有些代码要放到RAM里面运行。DSPR主要当成SRAM来用,比如用来存放全局变量。每个内核可以通过私有的SPB总线访问自己私有的3M的Local PFlash Bank。

共有的:

其他核可以通过SRI总线访问其他核的私有Memory。

在这里插入图片描述
在这里插入图片描述
带Cache的PFLASH的地址从0x80000000开始,不带Cache的PFLASH的地址从0xA0000000开始。

不管是0x80000000还是0xA0000000他们在物理上映射到的地址都是一样的,使用0x80000000访问就会经过Cache,0xA0000000不用经过Cache。

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
DFlash 0和DFLash 1可以当作模拟EEPROM来用,其中DFash1可以被HSM访问,也就是说DFLASH1可以被HSM当成模拟的EEPROM来用。0xAFE00000到0xAFFFFFFF可以用来外扩FLASH时使用。
在这里插入图片描述
0x90000000开始是经过DCache访问核外部Ram的地址,0xB0000000是不经过DCache访问核外部Ram的地址。二者最终访问的物理地址就是0xB0000000开始的核外部Ram.

1.1、PFlash和DFlash

在这里插入图片描述
Flash主要用来存储和运行代码的,TC3xx里面的所有Flash的Sector都是16K(Logic Sector),128个Logic Sector组成一个1M的Physical Sector。PFlash出来用来存放主核运行的代码外,还可以用来存放HSM运行的代码以及TP Code,TP Code存放在Flash,SSW启动程序里面可以调用这些TP Code。

Flash的操作都按页作为单位的,PFlash一页是32个Byte,DFlash一页是8个Byte。Write Burst指令可以一次操作8个Page。
在这里插入图片描述

1.2、SOTA & AB SWAP

当SOTA功能激活时,PFLash被划分为两部分,一部分用来存储可执行代码(active bank),另一部分可用来读取和写入(inactive bank)。当APP更新完毕后,两个部分互换,即切换上面两种地址映射方式。在标准模式下使用PF0-1和PF4作为active bank,在Alternate模式下使用PF2-3和PF5作为active bank,就可以实现在A和B分区中写入完全相同的APP程序,以相同的地址进行运行。

需要注意的是,所有NVM操作都是通过DMU使用PFLASH的物理系统地址执行的,也就是说,NVM操作总是使用标准的地址映射,而不管选择使用哪种地址映射。“NVM操作”是一个术语,用于任何针对FLASH的命令,如程序、擦除等,但不包括读取和执行代码。

有关SOTA地址映射的参数在Flash中的UCB(User Configuration Block)中进行配置,在UCB中配置后,只有当下次MCU复位的时候才会更新配置。
在这里插入图片描述
AB SWAP是TC3xx新增加的功能,主要给Software update over the air (OTA)用的。

简单来讲,TC3xx里面的Flash我们可以简单的分为Bank A和Bank B,在Bank A运行程序的时候我们可以同步的去擦写Bank B,也就是说Bank A和Bank B是完全独立的,这样在应用程序运行的时候也能同步的更新应用程序。

所谓的AB Swap也就是等更新完了程序之后,可以在UCB里面修改Swap mode,程序复位后新的程序就会运行。这样的好处就是不需要bootloader也可以在线更新程序,并且在线更新程序的时候不影响当前程序的执行的
在这里插入图片描述
TC3xx中Flash最大为16M,其中的7M是支持SWAP功能的。
如果使用HSM,则在进行SWAP只想,HSM的代码也需要下载到inactive Bank里面,防止芯片锁死。

不管是Standard模式还是Alternate模式,程序的执行都是从0x80000000开始的,也就是说下载一个新的程序到B Bank,这个程序本身的地址是不需要变的,原来是0x80000000开始现在也是从0x80000000开始。

1.3、UCB

USB存储在DFlash中,每次上电时,芯片自带的Boot Firmware会读取UCB中的值,判断状态,并加载到相应的寄存器中
参考:TC3xx芯片的UCB详解
在这里插入图片描述
UCB里面如果带Password,即使UCB已经Confirm了,还是可以通过输入Password擦写UCB。如果是不带Password的UCB,如果UCB配置成Confirm了,那这个UCB就无法改写了。
在这里插入图片描述
对于有些UCB是不可以被擦掉或者有ECC的Error,如果这个UCB被擦除或者含有ECC的Error,这个芯片可能就会被锁死。
在这里插入图片描述
UCB_BMHD的BMI,BMHDID,STAD,CRCCBMHD,CRCBMHD_N这5个位域不能有Uncorrectable ECC Error,否则芯片就会锁死。所以在不能在操作UCB_BMHD的时候突然掉电,或者没有擦除已有的BMHD就去写BMHD。
在这里插入图片描述
UCB的Confirmation Code中UNLOCKED和CONFIRMED是合法的,ERASED和ERRORED状态是Error状态。所有的UCB在出场的时候都是处于UNLOCKED状态的,在UNLOCKED状态时所有的UCB内容都是可以读出来的,包括Password。UCB在CONFIRMED状态时,除了Password其他都是可以读出来的。
在这里插入图片描述
UCB_BMHD主要是用来设置程序的启动地址的。 UCB_BMHD_COPY主要起到一个备份的作用,比如在擦除UCB_BMHD_ORIN的时候突然掉电,导致UCB_BMHD_ORIN变成Error状态,这个时候就可以读取UCB_BMHD_COPY的内容。
在这里插入图片描述
UCB_PFLASH主要用来设置PFLASH的读写保护。PFLASH的读保护是全局的(只有一个配置项),写保护是每个Sector都能进行单独设置的,如果PFLASH读保护了,相当于也是写保护了(不让读,肯定就不能写了)。

所有UCB的擦写是有次数限制的,这个擦写的限制是保证UCB中数据可以保存20年。在数据保存20年的前提下,对每一个UCB的擦写次数是100次,对所有UCB的擦写次数总共是500次。

AURIX™ TC3xx NVM是非易失性存储器学习笔记

1.4、启动流程

英飞凌TC3xx MCU的启动流程

1.4.1、reset类型

复位有4种:
1、Cold Reset
产生此复位事件的唯一方法是对先前未通电的设备施加电源,类似于重新上电。

2、Warm Reset
它的触发条件,类比35584外部看门狗触发。

3、System Reset
可由软件触发,参照Autosar标准的Mcu_PerformReset函数。

4、Application Reset
可由软件触发,参照Autosar标准的Mcu_PerformReset函数。

对于System和Application Reset而言,就不会将过往历史的RAM数据丢失。

1.4.2、启动步骤

启动分为3个步骤:

  • ①Startup之Fireware
  • ②Startup之Boot Mode
  • ③Startup之Software

其中,步骤2的Boot Mode主要为原厂自带的刷写功能,本文暂不详细展开。

Startup之Firmware
在此步骤中,其实就是我们常称为的SSW的部分,是英飞凌生产时灌装到其中的固定代码。

详细展开,分为了Reset和Fireware两块内容。

Fireware执行
在此阶段,芯片主要执行以下动作:
(1)芯片开始检查当前Core ID;

(2)检查是否为TEST Mode(取自PIN20.2的输入状态);

(3)配置Clock用于SSW的输入时钟;

(4)配置ESR0引脚为低电平,当运行完SSW跳转后才会变为高电平;

(5)判断是否使能SWAP功能;

(6)初始化SRAM,包括清零;

(7)读取BMHD(Boot Mode Header)寄存器,这里包含了起始地址等重要信息;

(8)执行LBIST(Logic Built-in Self Test),检测内部逻辑电路;

(9)备份UCB信息,防篡改校验;

(10)判断是否锁住Debug口,Debug口会影响DAP和JTAG的连接;

(11)判断跳转Boot还是Software程序。
在这里插入图片描述

Startup之Software
本阶段已经进入用户可编程部分了,从软件工程中可以看到。

因此,我们通过Aurix Development Studio新建了一个TC377的工程,并找到了里面的启动代码进行分析。
在这里插入图片描述

1.5、HSM

英飞凌 AURIX 系列单片机的HSM详解(1)——何为HSM

2、使用技巧

2.1、如何修改启动地址为0x80002000

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值