英飞凌TC3xx-Overlay
目录
1.数据访问重定向
2.寄存器说明
3.Overlay功能配置
3.1 确认用于重定向的CPU
3.2 配置重定向Block大小
3.3 配置目标地址和重定向地址
4.结果验证
5.小结
今天说要开个专栏讲讲XCP标定,但在将标定之前,先把英飞凌专门为标定功能设计overlay功能讲解清楚。
英飞凌的overlay全称叫做Data Access Overlay,其作用是 redirect selected data access to the OVERLAY memory(意味着通过overlay memory来访问数据?)对于Trcicore系列来说,通过CPU访问PFlash、Online Data Acquisition space或者EBU可以被重定向;OVERLAY memory可以分配到Local memory、Emulation Memory或者DPSR/PSPR。
Overlay功能可以在程序运行时在线实时修改标定参数(这些参数通常存放在Flash中)。注意,overlay仅对数据访问有效;且Overlay机制是针对CPU对数据的访问重定向,一定要注意这点。
1.数据访问重定向
我们首先来看overlay原理图。

对于一个overlay block有三个非常重要的参数:
- Target Base Address --需要被重定向的目标起始地址(一般为Flash);
- Block Size -- 需要被重定向的块大小;
- Redirection Base Address -- 重定向块的起始地址(一般为RAM);
对于这三个参数,都有相应的寄存器来配置:
- Target Base Address -- OTARx;
- Block Size -- OMASKx;
- Redirection Base Address -- RABRx
根据芯片手册,TC3xx有32个block用于overlay功能,且size可配置(32byte~128KB)。
2.寄存器说明
- OTARx(i=0-31)

该寄存器只有一个参数可配置,TBASE;

该参数的有效性受OMASK寄存器控制;而所谓target base是指的源地址(通俗将即flash地址,这容易混淆)
- OMASKi(i=0~31)

OMASK位域用于设置overlay block size。
需要注意是,OMASK 只有当bit设置为0时才会参与block大小的配置,例如,当OMASK配置为000时,也即全部12bit有效,因此block size = 2^12 * 32 = 131082byte = 128KB;那么当我需要配置1024byte时,2^n*32 = 1024 ,n= 5,OMASK = 1111 1110 0000 = 0xFE0;
当bit为1时,OMASK中置1 的位用于地址比较。
- RABRi(i= 0~31)

OVEN--Overlay 使能

OMEM -- 选取overlay memory

OBASE -- Overlay memory基地址

看到这里我想大家明白我说TBASE容易搞混淆的原因,按正常想法,我们都是从源地址overlay到目标地址,即访问flash但实际访问到的是ram;英飞凌不一样,他说目标地址overlay到overlay memory。
- OVCENABLE

这个寄存器用于使能核的overlay功能,所以大家这里就要搞明白,为什么overlay是放在CPU这一章节;后面我会做一个验证,通过debug口看到的数据和开启overlay的cpu看到的数据其实是不一样的。
- OVCCON
Overlay control register,用于控制某个核的overlay功能

CSELx -- 用于选择某个核使能overlay
OVSTRT -- 如果CPU选择了overlay,那么OVCx_OSEL选择的block会被激活;
OVSTP -- 对于CSEL选择的CPU,所有的overlay block会被失效;OVCx_RABRy.OVEN会被清除。
OVCONF -- overlay configured;置1,overlay block control寄存器已经配置好,并且已经为overlay start做好准备。
DCINVAL -- Data Cache Invalidate ;Data Cache Lines使能。
3.Overlay功能配置
有了上述寄存器认识后,下面来看寄存器配置是如何实现重定向功能:

假设我们现在想把PFlash0(0x8000 1000)(128byte)重定向到CPU0DSPR,那么我们要考虑三个关键因素,目标地址、映射block大小、重定向地址;
很明显:目标地址即要重定向的flash地址:0x80001000(提问:可不可以不指定地址,让编译器随意分配地址?)
Block大小:128byte即可;
重定向地址:CPU0DSPR 0x70011000
那么如何来配置寄存器呢?
3.1 确认用于重定向的CPU
根据datasheet,通过核访问PFlash等可以被重定向;所以这里我们选择CPU0开启overlay功能。

