AURIX™ TC3xx芯片的firmware和用户程序启动流程

1.启动整体流程 startup flow
tc3xx芯片的启动分为两部分:
1)startup firmware的启动,startup firmware是固化在芯片内部的程序。
2)startup software的启动,startup software是应用层序的启动程序。
startup firmware根据reset方式的不同,执行的流程也不一样。例如,cold power reset后startup firmware执行的时间就会长一些,执行的内容也会多一点。
firmware执行完后会跳到应用程序的首地址去执行,应用程序的startup程序也会根据reset方式的不同,执行的流程不同。比如,power on reset执行的内容就多一点,application reset执行的内容就少一点。
2. 启动固件startup firmware
芯片复位后只有cpu0是enable的,其他的cpu都是停止的。ssw中都会选用100mhz的fbackup作为时钟。
esr可以在ucb里面进行配置,ssw这里把esr的配置给读出来设置实际的esr。
swap也是在ucb里面配置的,ssw这里读取swap配置看要不要使能swap。
default模式下会初始化所有的sram为0,在ucb里面可以配置哪些sram不初始化。
bmhd主要配置应用程序的起始地址,bmhd也是在ucb中配置的。
lbist主要做一些内部逻辑电路的检测,它可以在ssw中执行,也可以在应用程序的startup程序中执行。如果需要在ssw中执行,则需要在ucb里面进行配置。
chsw(check software),ssw检查ucb中配置的内容在写入寄存器后是否和寄存器的reset值一样。
如果ucb中配置了debug lock,则ssw就会锁住芯片的debug功能,外部debug功能不能用了。
3.启动选项 boot options, boot mode headers
tc3xx的ssw的最后可以根据ucb的配置直接跳转到应用程序执行,或者根据bmhd的配置进入boot mode。
generic bootstrap loader可以通过can或者asc(串口)的方式和这部分boot loader进行通信,然后下载一部分code到pspr里面,然后再和这部分代码进行通信,把程序下载到flash。
asc bootstrap loader和generic bootstrap loader差不多。
如果希望冲bootloader跳转到应用程序的时候有个复位的动作,则可以使用alternate boot modes。
内部flash启动的启动地址在bmhd寄存器(ucb)里面配置的,bmhd.stad位域。启动模式的选择也可以通过外部pin脚来实现,pindis[3]。
不带cache的flash是从0xa000 0000开始的,才cache的flash是从0x8000 0000开始的。
bmhd_orig和bmhd_copy是相互备份的(例如在刷写bmhd_orig的时候(先擦除再写入)断电了,bmhd_copy还是正常使用)。
bmhd0_orig和bmhd0_copy里面是支持写入密码的,通过ucb_bmhd_orig: confirmation写入,写入密码后要更新bmhd0_orig和bmhd0_copy的话需要通过密码校验。
abm主要用来指定应用程序的起始地址。如果我们希望程序从bootloader跳到应用程序有一次复位的过程,就可以通过就abm模式来实现,abmhd(alternate boot mode header)的stadabm存放的是应用程序的起始地址,abmhd这个结构体的地址存放在bmhd.stad位域,这样在跳转到应用程序之前把bmhd.stad改成abm模式,然后再执行一次软件复位,软件复位以后就能从abmhd.stadabm指定的应用程序入口开始执行,这样在跳到应用程序之前就有一个复位过程,能保证所有的外设和memory都是复位状态。
4.启动软件 startup software
查看rststat寄存器的复位原因,走不同的初始化流程。
tc3xx芯片的复位类型有很多种,比如power on reset, system reset, application reset等。system reset和application reset可通过rstcon寄存器来配置,比如软件复位和看门狗复位可以配置成system reset或者application reset。
如果是power on reset的话,就需要判断是否需要进行lbist。lbist有可能在ssw里面做完的,如果做完了就把当前的签名读出来和预期的签名做比较。如果没有做完,就可以在user的startup里面做lbist。需要注意的是,lbist做完后一定有一个复位的过程。
ustack和csa初始化完后,就可以进行c函数的调用了。
主频的抬高是一个渐变的过程,不能太快,否则可能造成芯片损坏。


智能电网与交直流特高压有什么联系
芯片验证板卡设计原理图:基于XCVU440的多核处理器多输入芯片验证板卡
英特尔图形上Vulkan API的实时演示
买不买AirPods的20个问题 看健身达人说
人类第六感将会打通和人工智能连接的通道
AURIX™ TC3xx芯片的firmware和用户程序启动流程
Linux运维工程师的6类好习惯和23个教训
医疗放射智能监管系统
英飞凌收购Syntronixs Asia
法拉利CEO:2025年后也许会出现电动法拉利
常博逸:人工智能可能颠覆一切,“人类帝国的覆灭”来自自满和懒惰
插电式与电池式“争宠”电动车国标
MACOM宣布完成对Wolfspeed射频业务的收购
交流转直流智能家电IC220V降压5V120mA电源芯片PM1132
AirPods Max在苹果天猫官方旗舰店销量火爆
迪谱诊断获第十届中国创新创业大赛生物医药全国赛“优秀企业”奖
BMS电池管理系统的智能守护者:YSO110TR高精度全温范围内稳定
汇编学习入门之第一个汇编程序
如何通过实现高效的室内定位追踪
户外便携式大容量移动电源的选购指南及必备知识