TC3xx A\B SWAP机制的小细节(2)

目录

1.引入

2.TC3xx Swap机制小细节

3.小结


1.引入

上文TC3xx A\B SWAP机制的小细节(1)-CSDN博客主要把OTA的概念,以及MCU的硬件A\B Swap机制做了简单介绍,下面我们来聊聊TC3xx的SWAP机制

2.TC3xx Swap机制小细节

英飞凌TC3xx提供了硬件SOTA机制,它可以实现代码在一个Flash Bank读取并运行,同时另外一个Bank可以刷写新的代码。以TC37x为例,该系列包含两个PFlash Bank,大小均为3MB,如下图所示:

那么我们来思考如下几个问题:

  • 要使用swap机制,工程编译应该使用什么地址映射方式?

在TC37x系列里,有两个地址映射模式: standard address map和alternate address map,其物理bank和逻辑地址映射关系如下:

而我们在上面提到使用硬件SWAP机制的好处就是只用维护一个工程以及对应链接脚本,因此从逻辑上讲,我们应该就使用standard address map的地址来设计链接文件并编译工程,整体逻辑如下:

从CPU的视角来看,它始终使用逻辑地址0x80000000(举例)来取指,而芯片硬件根据不同地址映射模式来给物理Bank0、1分配逻辑地址,例如0xAA模式下,分配0x80000000给到PFlash1,这样就能保证运行的是更新后的代码。 

  • 更新代码应该往哪个地址写数据?

既然CPU始终是从0x80000000(举例)来取指,那么我们就认为这个地址的Bank为Active的Bank,那么很明显我们要将新的代码放进inactive bank里,在该示例中毫无疑问就应该是0x80300000的逻辑地址。

这就出现了问题,一般来说我们通过编译器例如Tasking、Hightec编译出来的文件多数为hex、elf文件,这些文件都是带地址信息的,如下图:

可以看到,第二行记录的起始地址为0x80000020,以此类推。那么我们如果直接用这个hex就覆盖掉了active bank上的内容,这样显然是不行的。

为解决这个问题,Lauterbach、iSystem等等提出了基于调试器级别的方案:

Lauterbach Application Note FLASH Programming TriCore中提到,如果SWAP使能后,Code想要刷进inactive bank,需要使用TRANSlation命令,如下所示:

当然也可以用调试器自带脚本 /demo/tricore/flash/tc3xx-swap.cmmiSystem针对TC3xx的SWAP机制做了优化,用户只需要配置SWAP相应UCB即可完成下载,这个地址偏移等动作对于用户来说是透明的。

Aurix devices have internally more than one program flashes (e.g. PF0, PF1, PF2 flash blocks, etc.). When SOTA is enabled, alternate address mapping is enabled. During download, winIDEA detects which flash memory mapping is selected and it writes data from the download file to correct PFlash block. Download operation is thus transparent to the end user.

那么实际上从整车角度来看,OTA时不能拆盖连接调试器,所以我们只能在Master端进行地址转换,或者我们将待更新文件做成bin文件(不带地址信息),由Master指定刷写的地址。

  • 使能HSM时,代码应该如何部署?

 当HSM使能后,TC3xx会给PFlash 0 前40个Sector给到HSM让用户选择,如下图:

既然我们要用A\B SWAP机制,那么inactive bank应该也有相应的镜像,HSM、Host代码部署如下:

同时从手册上描述看,PROCONHSMCX、PROCONHSMCOTP的寄存器设置同样会镜像给到A、B Bank。 

除此之外,我们注意到Tricore CPU都有一个直连接口PFI连接到bank,这里用的是逻辑地址,用于加快取指;而当SWAP使能后,逻辑地址没变,物理Bank却变了,所以CPU只能从SRI去取指,这会有一些​性能上的损失,如下:

3.小结

上面简单描述了汽车OTA的必要性,引申出了MCU对于OTA的硬件机制实现,分析了关于TC3xx SWAP小细节,后续我们再继续讲解在OTA硬件机制下为什么Flash的RWW属性非常重要,NXP、ST的Flash RWW有哪些区域。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

