汽车标定技术(八)--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机制的基本原理。 

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

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

相关文章

手机怎么打包?三个方法随心选!

有的时候,电脑不在身边,只有随身携带的手机,这个时候又急需把文件打包发送给同事或者同学,如何利用手机操作呢?下面介绍了具体的操作步骤。 一、通过手机文件管理自带压缩功能打包 1、如果是iOS系统,就在手…

【PHP函数封装】分分钟帮你实现数据脱敏处理, 支持手机号码、邮箱、身份证号 中文字符串!

🚀 个人主页 极客小俊 ✍🏻 作者简介:web开发者、设计师、技术分享博主 🐋 希望大家多多支持一下, 我们一起进步!😄 🏅 如果文章对你有帮助的话,欢迎评论 💬点赞&#x1…

MIPSsim模拟器 使用说明

(一) 启动模拟器 双击MIPSsim.exe,即可启动该模拟器。模拟器启动时,自动将自己初始化为默认状态。所设置的默认值为: u所有通用寄存器和浮点寄存器为全0; u内存清零; u流水寄存器为全0&#xff…

【ElasticSearch系列-06】Es集群架构的搭建以及集群的核心概念

ElasticSearch系列整体栏目 内容链接地址【一】ElasticSearch下载和安装https://zhenghuisheng.blog.csdn.net/article/details/129260827【二】ElasticSearch概念和基本操作https://blog.csdn.net/zhenghuishengq/article/details/134121631【三】ElasticSearch的高级查询Quer…

P1547 [USACO05MAR] Out of Hay S 题解

文章目录 题目描述输入格式输出格式样例样例输入样例输出 完整代码 题目描述 Bessie 计划调查 N N N( 2 ≤ N ≤ 2 000 2 \leq N \leq 2\,000 2≤N≤2000)个农场的干草情况,它从 1 1 1 号农场出发。农场之间总共有 M M M( 1 ≤…

深入理解ClickHouse跳数索引

一、跳数索引​ 影响ClickHouse查询性能的因素很多。在大多数场景中,关键因素是ClickHouse在计算查询WHERE子句条件时是否可以使用主键。因此,选择适用于最常见查询模式的主键对于表的设计至关重要。 然而,无论如何仔细地调优主键&#xff…

14:00面试,14:06就出来了,问的问题有点变态。。。。。。

从小厂出来,没想到在另一家公司又寄了。 到这家公司开始上班,加班是每天必不可少的,看在钱给的比较多的份上,就不太计较了。没想到5月一纸通知,所有人不准加班,加班费不仅没有了,薪资还要降40%…

跨境电商:自养买家账号测评,你需要了解的细节

在跨境电商的浪潮中,自养买家账号测评已经成为了一种趋势。近期,不少跨境卖家咨询自养买家账号测评的相关问题,看来有必要再讲解一下卖家测评的一些细节。今天将着重介绍自养号测评的相关内容。 首先,什么叫做自养号测评呢&#x…

pytest + yaml 框架 -58.运行报告总结summary.json

前言 用例运行结束后,在本地生成summary.json 文件,总结运行结果。 v1.5.1版本更新内容: 1.解决参数化,中文在控制台输出问题 2.保存用例结果summary.json 保存用例结果summary.json 命令行执行用例 pytest运行结束&#xff0…

【Unity插件】分享几个完全免费的2D角色动画生成器(推荐收藏)

文章目录 前言一、lpc-character-generator二、Universal-LPC-Spritesheet-Character-Generator三、UP主开发的2D人物换装系统四、Character Editor: Megapack完结 前言 你可能游戏开发能力很强,但是正愁于2D角色动画,那么这篇文章就是为你而准备的&…

RISC Zero的Bonsai证明服务

1. 引言 Bonsai为通用ZKP网络,其支持任意链、任意协议、以及任意应用,利用ZKP来扩容、隐私和互操作。Bonsai的目标是为每条链都提供无限计算的能力。 借助Bonsai,可仅需数天的开发,即可实现对以太坊、L1链、Cosmos app链、L2 ro…

【FastCAE源码阅读7】视图方向切换按钮实现原理

在FastCAE工具栏上有视图切换按钮,如下图所示: 本文介绍如何实现。 FastCAE集成了Python解析器,当单击按钮时,中间用Python执行的,最后调用MainWindow.dll库接口实现的。 具体的Python代码在Python模块的py文件夹下的…

Postman汉化教程

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 Postman汉化教程 前言 前言 Postman是一款支持http协议的接口调试与测试工具,其主要特点就是功能强大,使用简单且易用性好 。无论是开发人员进行接口…

uniapp小程序才到第五层就报错navigateto:fail webview count limit exceed

错误截图 原因 小程序官方描述是说可以跳转10层,但是使用uniapp开发的程序在小程序中才运行到第五层就报错了,原因是因为没有设置appId。如果设置了就正常了。

文件缓存的读写

文件系统的读写,其实就是调用系统函数 read 和 write。下面的代码就是 read 和 write 的系统调用,在内核里面的定义。 SYSCALL_DEFINE3(read, unsigned int, fd, char __user *, buf, size_t, count) {struct fd f fdget_pos(fd); ......loff_t pos f…

数据分析是什么?

第一章- 数据分析是什么 数据分析是指 根据分析目的,用适当的分析方法及工具,对数据进行分析,提取有价值的信息,形成有效结论的过程。 数据分析的作用 通过观察数据,知道当前发生什么?通过具体的数据拆解…

Webpack 中 loader 的作用是什么?常用 loader 有哪些?

说说webpack中常见的Loader?解决了什么问题?- 题目详情 - 前端面试题宝典 1、loader 是什么 loader是 webpack 最重要的部分之一。 通过使用不同的 loader,我们能够调用外部的脚本或者工具,实现对不同格式文件的处理。 loader…

嵌入式养成计划-48----QT--信息管理系统:百川仓储管理

一百二十二、信息管理系统:百川仓储管理 122.1 UI界面 122.2 思路 客户端: 用户权限有两种类型,一种是用户权限,一种是管理员权限,登录时服务器端会根据数据库查询到的此用户名的权限返回不同的结果,客户…

Semantic-Guided Zero-Shot Learning for Low-Light ImageVideo Enhancement

论文阅读之无监督低光照图像增强 Semantic-Guided Zero-Shot Learning for Low-Light Image/Video Enhancement 代码: https://github.com/ShenZheng2000/SemantiGuided-Low-Light-Image-Enhancement 在低光条件下增加亮度的一个可行方法是使用更高的ISO或更长时间…

仿mudou库one thread one loop式并发服务器

目录 1.实现目标 2.HTTP服务器 实现高性能服务器-Reactor模型 模块划分 SERVER模块: HTTP协议模块: 3.项目中的子功能 秒级定时任务实现 时间轮实现 正则库的简单使用 通⽤类型any类型的实现 4.SERVER服务器实现 日志宏的封装 缓冲区Buffer…