TC3xx NvM小细节解读

目录

1.FlsLoader Driver和FlsDmu Driver

2. FlsLoader小细节

3.小结


大家好,我是快乐的肌肉,今天聊聊TC3xx NvM相关硬件细节以及MCAL针对NvM的驱动。

1.FlsLoader Driver和FlsDmu Driver

在最开始做标定的时候,认为标定数据既然是数据,那么想当然就应该放置到DFlash;

但是做诊断的同事就纳闷了:那DTC、DID这些数据咋和标定数据区分呢?还得预留一段空间给标定数据,没这么搞过呀。

后来老板数你要么就用FlsLoader的接口,把数据存到PFlash,不要和诊断内容搅到一起了。

所以当时问题就出来了:FlsLoader接口是啥?为啥在一个包里既有Fls_Dmu Driver,还有FlsLoader Driver。

今天在整理笔记的时候翻到了,又细读了相关代码,觉得很有意思,分享给大家。

英飞凌针对TC3xx发布了多个MCAL包,包括Basic和CD(Complex Driver) package;

  • Basic Package里提供了Fee Driver和Fls_Dmu Driver;
  • CD Package里提供了FlsLoader Driver。

Fls_Dmu Driver

该驱动用于支持AUTOSAR中定义的标准功能,主要针对DFlash0的初始化和读写擦,因此它这个scope仅限于DFlash。

这是符合CP AUTOSAR FlashDrvie的Scope定义(仅用于Flash EEPROM):

In application mode of the ECU, the flash driver is only to be used by the Flash EEP
ROM emulation module for writing data. It is not intended to write program code to
flash memory in application mode. This shall be done in boot mode which is out of
scope of AUTOSAR.

那如果想要刷写PFlash上的内容,就得在复杂驱动里找找答案了,例如FlsLoader Driver

FlsLoader Driver

用于操作所有PFlash 和DFlash0,包括初始化、PFlash的读写擦,以及针对Flash的上锁和解锁。

有了这个理解之后,我们再来看看代码里的小细节。

2. FlsLoader小细节

 FlsLoader_Erase接口很有意思,他的入参包括TargetAddress和Length;我们很容易想当然这里给的参数就应该是目标擦除地址和长度(0x10000),但实际上再往下看代码逻辑时会发现这个Length对应的是即将要擦除的Sector个数,这样就对应的是DMU 命令序列 Erase sector nn。

因此调用该接口时应该简单计算下需要擦几个Sector,也不是以前的目标地址+实际长度。

我们接着手册看看关于该命令序列出现SQER(Sequence Error),最让我困惑的是关于PFlash Size的判断,如下:

以TC37x为例,明明有2个PFlash Bank,每个Bank容量为3MB,但为什么每次只能擦除512K/16K = 32 ,难道说这里面有什么物理限制吗?

我们来看看PFlash的结构组成,它是有3个1 MB物理Sector组合为一个3MB的Bank,每个物理Sector划分为64个逻辑Sector(64*16),如下:

手册里特别强调的是每个物理Sector之间是独立的,并且最大Erase Size为512KB,因此我们在代码逻辑里首先会看到判断是否超最大擦除大小了,这点我最开始想了很久,如下:

 其次,如果是跨物理Sector的擦写,在代码实现里还特别多出了一步:判断是否超出了1MB的范围,如超出了,需要使用两次erase cmd命令序列,如下图:

这里确实很神奇,不知道这个是否和本身它的这个Flash IP特性相关,不支持跨PS擦除。

3.小结

分析它的代码,主要还是要完善自己的驱动知识库,感觉每家的Flash操作大不相同,所以多看多学,才能见怪不怪,哈哈。 

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

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

相关文章

比赛获奖的武林秘籍:02 国奖秘籍-大学生电子计算机类竞赛快速上手的流程,小白必看

比赛获奖的武林秘籍:02 国奖秘籍-大学生电子计算机类竞赛快速上手的流程,小白必看 摘要 本文主要介绍了大学生参加电子计算机类比赛(电赛、光电设计大赛、计算机设计大赛、嵌入式芯片与系统设计大赛等比赛)的流程和涉及到的知识…

3dmax全景图用什么渲染软件好?渲染100邀请码1a12

全景图是常见的效果图类型,常用于展示大型空间,如展厅、会议室等。全景图的制作需要渲染,下面我介绍几个常用的渲染软件分享给大家。 1、V-Ray:十分流行的渲染引擎,功能强大,它提供了高质量的光线追踪技术…

六、资产安全—信息分级资产管理与隐私保护练习题(CISSP)

六、资产安全—信息分级资产管理与隐私保护(CISSP): 六、资产安全—信息分级资产管理与隐私保护(C

RAM和ROM的区别

RAM和ROM的区别 RAM和ROM都是用来存东西的,比如我们熟悉的CPU缓存、电脑和手机的内存就是属于RAM,而固态硬盘、U盘,还有我们买手机时候说的32G、64G的存储空间,就属于ROM。RAM和ROM的区别,简单说就是RAM在断电之后&am…

正则表达式语法+常用正则表达式

1. 简介 1> 正则表达式(Regular Expression)是一种文本模式,包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为"元字符"),可以用来描述和匹配字符串的特定模式 2> 正则表达…

沙龙回顾|MongoDB如何充当企业开发加速器?