CMake从安装到精通

目录 引言 1. CMake的安装 2. CMake的原理 3. CMake入门 3.1 CMakeLists.txt与注释 3.2 版本指定与工程描述 3.3 生成可执行程序 3.4 定义变量与指定输出路径 3.5 指定C标准 3.6 搜索文件 3.7 包含头文件 4. CMake进阶 4.1 生成动静态库 4.2 链接动静态库 4.…

Linux服务升级:Almalinux 升级 Anaconda虚拟环境

目录 一、实验 1.环境 2.Almalinux 部署 VS Code 3.Almalinux 升级 Anaconda虚拟环境 4.Anaconda 使用 5.VS Code 部署 Anaconda虚拟环境 6.Almalinux 使用命令窗口版 Jupyter 二、问题 1.VS Code离线如何实现汉化 2.Anaconda 安装报错 3.Anaconda创建虚拟空间失败 …

头歌资源库(9)丢失的数字

一、 问题描述 二、算法思想 输入n和nums数组。初始化一个大小为n1的数组counts,初始值都为0。遍历nums数组,将counts[nums[i]]的值加1。遍历counts数组,找到第一个值为0的索引,即为没有出现在数组中的那个数。输出结果。 三、…

视频太大了怎么压缩

随着科技的不断发展,视频已经成为了我们生活和工作中不可或缺的一部分。但是,当我们拍摄或下载的视频文件过大时,就会遇到很多麻烦。比如,不能发送给朋友、不能上传等。这时候,我们就需要对视频进行压缩,以…

ctfshow web七夕杯

web签到 执行命令没有回显&#xff0c;我们直接写文件就可以了 有字符长度限制 ls />a nl /*>a访问url/api/a下载文件 easy_calc <?phpif(check($code)){eval($result."$code".";");echo($result); }function check(&$code){$num1…

谷歌发布Infini-Transformer模型—无限注意力机制长度,超越极限

Transformer 是一种基于自注意力机制的深度学习模型&#xff0c;最初应用于自然语言处理领域&#xff0c;现已扩展到图像、音频等多个领域。与传统的循环神经网络 (RNN) 不同&#xff0c;Transformer 不依赖于顺序数据处理&#xff0c;能够并行计算&#xff0c;从而显著提高效率…

04通讯录管理系统——退出功能实现

功能描述&#xff1a;退出通讯录 思路&#xff1a;根据用户不同的选项&#xff0c;进入不同的功能&#xff0c;可以选择switch分支结构&#xff0c;将整个架构进行搭建 当用户选择0时&#xff0c;执行退出&#xff0c;选择其他时先不做操作&#xff0c;也不退出程序 代码&am…

2021 hnust 湖科大 数据结构课堂实验代码及报告

2021 hnust 湖科大 数据结构课堂实验代码及报告 目录 实验1 线性表 1 实验2 栈的应用 4 实验3 队列的应用 9 实验4 串的应用 16 实验5 二叉树遍历 19 实验6 哈夫曼编码 23 实验7 图的遍历 27 实验8 最小生成树 32 实验9 最短路径 35 实验10 折半查找 37 实验11 插入排序与交换…

vue3的基本使用方法

【 vue3实例 】 【 0 】对象、方法和属性 对象&#xff08;Object&#xff09;&#xff1a; 对象是编程中的一个数据结构&#xff0c;它可以包含多种数据类型&#xff0c;包括数字、字符串、布尔值、数组、其他对象等。对象通常由一系列属性和方法组成。在面向对象编程&…

黑马程序员2024最新SpringCloud微服务开发与实战 个人学习心得、踩坑、与bug记录Day3 全网最全

你好,我是Qiuner. 为帮助别人少走弯路和记录自己编程学习过程而写博客 这是我的 github https://github.com/Qiuner ⭐️ gitee https://gitee.com/Qiuner &#x1f339; 如果本篇文章帮到了你 不妨点个赞吧~ 我会很高兴的 &#x1f604; (^ ~ ^) 想看更多 那就点个关注吧 我会…

