TC3xx NvM小细节解读

news2025/1/11 16:49:42

目录

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.coloradmin.cn/o/1897822.html

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

相关文章

Java传引用问题

本文将介绍 Java 中的引用传递,包括其定义、实现方式、通过引用修改原来指向的内容和通过引用修改当前引用的指向的区别 目录 1、引用传递的概念 2、引用传递的实现方式 3、传引用会发生的两种情况: 通过引用修改当前引用的指向 通过引用修改原来指…

C++基础(七):类和对象(中-2)

上一篇博客学的默认成员函数是类和对象的最重要的内容,相信大家已经掌握了吧,这一篇博客接着继续剩下的内容,加油! 目录 一、const成员(理解) 1.0 引入 1.1 概念 1.2 总结 1.2.1 对象调用成员函数 …

人工智能系列-NumPy(二)

🌈个人主页:羽晨同学 💫个人格言:“成为自己未来的主人~” 链接数组 anp.array([[1,2],[3,4]]) print(第一个数组:) print(a) print(\n) bnp.array([[5,6],[7,8]]) print(第二个数组:) print(b) print(\n) print…

web基础与HTTP协议(企业网站架构部署与优化)

补充:http服务首页文件在/var/www/html下的,一定是index.html命名的文件。才会显示出来。 如果该路径下没有相应的文件,会显示/usr/share/httpd/noindex下的index.html文件。 如果/usr/share/httpd/noindex没有index.html文件,会…

使用Llama3/Qwen2等开源大模型,部署团队私有化Code Copilot和使用教程

目前市面上有不少基于大模型的 Code Copilot 产品,部分产品对于个人开发者来说可免费使用,比如阿里的通义灵码、百度的文心快码等。这些免费的产品均通过 API 的方式提供服务,因此调用时均必须联网、同时需要把代码、提示词等内容作为 API 的…

2024年亚太中文赛数学建模竞赛B题 洪水灾害的数据分析与预测详细思路解析

2024年亚太中文赛数学建模竞赛B题 洪水灾害的数据分析与预测详细思路解析 解题方法: 首先就是对数据进行数据的预处理包括缺失值和异常值处理,之后就是分析哪些指标与洪水的发生有着密切的关联,可以使用相关性分析(建议使用斯皮尔…

WMS,OMS,TMS三者之间是什么关系?

WMS、OMS 和 TMS 是供应链管理中的三个重要系统,它们分别管理仓库、订单和运输的不同方面。 三者的功能: 1、WMS (Warehouse Management System) - 仓库管理系统: 1):主要负责仓库内部的操作和管理,包括库存管理、仓储空间优化、…

4K Tokkit Pro for Mac:轻松管理TikTok的利器

在TikTok的海洋中畅游,你是否想有一个得力助手来帮你高效管理你的账号?4K Tokkit Pro for Mac正是你的不二之选! 这款专为Mac用户打造的TikTok管理工具,拥有简洁的界面和强大的功能,让你轻松下载、管理和分享喜欢的Ti…

【算法笔记自学】入门篇(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) { // 仅在…

[SAP ABAP] 版本管理

版本管理是指软件开发过程中各种程序代码、配置文件以及说明文档等文件变更的管理 生成版本 版本管理 对比版本 点击上述版本管理即可进行版本对比操作 补充扩展 我们可以使用事务码SE10对传输请求进行创建、修改、删除、合并以及更改所有者等操作 使用事务码SCC1进行不同cl…

微观特征轮廓尺寸测量:光学3D轮廓仪、共焦显微镜与台阶仪的应用

随着科技进步&#xff0c;显微测量仪器以满足日益增长的微观尺寸测量需求而不断发展进步。多种高精度测量仪器被用于微观尺寸的测量&#xff0c;其中包括光学3D表面轮廓仪&#xff08;白光干涉仪&#xff09;、共聚焦显微镜和台阶仪。有效评估材料表面的微观结构和形貌&#xf…

免费代理 IP 如何泄露您的个人信息?

互联网时代&#xff0c;信息安全和隐私保护成为人们关注的焦点。很多用户出于各种需要&#xff0c;使用代理服务器浏览网页或进行其他网络活动&#xff0c;其中免费代理IP因其免费的特点而受到广泛青睐。然而&#xff0c;免费代理IP并不总是一个安全可靠的选择&#xff0c;它们…

新架构下服务建模,关键在这6步!

随着AUTOSAR、SOA、以太网通讯等新技术、新理念的成熟化&#xff0c;面向软件、硬件、网络、电气等多领域的电子电气系统经历了多代架构方法论的迭代。如何跟随新技术和新理念的浪潮&#xff0c;构建起新型的汽车电子电气架构平台&#xff0c;以实现新老技术的快速更替和融合&a…

塑料颗粒烘干机相关制作技术

网盘 https://pan.baidu.com/s/1urgMadWbneDT-HNOZFwZOw?pwd5idr 再生塑料颗粒用烘干装置.pdf 塑料制品加工用颗粒烘干装置.pdf 塑料颗粒烘干机.pdf 塑料颗粒生产加工用循环烘干装置.pdf 塑料颗粒用高效率烘干装置.pdf 颗粒物料烘干机.pdf

windows启动Docker闪退Docker desktop stopped

Windows启动Docker闪退-Docker desktop stopped 电脑上很早就安装有Docker了&#xff0c;但是有一段时间都没有启动了&#xff0c;今天想启动启动不起来了&#xff0c;打开没几秒就闪退&#xff0c;记录一下解决方案。仅供参考 首先&#xff0c;参照其他解决方案&#xff0c;本…

Servlet与Servlet容器

什么是Servlet? Servlet是Java EE&#xff08;现称Jakarta EE&#xff09;中的一个组件&#xff0c;通常用于创建动态Web内容。Servlet是运行在Web服务器上的Java程序&#xff0c;它处理客户端的请求并生成响应。Servlet的核心功能是处理HTTP请求和响应。下面是一个servlet例…

imx6ull/linux应用编程学习(11)CAN应用编程基础

关于裸机的can通信&#xff0c;会在其他文章发&#xff0c;这里主要讲讲linux上的can通信。 与I2C,SPI等同步通讯方式不同&#xff0c;CAN通讯是异步通讯&#xff0c;也就是没有时钟信号线来保持信号接收同步&#xff0c;也就是所说的半双工&#xff0c;无法同时发送与接收&…

YARN运行流程源码分析

一、yarn任务执行流程图 在分析任务之前先走一下yarn内部的流程细节。 二、RM 内部处理提交阶段运行流程 如上图流程所示&#xff1a; 1.client 提交任务给yarn&#xff0c;yarn 这边会获取任务的AM相关资源&#xff0c;client在提交阶段会上传job.split &#xff08;数据切分…

Mysql-01-主从搭建

一、安装Mysql 下载 https://downloads.mysql.com/archives/community/ 安装 注意顺序 tar -xvf mysql-8.0.38-1.el9.x86_64.rpm-bundle.tar rpm -ivh mysql-community-common-8.0.38-1.el9.x86_64.rpm rpm -ivh mysql-community-client-plugins-8.0.38-1.el9.x86_64.r…

Vue3重构案例(使用vue3的语法重构element的button组件)

这篇文章紧接的上一篇文章&#xff0c;上篇文章是对给element的button组件写了一个单元测试&#xff0c;这篇文章是使用vue3的语法进行重构&#xff0c;这里说一下单元测试和重构的联系&#xff0c;当你给组件写了单元测试之后&#xff0c;重构会减少你很多的debug时间&#xf…