英飞凌TC3xx -- Bootstrap Loader分析

news2024/9/23 19:51:47

目录

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2158333.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

宠物鱼油补充剂行业调研:未来几年年复合增长率CAGR为7.8%

宠物鱼油补充剂是一种营养补充剂,富含从鱼类中提取的欧米伽-3 脂肪酸(主要是 EPA 和 DHA),专为宠物设计,以改善其健康状况。鱼油补充剂富含奥米加-3 脂肪酸,已被证明对宠物健康有诸多益处,包括改…

ER论文阅读-Incomplete Multimodality-Diffused Emotion Recognition

基本介绍:NeurIPS, 2024, CCF-A 原文链接:https://proceedings.neurips.cc/paper_files/paper/2023/file/372cb7805eaccb2b7eed641271a30eec-Paper-Conference.pdf Abstract 人类多模态情感识别(MER)旨在通过多种异质模态&#x…

开源模型应用落地-Qwen2.5-Coder模型小试-码无止境(一)

一、前言 代码专家模型是一种基于人工智能的先进技术,旨在自动分析和理解大量代码库,并从中学习常见的编码模式和最佳实践。这种模型通过深度学习和自然语言处理,能够提供准确而高效的代码建议,帮助开发人员在编写代码时有效地避免…

freemobus阅读笔记

以下,仅仅在freemodbus中有效 pvMBFrameStart中的pv是什么的缩写 p代表指针,V母鸡,MBFrameStart指的是modbus系统的开始 pusLength 中的pus p代表指针,u代表无符号 s代表short短整型 pucFrame 中的puc p代表指针&#xff0c…

Linux学习笔记13---GPIO 中断实验

中断系统是一个处理器重要的组成部分,中断系统极大的提高了 CPU 的执行效率,本章会将 I.MX6U 的一个 IO 作为输入中断,借此来讲解如何对 I.MX6U 的中断系统进行编程。 GIC 控制器简介 1、GIC 控制器总览 I.MX6U(Cortex-A)的中断控制器…

测试文件和数据库文件

接口测试 flaks项目入口文件manage.py路由配置 import requests#首先面向对象作封装,避免相同代码反复编写 class HttpApiTest:def test_get(self,url,data{}): #用来测试get方法的接口 #self通过共享self类中间的变量 #url用来请求接口 #data可传可不传res reques…

明日周刊-第21期

断更了一段时间,现在开始续上。本周的最大的杭州科技活动应该就是云栖大会了,一年一度的云栖大会也不知不觉经过了十年,趁着周六我也去好好体验了一番。(ps:下周炉石传说重回国服了,各位都准备好了吗&#…

多个异构系统用户权限如何统一管理?

企业内部往往部署了多个业务系统来支撑不同的业务流程,然而,这些系统之间的标准不一,导致跨系统操作时权限不透明,难以确保数据安全与合规操作。同时,频繁的权限变更与维护工作量大且效率低,给企业带来了诸…

干货:企业微信批量删除客户指南!

随着客户量的增加,管理员常常面临一个问题——如何批量删除客户。其实新版本的应用支持批量删除一些单向客户,可以一次性把外部联系人名额空出很多来了。 具体的操作步骤是: 手机端软件-通讯录-我的客户-微信客户-全部微信客户-单向微信客户…

2024已然过半,AI技术卷到哪儿了?

可以说,科技的发展真的是日新月异,2024年年初,大模型Sora的出现,改变了短视频行业的演变方向,使得AI技术不再只是停留在文生文,文生图阶段,而是发展到了文生视频领域。2024年5月,回忆…

短剧APP开发功能特点,短剧爆火下的市场发展

今年以来,短剧迅速爆发,为市场带来了不菲的成绩!短剧的火爆,直接推动了短剧的创作,更是激发了短剧制作商的创作热情,各种类型的短剧层出不穷,为观众带来了多种多样的短剧选择。 近年来&#xf…

区块链中的去中心化,点对点网络系统,所有权本质,,双花问题的详解

去中心化的概念 区块链去中心化是指一种分布式数据库技术,它通过加密算法和共识机制在网络中的多个节点上存储数据,从而实现数据的去中心化管理。在区块链去中心化中,没有中心化的权威机构或服务器来控制或验证数据,而是依赖于网络…

又到了金九银十,你的简历写好了吗?

又到了金九银十的招聘季,不过这几年求职环境越来越差,相比于跳槽找新机会,大家可能更倾向于守住自己手头的工作,稳字当头。当然,也有很多工作实在干烦了的朋友,想要换个新赛道试试。今天就给大家带来一个新…

玩转Google SERP API 说明

Google SERP API 对接说明 Google SERP(Search Engine Results Page)是用户在Google搜索引擎中输入查询后看到的结果页面。它显示自然搜索结果、广告、特色摘要、知识图谱以及图片、视频等多种内容,旨在为用户提供最相关的信息。 本文将详细…

防火墙详解(三)华为防火墙基础安全策略配置(命令行配置)

实验要求 根据实验要求配置防火墙: 合理部署防火墙安全策略以及安全区域实现内网用户可以访问外网用户,反之不能访问内网用户和外网用户均可以访问公司服务器 实验配置 步骤一:配置各个终端、防火墙端口IP地址 终端以服务器为例&#xff…

go解决引入私有包报错“Repository owner does not exist“的两种方式

当你写好引入的私有包,执行go mod tidy报错: Gogs: Repository owner does not exist fatal: Could not read from remote repository. Please make sure you have the correct access rights and the repository exists. 目前我的两种解决方案: 一、拉群整个…

论文集搜索网站-dblp 详细使用方法

分享在dblp论文集中的两种论文搜索方式:关键字搜索,指定会议/期刊搜索。 关键字搜索 进入dblp官方网址dblp: computer science bibliography,直接在上方搜索栏,搜索关键字,底下会列出相关论文。 指定会议/期刊搜索 …

Java多线程(1)—线程基础

一、关于线程 1.1 简介 计算机线程(Thread)是操作系统能够进行运算调度的最小单位。线程的优势在于提高了程序的效率和响应能力,尤其在处理 I/O 操作或多任务时。多线程编程能够充分利用多核处理器的计算能力,达到更高的性能。 …

解决IDEA出现:java: 程序包javax.servlet不存在的问题

问题截图: 解决如下: 1. 点击文件——>项目结构 2. 点击库——>点击——>点击java 3. 找到Tomcat的文件夹,找到lib文件夹中的servlet-api.jar,点击确定 4. 选择要添加的模块 5. 点击应用——>确定

Deep Guided Learning for Fast Multi-ExposureImage Fusion

Abstract 我们提出了一种快速多重曝光图像融合(MEF)方法,即 MEF-Net,用于任意空间分辨率和曝光次数的静态图像序列。 我们首先将输入序列的低分辨率版本提供给全卷积网络以进行权重图预测。 然后,我们使用引导滤波器联…