汽车标定技术(八)--MPC57xx是如何支持标定的页切换
目录
1.页切换的概念
1.1 标定常量的理解
1.2 页切换
2.MPC57xx的Overlay模块
3.小结
1.页切换的概念
在汽车标定测量中,有一个概念我想很多人都听过,但是实际上在项目里没有用到过,那就是今天要讲的页切换概念。在讲页切换的时候,我们先来理解Flash和RAM中的标定参数。
1.1 标定常量的理解
在写代码时, 通常我们对常量数据都会增加const类型,如下
const uint8 calibration_1 = 10;
编译后,calibration_1会存放在Flash的某个区域,我们可以通过hex和map去地址找到。
但实际上,标定参数对于ECU本身来说应该是常数,但是对于标定人员来说,它是可变的。如果标定人员直接通过map地址去修改值,那就会直接跑飞;如果通过擦除flash、写flash的方式进行标定,一是速度很慢,二是Flash不能按byte擦除。所以这就出现了在线标定的矛盾,既要快,还要方便。
有朋友可能会说,那我用EEPROM或者EEPROM emulation来做呀,也没问题,成本上去了,手撸Fee,慢慢调bug也是可以的。
为此,我们为了方便快速修改标定量,如果能把标定量存放到Flash,但加载到RAM运行,意味着CPU每次都到RAM中去取标定量的值,这个问题不久解决了吗?
#pragma section "cal_Ram"
const volatile uint8 calibraion_1 = 10;
链接文件修改为:
.cal_ram:
{...
} > WP_CAL AT > RP_CAL
意味着存放在RP_CAL这个Section里,实际运行在RAM,因此编译出来的地址为RAM地址。
上电启动时,把RP_CAL这里面的数据copy至WP_CAL即可。(后面单独出一篇说一下不同链接文件、标识符对于标定量地址的影响)
1.2 页切换
有了上述概念,我们在标定测量系统中经常看到的WP/RP,即Working Page和Reference Page,在ECU对应的外设分别是RAM和Flash,如下:
通常ECU是去FLASH获取常数的数据。但对于应用程序,将数据复制到RAM中,以便工具对其进行标定。ECU可以在RAM和FLASH之间随时切换,从而可以通过切换到安全的FLASH数据以随时纠正由于标定疏忽而可能出现的临界状态。
注意理解上面这句话,这表示ECU或者说是CPU对于某一个标定参数的访问地址可以随时通过页切换的指令来进行切换。这就有点神奇了,按理说一个常量经过链接文件编译出来出后的地址是固定的,CPU也只会根据这个地址去获取数据,那么这个页切换到底是如何做到的呢?
我们换个思路,既然CPU只会根据map文件定义的地址去获取标定数值,页切换的时候就是保证Flash值和RAM值的来回切换,这还不简单么,实现a(RAM)\b(Flash)互换,那就是 t = a,a = b,t一直保存,用于从RP切换到WP。
但这问题就来了,一旦WP很大,例如32K,copy的过程会比较耗费资源,且速度很慢,所以有些供应商页切换基本就没有做,毕竟上位机切到RP的时候自动变灰嘛,标不了,哈哈哈,但没法实现快速切到Flash参数。
所以我们就要来看看从芯片硬件层面有没有什么机制来快速实现切换呢?答案是有的,参考汽车标定技术(七)--英飞凌TC3xx_Overlay实现页切换-CSDN博客
2.MPC57xx的Overlay模块
除了英飞凌,NXP的MPC57系列同样也实现了overlay,但与英飞凌不一样的是,NXP的overlay实现在Flash/SRAM controller这一层,英飞凌在CPU这一层。我们具体来看。
首先是overlay系统框图:
CPU 发出的读访问通过AXBS传入到SRAM或者Flash controller;在标定期间,可以通过修改controller的overlay寄存器来改变路径。
以CPU访问Flash某个常量为例,路径为:CPU -> AXBS -> FMC -> Flash;如果此时overlay功能打开,那么路径就变为了 CPU->AXBS-> FMC->SRC->SRAM。可以看到,CPU的地址总线和数据总线路径仍然是朝Flash去的,但在FMC这里被转到了SRAM。
那么通过这个机制,就可以实现快速页切换;在WP时,打开overlay功能,这是访问的是RAM,可以随便进行修改,切换到RP时,关闭overlay功能,这时候就访问Flash了,同时upload到上位机,显示的也是Flash里的值,完美。伪代码如下:
if (WP == switchTarget)
{/* Enable Overlay */
}
else
{/* Disable Overlay */
}
3.小结
从上文,我们了解到页切换的本质,以及为什么要使用一个Flash和RAM对应的标定区域,分析了MPC57xx是如何实现overlay机制的基本原理。
相关文章:

汽车标定技术(八)--MPC57xx是如何支持标定的页切换
目录 1.页切换的概念 1.1 标定常量的理解 1.2 页切换 2.MPC57xx的Overlay模块 3.小结 1.页切换的概念 在汽车标定测量中,有一个概念我想很多人都听过,但是实际上在项目里没有用到过,那就是今天要讲的页切换概念。在讲页切换的时候&#…...

