【Aurix系列学习】TC264D启动配置解释

目录

SSW的概念

BMI的概念

启动配置流程

几种启动模式的解释

启动流程


SW的概念

如图,AURIX芯片在芯片复位后最先执行Startup Software(SSW,软件起动配置),软件启动的主要任务是配置芯片工作所需的初始环境以及相关入口。它有几点需要注意:

➢ SSW 在 CPU0 里面执行,所以 CPU0 在 TC264 上电之后就会启动;

➢ SSW 集成在 BootROM 里面,不可以修改;

➢ SSW 的最后一条指令就会跳到客户编写的第一条指令地址(BMHD.STADABM 例如 0xA0000020);

SSW 描述

BMI的概念

BMI是用来选择启动模式的一段特定的信息,储存在FLASH当中,更准确的说是在PFLASH当中。BMI分布在四个段中,每个存储BMI信息的段都有一个基本的框架(firmware),被称为ABM。每个ABM的地址如下表所示:

ABM地址分布

使用多个BMI是为了防止在启动阶段部分BMI损坏的情况出现。所以建议,四段ABM中BMI做相同的定义。图中表示的是ABM框架的结构:

ABM框架定义

如表所示,我们需要关注的是位于地址04H的低16位(因为是32位的地址,BMI只有两个字节,与BMHDID在一个地址),便是我们的BMI,只有两个字节。可以选择启动模式,以及启动引脚是否使能。还有一个是第一个地址00H中关于用户代码起始位置的定义,建议紧跟BMI。至于其它部分关系不大,我们了解一下即可。接下来是一段示例的启动BMI配置;

ABM示例代码

示例只给出了第一段,用户代码起始位置是在ABM结束后的下一个地址。BMI配置为Generic bootstrap启动,硬件引脚配置使能。至于后面的不在解释了,其它三段照抄即可。

启动配置流程

在TC264 B-Step中,只有一种方式可以选择启动配置模式,那就是根据Flash中指定位置的值(即BMHD区的内容),通过启动模式索引(BMI)进行配置。(而作为BMI配置流的一个选项,可以通过硬件配置引脚上相应的值来配置BMI,来达到控制启动方式的目的)。

SSW的详细流程可以参见下面的流程图:

TC26x B-Step中启动模式的选择流程

大概步骤为:

1. 如果在Flash启动期间发生错误或Flash配置扇区损坏(不可恢复的数据错误)- SSW立即终止。 

2. SSW按顺序判断最多4个引导头BMHD0…BMHD3:
             a)如果找到有效的引导头,则采取相应的启动模式。
             b)如果没有找到有效的引导头,将继续执行步骤3。

3.检查上次BMI是否使能了引脚配置,是否引脚已选择ABM启动模式但代码检查失败:
             a)如果没有-继续步骤4。
             b)如果是,则根据HWCFG[5:4]引脚状态执行Generic或ASC引导加载程序模式(即采用外部BOOT,例如DAP下载器或者串口,MultiCAN等下载程序,当然前者和后二者也不同,即图上右边具体的判断分支,后面详细介绍)。

4. 检查条件(OTP保护模式禁用)是否为真:
             a)如果是:初始化所有与安全相关的ram,然后检查任一调试器是否已连接,并请求进行停机后复位(OSTATE.HARR=1)
                   aa)如果是:执行内部启动模式- CPU0将在第一个用户指令之前停止。
                   bb)如果不是:执行一般的引导加载模式(默认模式如果没有有效的BMI)。
             b)如果不是:检查并视情况允许使用一般的评估顺序进行调试访问,然后进入无限循环。外部调试器(如果授予访问权限) 能够进一步处理设备启动。

按照手册所说,这里所有与安全相关的RAM的初始化是为了防止使用BSL模式作为后门来读取之前存储在某些RAM中的用户信息,也就是对用户信息进行了保护,可谓十分周到了。

几种启动模式的解释

4.1.4 下三种模式的简单介绍
4.1.6.4 下几种启动模式的详细解释

Internal start from Flash:这是默认的方式, 从0xA0000020这个地址取第一条指令开始执行。可以连接仿真器、下载器;

Bootstrap Loader:这里说的Bootloader是烧写在芯片内部的, 出厂前就烧写好了, 跟用户自己写的Bootloader不同。这个Bootloader将代码下载到SPRAM(PSRR)中执行。包含Generic Bootstrap Loader和ASC Bootstrap  Loader两种模式:

1. Generic Bootstrap Loader:TC264上电之后会进入 bootlader 模式,客户可以通过 CAN 或者ASC 通过 P14.0、P14.1进行程序的下载;

2. ASC Bootstrap Loader:TC264上电之后会进入 bootlader 模式,客户可以通过 ASC 通过P15.2、 P15.3 下载;

Generic 和 ASC 的区别在于:下载程序使用的通信方式 Generic Bootstrap 可以使用 CAN、 ASC 通信,而ASC bootstrap 只可以使用 ASC 通信,并且引脚不一样。

Alternate Boot Mode:这是自定义的启动模式,即代码可以从用户自定义的Flash地址开始取指令执行。或者将自定义的启动代码使用上述的Bootloader下载到芯片的Flash中之后开始执行。ABM 和其它几种启动方式的区别是启动地址的区别
                   Bootstrap Loader 起始地址:PSPR( Program scratchpad RAM)区: 0XC0000000 ,
                   ABM 的起始地址从BMHD.STADSBM 里面去装载起始地址。

这里其实很容易存在误解,第二种和第三种下载方式的区别究竟是什么?

实际上,第二种方式不改变芯片内部的bootloader(也就是相应的BMI)进行程序或者数据的下载。下载的程序或数据会被直接加载到PSPR的0XC0000000中,然后该BMI会将用户程序起始地址也指向PSPR中的0XC0000000,这样boot完成后程序会直接从此开始执行,达到串口或者CAN下载程序的目的。因为代码是下载到RAM里,速度会提高将近1/3,不过因为RAM的易失性,所以这种下载是否是一次性的,还需要进一步研究(如果不是一次性说明这些代码也被同步装入了默认FLASH区)。

第三种方式相对于第二种是改变bootloader,可以写入指定位置的FLASH。该模式下,会先循环检测BMI是否完成了对应BMHD.STADSBM起始地址的配置:如果有有效配置则跳转到对应FLASH地址执行程序;如果没有就继续检测,直至四组BMI全部无效或者第四个BMI使能了引脚配置。如果如此就执行第二种模式,根据配置的方式将代码写入PSPR中并执行。这种方式等于如果有有效的bootloader就参照其执行,如果没有再尝试下载。

说白了,三种方法的本质区别就是位置的区别:

第一种——直接从紧接着BMHD0的0xA0000020处执行用户程序。
       第二种——直接从确定的PSPR区0XC0000000处执行用户程序。
       第三种——先尝试能否从重定义处执行程序,如果失败再从PSPR区执行。

从上面所述也可以看出,BMHD一定要保证四组内有至少一组正常,否则因为没法进行正确的bootloader芯片会直接变砖。

启动流程

最后,借鉴一张图(源自生态圈内文件)直观的描述一下TC264正常情况下的大致启动流程(TC275和TC264基本一致):

启动流程图

如有疑问或错误,欢迎和我私信交流指正。
W.By ChenYX,未经授权,请勿转载!

over~

发布了20 篇原创文章 · 获赞 15 · 访问量 23万+

猜你喜欢

转载自blog.csdn.net/qq_42059060/article/details/105354268