前言
本文首先介绍整个启动流程的概况,接着分别介绍了firmware启动流程,boot mode的配置,以及用户程序启动流程。这里的Startup Sequence包含MCU的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函数的调用了。
主频的抬高是一个渐变的过程,不能太快,否则可能造成芯片损坏。
审核编辑:汤梓红
-
芯片
+关注
关注
450文章
49002浏览量
414203 -
mcu
+关注
关注
146文章
16369浏览量
346127 -
Firmware
+关注
关注
0文章
27浏览量
10271 -
启动流程
+关注
关注
0文章
14浏览量
6453 -
Aurix
+关注
关注
1文章
70浏览量
10833
原文标题:AURIX™ TC3xx 启动流程
文章出处:【微信号:谈思实验室,微信公众号:谈思实验室】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
英飞凌TC3XX系列多核MCU学习笔记(3)
![英飞凌<b class='flag-5'>TC3XX</b>系列多核MCU学习笔记(<b class='flag-5'>3</b>)](https://file1.elecfans.com/web2/M00/A5/18/wKgaomUI_8uAFoldAAEd8_ec1fw567.jpg)
TC3xx芯片的Endinit功能详解
![<b class='flag-5'>TC3xx</b>芯片的Endinit功能<b class='flag-5'>详解</b>](https://file1.elecfans.com/web2/M00/B3/11/wKgZomVj7-yAXNa0AAAc9NU0JpE936.png)
Pflash恢复保护命令最终会在Aurix TC3xx控制器上重置目标是为什么?
GCC和TASKING有什么区别?应该为AURIX™ TC3xx选择什么?
TSIM是否支持TC3xx系列在没有硬件的情况下调试应用程序?
英飞凌AURIX单片机TC3xx系列助力自动驾驶和电动交通发展
英飞凌AURIX单片机TC3xx系列助力电动交通发展
英飞凌 AURIX 单片机 培训文档链接
![英飞凌 <b class='flag-5'>AURIX</b> 单片机 培训文档链接](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
英飞凌AURIX TC3xx和TRAVEO T2G系列微控制器介绍
![英飞凌<b class='flag-5'>AURIX</b> <b class='flag-5'>TC3xx</b>和TRAVEO T2G系列微控制器介绍](https://file1.elecfans.com/web2/M00/8A/24/wKgZomSRUKCACTyuAAAMBIv0FhQ904.jpg)
TC3xx芯片DMU介绍
![<b class='flag-5'>TC3xx</b>芯片DMU介绍](https://file1.elecfans.com/web2/M00/A2/70/wKgaomTwLzKAFA9oAAAzEsYV888714.png)
TC3xx芯片的MPU功能详解
![<b class='flag-5'>TC3xx</b>芯片的MPU功能<b class='flag-5'>详解</b>](https://file1.elecfans.com/web2/M00/A3/B5/wKgZomUJGniAWMcGAABvIJ3pGu8491.jpg)
评论