Ubuntu中增加交换内存
前言 在运行一些代码编译或者clang-format会占用大量的内存,此时可能会出现电脑卡死的情况,在ubuntu中可以通过增加交换内存来临时解决这个问题,相对于硬件改动成本更低,但是性能不如物理内存。 实践 查看当前的交换内存大小 …...

一文带您了解云渲染
很多刚刚接触云渲染的网友可能还不太了解云渲染,不知道云渲染是什么,不知道如何选择云渲染,不知道云渲染怎么收费,今天小编归纳总结了一些网友比较关心的问题,在本文中一一为大家解答。 云渲染是什么? 云…...

分享4个MSVCP100.dll丢失的解决方法
msvcp100.dll是一个重要的动态链接库文件,它是Microsoft Visual C 2010 Redistributable Package的一部分。这个文件的作用是提供在运行C程序时所需的函数和功能。如果计算机系统中msvcp100.dll丢失或者损坏,就会导致软件程序无法启动运行,会…...
国际腾讯云服务器流量收费准分析!!
腾讯云是腾讯公司供应的云核算服务,包含云服务器、云存储、数据库、CDN、安全等服务。本文将对腾讯云服务器流量收费标准进行具体的分析,协助用户了解腾讯云服务器的运用本钱。 腾讯云服务器流量收费标准首要分为包年包月、按需付费和按流量付费三种办法…...

Redis系列-四种部署方式-单机部署+主从模式+哨兵模式【7】
目录 Redis系列-四种部署方式-单机部署主从模式【7】redis-四种部署模式单机模式主从模式数据同步的方式全量数据同步增量数据同步 Redis哨兵模式总结缺点:哨兵模式应用sentinel.conf配置项 REF 个人主页: 【⭐️个人主页】 需要您的【💖 点赞关注】支持…...
Webpack 的作用和工作原理是什么?
Webpack 是一个现代的静态模块打包工具,它的作用是将前端应用程序的各种资源(如 JavaScript、CSS、图片等)视为模块,并将它们打包成可以在浏览器中运行的静态文件。它的主要功能包括模块打包、资源优化、代码分割、加载器转换等。…...

ros1 实现Server端自定义四 Topic模式控制海龟运动
一、服务模型 Server端本身是进行模拟海龟运动的命令端,它的实现是通过给海龟发送速度(Twist)的指令,来控制海龟运动(本身通过Topic实现)。 Client端相当于海龟运动的开关,其发布Request来控制…...
IntelliJ IDEA 2023.2.1 (Ultimate Edition) 版本 Git 如何找回被 Drop Commit 的提交记录
本心、输入输出、结果 文章目录 IntelliJ IDEA 2023.2.1 (Ultimate Edition) 版本 Git 如何找回被 Drop Commit 的提交记录前言查询 reflog 日志通过 Git Reset HEAD (hard) 找回已经 Drop Commit 的提交记录Git Reset HEAD (hard) 模式和 mixed 模式有啥区别git reset --h…...

C# 压缩PDF文件
PDF 文件可以包含文本、图片及各种媒体元素,但如果文件太大则会影响传输效果同时也会占用过多磁盘空间。通过压缩PDF文件,能够有效减小文件大小,从而提高传输效率并节省存储空间。想要通过C#代码快速有效地压缩 PDF 文件,下面是实…...

JS点击图片指定对象变色两种方法
要求:点击上面的颜色实现下面的图像变成相同的颜色 难点:对于js函数的this对象不太清楚如何传递 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>changeColor</title>&l…...

什么是浏览器指纹?指纹浏览器如何避免浏览器指纹的追踪识别?
在做独立站跨境电商的过程中,海外社交媒体平台已成为我们必不可少的交易渠道。但是,由于各大平台对账号管理极其严格,对账户进行严密监控也成为了常态。这当然与浏览器指纹识别有关,今天龙哥就给大家科普一下什么是浏览器指纹&…...

uni-app 、Spring Boot 、ant Design 打造的一款跨平台包含小说(仿真翻页、段落听书)、短视频、壁纸等功能含完备后台管理的移动应用
简介 咪哩快看,为用户提供优质阅读,短视频,共同记录美好生活的移动应用,并含有一套完备的后台管理体系,助力开发者快速数字化,开启你的财富之门! 官网: https://miliqkdoc.motopa.…...

STM32-EXTI中断
EXTI简介 EXTI(Extern Interrupt)外部中断 EXTI可以监测指定GPIO口的电平信号,当其指定的GPIO口产生电平变化时,EXTI将立即向NVIC发出中断申请,经过NVIC裁决后即可中断CPU主程序,使CPU执行EXTI对应的中断程…...

2023云栖大会,Salesforce终敲开中国CRM市场
2015年被视为中国CRM SaaS元年,众多CRM SaaS创业公司和厂商在Salesforce的榜样作用下涌入了CRM SaaS赛道。在全球市场,Salesforce是CRM SaaS领域的领导厂商,连续多年占据了全球CRM SaaS第一大厂商地位。然而,Salesforce作为业务类…...