数据不仅是企业发展转型的驱动力,也是开发者最棘手的问题。前日,MongoDB携手阿里云、NineData在杭州成功举办了“数据驱动,敏捷前行——MongoDB企业开发加速器”技术沙龙。此次活动吸引了来自各行各业的专业人员,共同探讨MongoDB的…

【MySQL】mysql访问

mysql访问 1.引入MySQL 客户端库2.C/C 进行增删改3.查询的处理细节4.图形化界面访问数据库4.1下载MYSQL Workbench4.2MYSQL Workbench远程连接数据库 点赞👍👍收藏🌟🌟关注💖💖 你的支持是对我最大的鼓励&a…

快递物流运输中的锁控系统优缺点探讨

一、物流运输中锁控系统的重要性 1.1 保障货物安全 在物流运输过程中,货物安全是物流公司最为关注的问题之一。传统机械锁虽然在一定程度上提供了安全保障,但其缺点逐渐暴露,成为物流运输中的一个痛点。 易被破解:传统机械锁通…

基于MCU平台的HMI开发的性能优化与实战(下)

继上篇《基于MCU平台的HMI开发的性能优化与实战(上)》深入探讨了提升MCU平台HMI开发效率和应用性能的策略后,本文将专注于NXP i.MX RT1170 MCU平台的仪表盘开发实践。我们将重点介绍Qt for MCUs的优化技巧,展示如何通过实际案例应…

Qt:7.QWidget属性介绍(cursor属性-光标形状、font属性-控件文本样式、tooltip属性-控件提示信息)

目录 一、cursor属性-光标形状: 1.1cursor属性介绍: 1.2获取当前光标形状——cursor(): 1.3 设置光标的形状——setCursor(): 1.4 设置自定义图片为光标: 二、font属性-控件文本样式: 2.1font属性介绍…

antd-Table-可视化数据滚动

代码 // 使用方式 const Index () > {useScroll();return <Table />; }import { useEffect, useRef, useState } from react;export const useScroll (() > {let timer;function start() {const [isScroll, setIsScroll] useState(true);const scrollTopRef u…

excel批量修改一列单价的金额并保留1位小数

1.打开表格&#xff0c;要把单价金额变成现在的两倍&#xff0c;数据如下&#xff1a; 2.把单价这一列粘贴到一个新的sheet页面&#xff0c;在B2单元格输入公式&#xff1a;A2*2 然后按enter回车键,这时候吧鼠标放到B2单元格右下角&#xff0c;会出现一个黑色的小加号&#xf…

重大更新来袭!!《植物大战僵尸杂交版V2.1+修改器+融合版》

大家好&#xff01;每个软件更新总是令人兴奋不已。前段时间介绍的《植物大战僵尸》系列以其独特的策略玩法和丰富的植物角色&#xff0c;赢得了很多玩家的喜爱。而在今天&#xff0c;这款经典游戏全网最新版本——《植物大战僵尸&#xff1a;杂交版V2.1》正式推出&#xff0c;…

Redis组建哨兵模式

主172.17.60.131 从172.17.60.130、172.17.60.129 redis部署 [rootlocalhost app]# tar xf redis-6.2.9.tar.gz [rootlocalhost app]# cd redis-6.2.9/ [rootlocalhost redis-6.2.9]# make MALLOClibc [rootlocalhost redis-6.2.9]# make install PREFIX/usr/local/redis…

【MySQL系列】隐式转换

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

ctfshow web入门 nodejs

web334 有个文件下载之后改后缀为zip加压就可以得到两个文件 一个文件类似于index.php 还有一个就是登录密码登录成功就有flag username:ctfshow password:123456因为 return name!CTFSHOW && item.username name.toUpperCase() && item.password passwor…

产科管理系统 专科电子病历系统源码,前后端分离架构,多家医院产科广泛运用,系统稳定,功能齐全

产科管理系统 专科电子病历系统源码&#xff0c;前后端分离架构&#xff0c;多家医院产科广泛运用&#xff0c;系统稳定&#xff0c;功能齐全 产科管理系统&#xff0c;特别是产科信息管理系统&#xff08;Obstetrical Information Management System&#xff0c;简称OIMS&…

智能井盖监测系统:守护城市安全的新防线

​ ​​在快速发展的现代都市中&#xff0c;井盖作为连接地上与地下世界的“隐形门”&#xff0c;其安全状态直接关系到市民的生命财产安全。随着物联网、大数据及人工智能技术的飞速发展&#xff0c;智能井盖监测系统的出现为解决传统井盖管理难题提供了创新方案&#xff0…

【算法笔记自学】入门篇(2)——算法初步

4.1排序 自己写的题解 #include <stdio.h> #include <stdlib.h>void selectSort(int A[], int n) {for(int i 0; i < n - 1; i) { // 修正索引范围int k i;for(int j i 1; j < n; j) { // 修正索引范围if(A[j] < A[k]) {k j;}}if (k ! i) { // 仅在…

跨境人最怕的封店要怎么规避?

跨境人最怕的是什么&#xff1f;——封店 造成封店的原因很多&#xff0c;IP关联、无版权售卖、虚假发货等等&#xff0c;其中IP关联这个问题导致店铺被封在跨境商家中简直是屡见不鲜 IP关联&#xff0c;是指被海外平台检测到多家店铺开设在同一个站点上的情况。我们知道有些…