英飞凌TC3xx -- Bootstrap Loader分析

目录

1.Bootstrap Loaders作用

2.CAN BSL详解

2.1 CAN BSL的时钟系统

2.2 CAN BSL流程

3.小结


英飞凌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、验签等校验操作,所以这部分信息安全管理和使用场景需要严格定义,不然很可能作为攻击向量。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CyberSecurity_zhang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值