OVCCON.CSEL0 = 1,因为每个CPU都有至少32个可重定向的block,因此这里我们选取block0用于定向到CPU0DSPR,CPU0_OSEL.SHOVEN0=1
3.2 配置重定向Block大小
Block大小为128byte,那么根据芯片手册,配置为0的为有效位,因此根据公式计算2^n * 32 = 128 ,得出n=2,也即OMASK 位域 = 0x 1111 1111 1100 (0xFFC)
OMASKi.OMASK = 0xFFC,OMASK.U = 0x0FFFFF800
3.3 配置目标地址和重定向地址
目标地址寄存器为OTAR,重定向寄存器为RABR,该寄存器配置的难点在于:RABR.OBASE仅有17bit,OTAR.TBASE仅有23bit,如何把目标地址和重定向地址放进去?就需要参考下图:

再来回顾 PF地址0x80001000,DSPR 0x70011000,OMASK 0x0FFFF800。
首先我们来看,Destination有两种来源,一种是Original Address,一种是redirected;那么根据实际情况来看,什么时候选择原始地址,什么时候选择重定向地址,很明显要看左边比较的结果。
根据芯片手册,需要A和TBASE所有参与比较的bit都相同,才会使用重映射地址;参考下图:

源地址绿色部分(bit27:bit7)会参与地址比较,也即OTAR要装绿色部分一样的数据才会使用重映射地址;很明显,要比较的位域位置一样,因此要填到TBASE的值就为Target >> 5。
OTAR - 0x00001000
那么RABR寄存器该如何配置;
我们知道,要定向的ram地址为0x70011000 = Base1+Base2+offset
其中Base1 = b1000 0000 00,Offset = b00000

很明显,需要把绿色部分填进OBASE,因此也是重定向地址 >>5,
故RABR = 0x80011000
配置完成后,来看结果
4.结果验证
Overlay是针对CPU的,由于debug是走bypass功能,因此如果直接去memory看overlay flash值,必定还是原flash的值。因此在代码上做如下工作:
首先在0x70011000 定义一个数组Test_Map_Cal_Ram,值如下:
![]()
在0x80001000(flash)定义一个数组Test_Map_Cal_Flash,值如下:

为了验证overlay功能,还需要一个中间变量来承接,定为Test_Algo_Update = 0;
上电时,我们首先看Test_Algo_Update,此时应该为0

Flash值为:

Ram值为:

现在开启overlay功能,

要达到的效果为:通过cpu0读取flash的值,但实际上应该读的是ram的值,如下:

Debug看,确实是通过访问flash实际读取的ram的值