DoIP——step1:车辆连接

文章目录 前言一、连接要求DoIP边缘节点的接口要求/测试仪的接口要求DoIP边缘节点物理层要求DoIP边缘节点数据链路层要求测试设备数据链路层要求二、物理连接激活线三、线束要求前言 采用DoIP对车辆进行诊断时可选择有线或者无线的方式完成外部诊断设备和车辆的连接,接下来将…

文档项目:攻坚克难

鉴于交流离心机存在的缺点&#xff1a;转速相对偏差、稳定精度不够高&#xff1b;带负载能力受外界扰动后&#xff0c;波动较大&#xff1b;寿命短&#xff0c;研究所各相关部门成立组成技术攻关团队&#xff0c;齐心协力&#xff0c;攻坚克难&#xff0c;在摸索中突破创新&…

【实用工具】Skyworking

文章目录 一、Skywalking概述1.1 核心功能1.2 指标概述1.2.1 一些常用指标1.2.2 指标的使用方式 二、仪表盘2.1 APM2.1.1 全局维度的指标2.1.2 服务维度的指标2.1.3 实例维度的指标2.1.4 端点维度的指标 2.2 数据库2.3 其他 三、追踪3.1 界面划分3.2 请求链路界面分析3.3 一般流…

Unity 材质系统优化(mesh相同,图片不同,但是可以将所有的图片合成一张图集)

今天提供一个Unity材质优化的思路&#xff0c;流程是这样的&#xff0c;模型的mesh相同只是图片不同&#xff0c;我想着能不能将所有的图片合成一张图集呢&#xff0c;于是我就试着在Blender里面开搞了&#xff0c;所有的mesh相同的模型&#xff0c;共用一个材质&#xff08;图…

spring整合openAI大模型之Spring AI

文章目录 一、SpringAI简介1.什么是SpringAI2.SpringAI支持的大模型类型&#xff08;1&#xff09;聊天模型&#xff08;2&#xff09;文本到图像模型&#xff08;3&#xff09;转录&#xff08;音频到文本&#xff09;模型&#xff08;4&#xff09;嵌入模型&#xff08;5&…

广电行业没落了吗?生成式人工智能(AIGC)媒体应用标准联盟发布,超清化、移动化和智能化是发展趋势

这些年&#xff0c;随着智能手机、网络普及程度越来越高&#xff0c;传统广播电视的打开率下滑&#xff0c;广电行业甚至被纳入“特困”行业名单。 根据2022年5月31日&#xff0c;人社部等四部门发布的《关于扩大阶段性缓缴社会保险费政策实施范围等问题的通知》&#xff0c;其…

高频谐振功放

目录 基本电路原理 高频谐振功放vs.高频谐振小放 高频谐振功放vs.低频功放 功率与效率 计算 基本电路原理 由于加了VBB&#xff0c;基极反偏&#xff0c;拉低了输入信号的直流偏量&#xff08;如下图中-VBB&#xff09;,加上三极管截至电压VBE的存在&#xff0c;只有一部分…

Web后端开发的学习

REST风格 GET:查询用户POST:新增用户POT:修改用户DELETE:删除用户 前后端交互统一的响应结果 记录日志 SLf4j 注解&#xff1a; PathVariable&#xff1a;获取路径的参数ResponseBody :方法的返回值直接作为 HTTP 响应的正文返回,将响应的实体类转为json发送给前端Request…

WPF学习(4)--SCICHART学习

一、项目创建过程 1.下载SCICHART插件 2.选中第一个&#xff0c;确保引用中有我们要用的 二、示例代码 1.前端代码 <Window x:Class"SciChart.Examples.MainWindow"xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"h…

LSS算法核心原理详细解读,一看就懂,不懂请打我!

目录 核心整体流程分步阐述backbone几何关系&#xff08;创建视锥&#xff09;和视锥投影到egoVoxel PoolingHead 总结 核心 将2D图像特征转换到BEV feature特征 该算法是BEV领域中的一大基石 整体流程 流程步骤 &#xff08;1&#xff09;利用backbone获得环视图像&#xf…