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,一经查实,立即删除!

相关文章

安装easy-handeye

一、aruco_ros配置 mkdir -p ~/ros_ws/src cd ~/ros_ws/src git clone -b melodic-devel https://github.com/pal-robotics/aruco_ros.git cd .. catkin_make 二、visp配置(需要联外网下载东西,不然会一直出问题) sudo apt-get install ros-melodic-…

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

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

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

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

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

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

Vue实现文件预览和下载功能的前端上传组件

Vue实现文件预览和下载功能的前端上传组件 一、前言1.准备工作1.1 创建 Vue 组件1.2 组件说明 2.注意事项 一、前言 在前端开发中,文件上传和预览是常见的功能需求之一。本文将介绍如何利用 Vue.js 结合 Element UI 的上传组件(el-upload)实…

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的…

Java使用线程实现异步运行

在Java中,实现异步运行的一个常用方式是使用Thread类。下面,我将给出一个详细且完整的示例,该示例将创建一个简单的异步任务,该任务将模拟一个耗时的操作(比如,模拟网络请求或文件处理)。 1. 使…

【MySQL】mysql访问

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

第9章:Electron的安全性

在开发Electron应用时,安全性是一个非常重要的考虑因素。由于Electron应用可以访问Node.js的全部API,以及使用Web技术开发界面,因此需要特别注意安全问题。本章将介绍如何提高Electron应用的安全性,包括禁用不必要的功能、设置内容…

Javascript中Object、Array、String

Object 在JavaScript中,Object 类型是一种复杂的数据类型,用于存储键值对集合。它提供了多种方法来操作这些键值对,以及执行其他常见的操作。这里,我列出了一些 Object 类型的常见方法或特性,它们在日常编程中非常有用…

开思通智网-科技快报20240704:全球首个,人工智能之城,AI填报志愿

【本周新进展】 天大开发全球首个可开源片上脑机接口智能交互系统 https://tech.opensnn.com/chip/article/2826792 AI系统绘出“多彩”大脑布线图 https://news.sciencenet.cn/htmlnews/2024/7/525678.shtm 北京亦庄将建全域人工智能之城 https://tech.opensnn.com/chip/arti…

基于深度学习的文本框检测

基于深度学习的文本框检测(Text Box Detection)是一项重要的计算机视觉任务,旨在从图像中自动检测和定位文本区域。它在光学字符识别(OCR)、自动文档处理、交通标志识别等领域具有广泛的应用。以下是关于这一领域的系统…

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

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

drawio打开不显示,不在当前屏幕的解决方案

如果把drawio拖在外接显示器,关机前没有拖回主屏幕,那么下次打开它时如果用的不是原来那个显示器,它就无法正常显示。在任务栏上能看到有它,但是就是显示不出来。 经过卸载和其他的方式没有解决,就想到了,应…

基于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…

代码随想录算法训练营Day59|110.字符串接龙、105.有向图的完全可达性、106.岛屿的周长

字符串接龙 110. 字符串接龙 (kamacoder.com) 主要参考代码随想录 代码随想录 (programmercarl.com) 目标&#xff1a;得到从beginStr转变为endStr所需的最少步数 过程&#xff1a;每次变换一个字母&#xff0c;每次变换的结果要在strList中。 对于一个图来说&#xff0c;…