从上图就可以看出,CPU0把数组Test_Map_Cal_Flash赋给了数组Update,如果overlay功能没有奏效,那这个时候应该Update = {0,1,2,3....};
但实际上我们可以看到Update = {20,21,22....},说明CPU0是把Cal_Ram的值赋给了Update,overlay奏效了。
5.小结
通过上面验证,我们就可以用这个功能来做标定啦;标定量A存在PFlash地址0x80004000,使用overlay时,上位机就直接download 该变量的flash地址即可完成标定,不用再做flash和ram的映射了,特别是当有多块标定数据要做标定时,这个功能简直丝滑。
相关文章:
英飞凌TC3xx-Overlay
目录 1.数据访问重定向 2.寄存器说明 3.Overlay功能配置 3.1 确认用于重定向的CPU 3.2 配置重定向Block大小 3.3 配置目标地址和重定向地址 4.结果验证 5.小结 今天说要开个专栏讲讲XCP标定,但在将标定之前,先把英飞凌专门为标定功能设计overlay…...
Win10系统有几种复制文件的命令,哪种最强大?
环境: Win10 专业版 问题描述: Win10系统有几种复制文件的命令,哪种最强大? 解决方案: 在 Windows 10 中,复制文件的命令有以下几种: 使用 xcopy 命令:xcopy 是一个功能强大的…...
力扣202.快乐数
原题链接:202.快乐数 要记住的就是,需要判断元素是否出现过,或者是否在集合里存在,就可以考虑用哈希法去做 因为是每一位都进行平方后相加得到新的数,所以需要单独写一个函数进行每位相加的运算得到最终的sum 不断重…...
iOS Xcode15 适配:Other Linker Flags:-ld_classic
0x00 适配是一条没有尽头的路 Xcode 14 毛问题都没有,Xcode 15 崩溃 看图说话 0x01 解决方案 Other Linker Flags 添加 -ld_classic 即可 0x02 我的小作品 欢迎体验我的作品之一:小挑战-XGame 拼图游戏,渐变色游戏,经典24点游…...
springboot苍穹外卖实战:六、redis(Spring Data Redis)
Spring Data Redis 简介 网址:https://spring.io/projects/spring-data-redis Spring Data Redis中提供了一个高度封装的类:RedisTemplate,对相关api进行了归类封装,将同一类型操作封装为operation接口,具体分类如下࿱…...
sqli 靶场 Level23-Level30 wp
level-23 (注释被过滤) 抓包,查看正常请求和响应。 略 尝试是否存在注入 id1’,id1’,成周期性变化 尝试 POC POC: id1andextractValue(1,concat(0x7e,user()))-- 结果:failed。怀疑–被过滤掉了,尝试…...
《完蛋!我被美女包围了》突然火了!世界首个开源贡献榜出炉丨 RTE 开发者日报 Vol.75
开发者朋友们大家好: 这里是 「RTE 开发者日报」 ,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE (Real Time Engagement) 领域内「有话题的 新闻 」、「有态度的 观点 」、「有意思的 数据 」、「有思考的 文…...
C++ Qt 学习(一):Qt 入门
Qt6 安装教程 0. 基础知识 0.1 qmake 和 cmake 对比 qmake:qt 独有的代码构建工具cmake:C 通用的代码构建工具,绝大部分 C 开源项目都使用 cmake 管理代码qt 项目,没有特殊要求,使用 qmake 即可 0.2 Qt 3 个窗口类的…...
高性能消息中间件 - Kafka3.x(三)
文章目录 高性能消息中间件 - Kafka3.x(三)Kafka Broker ⭐Kafka Broker概念Zookeeper(新版本可以不使用zk了)⭐Zookeeper的作用 Kafka的选举1:Broker选举Leader⭐Broker核心参数⭐案例:服役新节点和退役旧…...
【八】Linux成神之路
Linux成神之路 简介:最近梳理了一下自己linux系统的学习历程,感觉整个成长过程就很顺利,并没有走弯路,于是想着可以不可以把自己linux系统学习的路线记录下来,能够在大家成长的路上有一点帮助,就在这样的一…...
功能测试用例,需要详细到什么程度?
📢专注于分享软件测试干货内容,欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!📢交流讨论:欢迎加入我们一起学习!📢资源分享:耗时200小时精选的「软件测试」资…...
VScode远程连接错误:进程试图写入不存在的管道
使用VScode连接树莓派时,出现远程连接错误:进程试图写入不存在的管道 解决方案: (1)可以进入config所在文件夹,删除文件 (2)无法解决的化尝试下述方法 输入 Remotting-SSH:Settin…...
Python测试之Pytest详解
概要 当涉及到python的测试框架时,pytest是一个功能强大且广泛应用的第三方库。它提供简洁而灵活的方式来编写和执行测试用例,并具有广泛的应用场景。下面是pytest的介绍和详细使用说明: pytest是一个用于python单元测试的框架,它…...
uni-app微信小程序打开第三方地图
需求 小程序中有个按钮点击以后会调用手机中第三方地图进行导航。参数 位置信息 经度 与纬度。 实现方法 uni.openLocation({latitude: Number(地址纬度),longitude: Number(地址经度),name: 地址名称,address: 地址详情,success: function (res) {console.log(打开系统位置地…...
Android NDK开发详解之NDK 使用入门
Android NDK开发详解之NDK 使用入门 下载 NDK 和工具创建或导入原生项目 原生开发套件 (NDK) 是一套工具,使您能够在 Android 应用中使用 C 和 C 代码,并提供众多平台库,您可使用这些平台库管理原生 activity 和访问实体设备组件,…...
nmap指纹识别要点以及又快又准之方法
nmap指纹识别要点以及又快又准之方法 一. 前言:二. nmap识别实验:一. 实验一:IP配置:空间配置:扫描结果:详细输出二. 实验二:IP配置:空间配置:扫描结果:详细输出三. 实验三:IP配置:空间配置:扫描结果:详细输出四. 实验四:IP...
Rust编程基础之6大数据类型
1.Rust数据类型 在 Rust 中, 每一个值都属于某一个 数据类型(data type), 这告诉 Rust 它被指定为何种数据,以便明确数据处理方式。我们将看到两类数据类型子集:标量(scalar)和复合(compound&a…...
06 MIT线性代数-线性无关,基和维数Independence, basis, and dimension
1. 线性无关 Independence Suppose A is m by n with m<n (more unknowns than equations) Then there are nonzero solutions to Ax0 Reason: there will be free variables! A中具有至少一个自由变量,那么Ax0一定具有非零解。A的列向量可以线性组合得到零向…...
Kubernetes 概述以及Kubernetes 集群架构与组件
目录 Kubernetes概述 K8S 是什么 为什么要用 K8S K8S 的特性 Kubernetes 集群架构与组件 核心组件 Master 组件 Node 组件 编辑 Kubernetes 核心概念 常见的K8S按照部署方式 Kubernetes概述 K8S 是什么 K8S 的全称为 Kubernetes,Kubernetes 是一个可移植、可扩…...
GZ035 5G组网与运维赛题第9套
2023年全国职业院校技能大赛 GZ035 5G组网与运维赛项(高职组) 赛题第9套 一、竞赛须知 1.竞赛内容分布 竞赛模块1--5G公共网络规划部署与开通(35分) 子任务1:5G公共网络部署与调试(15分) 子…...
iOS 26 携众系统重磅更新,但“苹果智能”仍与国行无缘
美国西海岸的夏天,再次被苹果点燃。一年一度的全球开发者大会 WWDC25 如期而至,这不仅是开发者的盛宴,更是全球数亿苹果用户翘首以盼的科技春晚。今年,苹果依旧为我们带来了全家桶式的系统更新,包括 iOS 26、iPadOS 26…...
RocketMQ延迟消息机制
两种延迟消息 RocketMQ中提供了两种延迟消息机制 指定固定的延迟级别 通过在Message中设定一个MessageDelayLevel参数,对应18个预设的延迟级别指定时间点的延迟级别 通过在Message中设定一个DeliverTimeMS指定一个Long类型表示的具体时间点。到了时间点后…...
【Oracle APEX开发小技巧12】
有如下需求: 有一个问题反馈页面,要实现在apex页面展示能直观看到反馈时间超过7天未处理的数据,方便管理员及时处理反馈。 我的方法:直接将逻辑写在SQL中,这样可以直接在页面展示 完整代码: SELECTSF.FE…...
Appium+python自动化(十六)- ADB命令
简介 Android 调试桥(adb)是多种用途的工具,该工具可以帮助你你管理设备或模拟器 的状态。 adb ( Android Debug Bridge)是一个通用命令行工具,其允许您与模拟器实例或连接的 Android 设备进行通信。它可为各种设备操作提供便利,如安装和调试…...
Objective-C常用命名规范总结
【OC】常用命名规范总结 文章目录 【OC】常用命名规范总结1.类名(Class Name)2.协议名(Protocol Name)3.方法名(Method Name)4.属性名(Property Name)5.局部变量/实例变量(Local / Instance Variables&…...
Python ROS2【机器人中间件框架】 简介
销量过万TEEIS德国护膝夏天用薄款 优惠券冠生园 百花蜂蜜428g 挤压瓶纯蜂蜜巨奇严选 鞋子除臭剂360ml 多芬身体磨砂膏280g健70%-75%酒精消毒棉片湿巾1418cm 80片/袋3袋大包清洁食品用消毒 优惠券AIMORNY52朵红玫瑰永生香皂花同城配送非鲜花七夕情人节生日礼物送女友 热卖妙洁棉…...
tomcat入门
1 tomcat 是什么 apache开发的web服务器可以为java web程序提供运行环境tomcat是一款高效,稳定,易于使用的web服务器tomcathttp服务器Servlet服务器 2 tomcat 目录介绍 -bin #存放tomcat的脚本 -conf #存放tomcat的配置文件 ---catalina.policy #to…...
解析奥地利 XARION激光超声检测系统:无膜光学麦克风 + 无耦合剂的技术协同优势及多元应用
在工业制造领域,无损检测(NDT)的精度与效率直接影响产品质量与生产安全。奥地利 XARION开发的激光超声精密检测系统,以非接触式光学麦克风技术为核心,打破传统检测瓶颈,为半导体、航空航天、汽车制造等行业提供了高灵敏…...
Cilium动手实验室: 精通之旅---13.Cilium LoadBalancer IPAM and L2 Service Announcement
Cilium动手实验室: 精通之旅---13.Cilium LoadBalancer IPAM and L2 Service Announcement 1. LAB环境2. L2公告策略2.1 部署Death Star2.2 访问服务2.3 部署L2公告策略2.4 服务宣告 3. 可视化 ARP 流量3.1 部署新服务3.2 准备可视化3.3 再次请求 4. 自动IPAM4.1 IPAM Pool4.2 …...
SpringAI实战:ChatModel智能对话全解
一、引言:Spring AI 与 Chat Model 的核心价值 🚀 在 Java 生态中集成大模型能力,Spring AI 提供了高效的解决方案 🤖。其中 Chat Model 作为核心交互组件,通过标准化接口简化了与大语言模型(LLM࿰…...
