打印
[AURIX™]

英飞凌TC3xx -- Bootstrap Loader分析

[复制链接]
356|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
tpgf|  楼主 | 2024-10-8 16:55 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
英飞凌TC3xx的Platform Firmware章节里,提供了多种启动模式:

Internal start from Flash:b111
Alternate Boot Mode:b110
Generic Bootstrap Loader Mode:b110
ASC Bootstrap Loader Mode:b011
之前我们已经聊过了ABM和Internal start from Flash,今天就来看看这个Bootstrap Loader具体可以做什么。

1.Bootstrap Loaders作用
根据文档描述,Bootstrap Loader主要用于在SSW阶段,使用者利用特定接口(CAN、LIN)加载一小段用户程序到CPU0的PSPR,该段用户程序会在SSW完成后运行。

因此这个功能的实现就需要上位机(PC)和下位机(Tricore)相互通讯配合。

基本逻辑如下图所示:



Bootstrap Loader的时序图在手册中SSW章节定义得非常清楚,我们必须依据这个流程在PC端(上位机)完成实现;

User Flash Routine则就是用户自定义的流程,例如传统基于UDS刷写的流程。

一般来说,这段用户程序主要是用于Flash的编程,例如ECU的下线刷写,如下图:



2.CAN BSL详解
TC3xx提供了如下ASC和CAN两种模式,具体pin脚定义如下:



ASC模式比较好懂,流程如下:



PC发送0x00给到Tricore,Tricore基于该数据自动探测到波特率,并配置相应的ASC接口;然后返回0xD5给到PC,PC就可以下载程序到CPU0_PSPR(地址0xC0000000)。然后离开SSW,从0xC0000000开始执行用户程序。

在TC3xx的设计里,CAN BSL相对复杂,主要在对时钟配置的理解上。

首先明确几个关键特性:

TC3xx CAN BSL既支持标准CAN,也支持CAN FD;
固定初始化帧ID位0x555;
外部时钟源的情况下CAN波特率可配置
2.1 CAN BSL的时钟系统
CAN BSL的时钟是否可配置主要依赖UCB PRONCONDF.OSCCFG的编程,如下:



默认情况下该值为0,对应时钟频率为fback/5 = 20MHz,这种情况下,CAN BSL仅支持标准CAN、采样点为60%、波特率支持100\125\250\500 KBit/s;

当我们修改该UCB对应位为1时,此时允许SSW修改时钟配置。



CAN BSL怎么实现自适应波特率这个无从考证,所以暂时先用起来,接下来我们就继续聊聊整体下载流程。

2.2 CAN BSL流程
TC3xx CAN BSL定义了三类帧:

初始化帧 -- PC端发送给TC3xx;
确认帧 -- TC3xx返回给PC端的响应;
数据帧 -- PC端发送给TC3xx的实际数据帧
具体流程可分为三个阶段: 1)初始化阶段1;2)初始化阶段2;3)数据加载阶段。



阶段1:

该阶段主要是用于CAN波特率的自适应匹配,PC端按照如下固定格式发送数据给到CAN BSL,



其中, DMSGC表示即将要发送的数量,DMSGID表示即将发送数据帧的11bitID

如果CAN BSL能识别该报文,那么会根据上位机CAN 波特率进行自适应配置,ACK响应;使用ACKID返回确认帧给到PC,格式如下:



如果不能识别,则直接返回0xAAA给到PC;

阶段2:

如果需要支持CanFD,PC可以下发更精确的波特率配置给到Tricore,否则直接跳至数据加载阶段。

下发数据帧格式如下:



Tricore响应给PC端格式如下:



主要关注NBTP(Nominal bit timing and Prescaler),用于Classical CAN和CAN FD仲裁数据段;DBTP(Data bit timing and Prescaler),用于CANFD 数据段。

阶段3:

完成上述准备工作后,PC根据如下格式开始进行数据传输:



CAN BSL将接收到的数据copy至CPU0_PSPR(0xC0000000),退出后就开始执行。

3.小结
利用TC3xx自带CAN BSL机制,可以快速实现Bootloader功能,能够有效提升下线刷写的效率。流程固定且容易理解,但缺点也很明显,加载到CPU0_PSPSR这一段程序在CAN BSL没有任何CRC、验签等校验操作,所以这部分信息安全管理和使用场景需要严格定义,不然很可能作为攻击向量。
————————————————

                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/djkeyzx/article/details/142460531

使用特权

评论回复
沙发
小小蚂蚁举千斤| | 2024-10-14 13:17 | 只看该作者
TC3xx自带CAN BSL机制,可以快速实现Bootloader功能

使用特权

评论回复
板凳
suncat0504| | 2024-10-15 18:44 | 只看该作者
很实用的处理机能。安全性上后续应该有升级、改进吧?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1899

主题

15571

帖子

11

粉丝