工业镜头接口类型
现有产品主要有以下接口 1、C:最常见的工业相机接口,受限于接口物理尺寸大小,最大靶面目前是4/3” 2、M42:M421.0,2k和4k线阵相机使用 3、M58S:M580.75,大靶面相机使用,可以转C(限于CH080相机,靶面4/3”),可以转F,可以…...
生产环境中oracle dba权限检查和回收相关命令汇总
一、oracle dba权限检查和回收的作用和意义 在Oracle数据库生产环境中,回收oracle dba权限的作用和意义重大,具体表现在以下三方面: 安全性:回收赋权检查和回收可以确保数据库中的权限控制得到有效管理。通过检查和回收权限&…...
实现微信转账到零钱经验
最近写微信转账到零钱的功能。 微信 商家转账到零钱 一-CSDN博客 微信 商家转账到零钱 二-CSDN博客 除了基本接口处理,也要兼顾系统财务安全,和异常处理情况。中心思想就是实现功能的同时,别给自己找事…… 本次开发在原有基础上二开。采…...
SpringCloud——负载均衡——OpenFeign
Feign是一个声明式的客户端接口,相比RestTemplate,更好的简化了微服务之间的调用方式。而且Feign默认集成了Ribbon,可以实现负载均衡。 1.OpenFeign与Feign OpenFeign在Feign的基础上支持SpringMVC的注解。OpenFeign的FeignClient可以解析Re…...
力扣370周赛
力扣第370场周赛 找到冠军 I 答案即入度为0的点 class Solution { public:int findChampion(vector<vector<int>>& grid) {vector<int>d(1005);int n grid.size() , m grid[0].size();for(int i 0 ; i < n ; i ){for(int j 0 ; j < m ; j )…...

AI-调查研究-01-正念冥想有用吗?对健康的影响及科学指南
点一下关注吧!!!非常感谢!!持续更新!!! 🚀 AI篇持续更新中!(长期更新) 目前2025年06月05日更新到: AI炼丹日志-28 - Aud…...

大话软工笔记—需求分析概述
需求分析,就是要对需求调研收集到的资料信息逐个地进行拆分、研究,从大量的不确定“需求”中确定出哪些需求最终要转换为确定的“功能需求”。 需求分析的作用非常重要,后续设计的依据主要来自于需求分析的成果,包括: 项目的目的…...
React hook之useRef
React useRef 详解 useRef 是 React 提供的一个 Hook,用于在函数组件中创建可变的引用对象。它在 React 开发中有多种重要用途,下面我将全面详细地介绍它的特性和用法。 基本概念 1. 创建 ref const refContainer useRef(initialValue);initialValu…...

C++使用 new 来创建动态数组
问题: 不能使用变量定义数组大小 原因: 这是因为数组在内存中是连续存储的,编译器需要在编译阶段就确定数组的大小,以便正确地分配内存空间。如果允许使用变量来定义数组的大小,那么编译器就无法在编译时确定数组的大…...

LINUX 69 FTP 客服管理系统 man 5 /etc/vsftpd/vsftpd.conf
FTP 客服管理系统 实现kefu123登录,不允许匿名访问,kefu只能访问/data/kefu目录,不能查看其他目录 创建账号密码 useradd kefu echo 123|passwd -stdin kefu [rootcode caozx26420]# echo 123|passwd --stdin kefu 更改用户 kefu 的密码…...
Java编程之桥接模式
定义 桥接模式(Bridge Pattern)属于结构型设计模式,它的核心意图是将抽象部分与实现部分分离,使它们可以独立地变化。这种模式通过组合关系来替代继承关系,从而降低了抽象和实现这两个可变维度之间的耦合度。 用例子…...
C#中的CLR属性、依赖属性与附加属性
CLR属性的主要特征 封装性: 隐藏字段的实现细节 提供对字段的受控访问 访问控制: 可单独设置get/set访问器的可见性 可创建只读或只写属性 计算属性: 可以在getter中执行计算逻辑 不需要直接对应一个字段 验证逻辑: 可以…...
人工智能 - 在Dify、Coze、n8n、FastGPT和RAGFlow之间做出技术选型
在Dify、Coze、n8n、FastGPT和RAGFlow之间做出技术选型。这些平台各有侧重,适用场景差异显著。下面我将从核心功能定位、典型应用场景、真实体验痛点、选型决策关键点进行拆解,并提供具体场景下的推荐方案。 一、核心功能定位速览 平台核心定位技术栈亮…...

解析两阶段提交与三阶段提交的核心差异及MySQL实现方案
引言 在分布式系统的事务处理中,如何保障跨节点数据操作的一致性始终是核心挑战。经典的两阶段提交协议(2PC)通过准备阶段与提交阶段的协调机制,以同步决策模式确保事务原子性。其改进版本三阶段提交协议(3PC…...

基于单片机的宠物屋智能系统设计与实现(论文+源码)
本设计基于单片机的宠物屋智能系统核心是实现对宠物生活环境及状态的智能管理。系统以单片机为中枢,连接红外测温传感器,可实时精准捕捉宠物体温变化,以便及时发现健康异常;水位检测传感器时刻监测饮用水余量,防止宠物…...