首页 > 其他分享 >【S32DS项目实战系列】项目工程外设 之 C40_IP组件

【S32DS项目实战系列】项目工程外设 之 C40_IP组件

时间:2025-01-06 14:30:56浏览次数:3  
标签:C40 IP Fls Flash 擦除 S32DS ECC 闪存

前言:前面新建了一个工程但是没有任何驱动配置,接下来就教大家配置一下外设驱动的C40_IP


1,文件自定义管理

在S32DS IDE安装的目录下面的找到一下头文件,并复制到自建的文件夹里面用于自己建立的RTD库当中,当然这个是为了方面进行文件管理


2,C40_IP组件

简单介绍一下C40_IP组件:

C40_IPNXP S32K3系列芯片的一个外设驱动组件,主要用于管理嵌入式闪存(Embedded Flash Memory)的相关功能。在嵌入式系统中,Flash 是关键的非易失性存储器,C40_IP 组件封装了底层 Flash 控制器的访问和操作,使用户可以更轻松地进行Flash 读写、擦除、保护设置等操作

C40_IP组件的核心功能

  1. Flash 读写操作
    提供对 Flash 的读写访问,支持写入数据到 Flash 和从 Flash 中读取数据。

  2. Flash 擦除操作
    支持按扇区(sector)或块(block)对 Flash 进行擦除。擦除是 Flash 写入前的必要步骤,因为 Flash 只能在“擦除”后的空白区域中写入数据。

  3. 地址有效性检测
    组件会检查目标地址是否是有效的 Flash 地址,避免访问无效内存区域引发系统崩溃。

  4. Flash 操作状态反馈
    C40_IP 组件提供操作状态返回值,帮助用户检测 Flash 操作是否成功,或出现了哪些错误。

  5. 支持 Flash 保护
    组件可以配置 Flash 的写保护和读保护,防止未授权的访问或数据篡改。

  6. 支持 Flash ECC(Error Correction Code)
    提供对 Flash 数据的 ECC 机制支持,以确保存储数据的完整性和可靠性。

  7. 支持分区管理
    C40_IP 支持对 Flash 进行分区管理,使开发者可以根据应用需求将 Flash 分成不同的区域,用于不同类型的数据存储,比如:

    • 固件代码区
    • 配置参数区
    • 日志数据区

1、Name


2、FlsConfigSet


闪存驱动程序的运行时配置参数的容器。
实现类型:Fls ConfigType。


3、FlsGeneral


闪存驱动程序的一般参数的容器。这些参数总是预编译的。

Name


Enable development error check at IP level:
true: 启用了IP级别的开发错误检查。
false:禁用了IP级别的开发错误检查

Fls ECC Handling HardfaultHandler:
启用禁用API以向闪存驱动程序报告数据存储(ECC)错误的前置处理器开关。
这是第一种ECC处理方法,它修改程序计数器以跳过导致故障的指令。
有关更多信息,请阅读IM中出现ECC错误时的异常处理程序一章。
true:HardfaultHandler API的ECC检查已启用。
false:HardfaultHandler API的ECC检查被禁用。


Fls ECC Handling ProtectionHook:
启用禁用API以向闪存驱动程序报告数据存储(ECC)错误的前置处理器开关。
这是与AutosarOs兼容的第二种ECC处理方法。
有关更多信息,请阅读IM中出现ECC错误时的异常处理程序一章。
true: AutosarOs API的ECC检查已启用。
false:AutosarOs API的ECC检查被禁用。


Fls Erase Verification Enabled:
预处理器开关,用于启用或禁用擦除空白检查。
在闪存块被擦除之后,擦除空白检查将寻址的存储器区域的内容与擦除的闪存单元的值进行比较,以检查该块是否已被完全擦除。
true:内存区域被检查为已擦除。
false:未选中要擦除的内存区域。


Fls Write Verification Enabled:
预处理器开关,用于启用或禁用写验证检查。
在写入闪存块之后,写入验证检查将重新编程的存储器区域的内容与所提供的应用缓冲器的内容进行比较,以检查该块是否已被完全重新编程。
true:写入数据后直接进行比较。
false:写入日期不会在写入后直接进行比较。


Fls Timeout Supervision Enabled:
编译开关以启用超时监控。
true:已启用读取/擦除/写入/比较作业的超时监督。
false:已禁用读取/擦除/写入/比较作业的超时监督。


Fls Timeout Method:
用于FLS服务请求超时检测的计数器类型。
根据所选计数器类型,超时值将解释如下:
OSIF_COUNTER_DUMMY:统计等待循环的迭代次数。实际超时取决于许多参与者:操作类型、编译器优化、中断或系统中的其他任务等。
OSIF_COUNTER_SYSTEM:计数器系统微秒。
OSIF_COUNTER_CUSTOM:由定时服务的用户实现定义。


Fls Async Write Timeout:
Fls Async Write Timeout是异步模式下写入操作的超时值。


FIs Async Erase Timeout:
Fls Async Erase Timeout是异步模式下擦除操作的超时值。


Fls Sync Write Timeout:
Fls Sync Write Timeout是同步模式下写入操作的超时值。


Fls Sync Erase Timeout:
Fls Sync EraseTimeout是同步模式下擦除操作的超时值。


Fls Async Abort Timeout:
Fls Abort Timeout是中止正在进行的操作的超时值。


超时也用于Fls Cancel API和Abort Erase suspend;如果启用并且闪存硬件通道不支持立即中止功能。


4、AutosarExt


此容器包含Fls驱动程序的全局非自动存储配置参数。
这个容器是一个MultipleConfigurationContainer,即这个容器及其子容器在每个配置集存在一次。

Name


FIs Enable User Mode Support:
启用此参数后,FLS模块将适应从用户模式运行,并采取以下措施:
为Fls IP配置REG_PROT,以便通过将REG_PROT_GCR中的UAA位设置为1,可以从用户模式访问受保护的寄存器。
有关此平台的更多信息和可用性,请参阅IM中的用户模式支持一章。


Fls Synchronize Cache:
在每次闪存硬件操作后,通过使缓存无效来同步内存。
FLS驱动程序需要通过三种方法来保持内存一致性:
1.禁用数据缓存
2.将驱动程序操作的闪存区域配置为不可缓存
3.启用FlsSynchronizeCache功能。
根据应用程序配置,一个选项可能比另一个更有益。
启用:FLS驱动程序将调用Mcl缓存API函数,以便在每次高电压操作(写入、擦除)之后和每次读取操作之前使缓存无效,以确保缓存和修改后的闪存同步。
如果启用,驱动程序将尝试仅使缓存中修改的行无效。
如果要无效的区域的大小大于缓存大小的一半,则整个缓存无效。
注意:如果启用,则必须启用MclLmemEnableCacheApi参数,并将MCL插件作为依赖项包含在内。


FIs Data Error Suppression:
请参阅嵌入式闪存配置信息或受此字段影响的闪存块的系统内存映射。
禁用报告数据闪存访问的ECC事件。
Enable(启用)-数据闪存访问中的单比特和多位ECC事件被抑制。


Fls Block 4 Pipe Select:
选择用于访问内部闪存块4的管道。
PFLASH有四个独立的命令管道,用于向不同的闪存块发出四个并行读取命令。
对块4的访问可以通过以下任何命令管道:
FLS COMMAND PIPE 0-Block 4访问始终通过管道0。
FLS COMMAND PIPE 1-Block 4访问始终通过管道1。
FLS COMMAND PIPE 2-Block 4访问始终通过管道2。
FLS COMMAND PIPE 3-Block 4访问始终通过管道3。
FLS ANY_COMMAND PIPES块4访问可以通过任何命令管道,基于哪个命令管道可用于块4访问。


5、FlsPublishedInformation


CommonPublishedInformation容器未包含的其他已发布参数。
请注意,这些参数没有任何配置类设置,因为它们是已发布的信息。

  • Name
  • Fls Erased Value:已擦除的闪存单元的内容。
  • Fls ECC Value:ECC闪存线的内容。

3,设置C40组件并生成代码之后所遇到的编译的问题

笔者在生成这个代码并编译出现报错之后百思不得其解,不知道该如何下手解决这个问题,毕竟这个报错量太大了,并且还都是驱动库文件的报错。。。直到后面问了NXP的技术支持才知道是安装的IDE的驱动库文件可能存在重复问题。。。

后面就有硬着头皮重新装了一下S32DS环境,看下面的这个图所示,前面笔者有一篇文章专门介绍S32DS软件与驱动库文件安装的流程可以参考一下

S32DS软件安装教程_s32ds sdk-CSDN博客

只不过是前面介绍的是装了大概两个驱动文件,这里只安装下图一个驱动RTD库文件,结果。。。看最下面的图错误就消掉了,吐槽一下这个驱动做的对新手而言真的是很不友好。。。

 参考文章:

S32K344之C40_nxp fls synchronize cache-CSDN博客

 

标签:C40,IP,Fls,Flash,擦除,S32DS,ECC,闪存
From: https://blog.csdn.net/weixin_61678229/article/details/144611075

相关文章

  • 阿里云DDoS防护:如何更换IP地址,保护您的云服务器
    随着网络攻击日益增多,DDoS(分布式拒绝服务)攻击已经成为对企业和个人云资源的一大威胁。为了帮助用户抵御这类攻击,阿里云推出了强大的DDoS防护服务,保障您的云服务器免受恶意流量的影响。今天,九河云就来和大家聊聊当您的阿里云资源遭遇攻击时,如何通过更换IP地址来进一步加强防护。......
  • .cip 文件属于 CIPolicies(即“Configuration Integrity Policies”)的一部分,通常出现在
    在你的文件目录中,出现的.cip文件通常与Windows启动管理器和EFI系统分区(ESP,EFISystemPartition)相关。这些.cip文件一般用于管理EFI启动配置或安全策略。解释 .cip 文件的作用:.cip文件属于CIPolicies(即“ConfigurationIntegrityPolicies”)的一部分,通常出现在E......
  • E94 Tarjan边双缩点+树形DP P8867 [NOIP2022] 建造军营
    视频链接:E94Tarjan边双缩点+树形DPP8867[NOIP2022]建造军营_哔哩哔哩_bilibili  P8867[NOIP2022]建造军营-洛谷|计算机科学教育新生态//Tarjan边双缩点+树形DPO(n)#include<bits/stdc++.h>usingnamespacestd;intread(){intx=0,f=1;charc=getchar......
  • 谷云科技iPaaS V7.0+企业级AI Agent产品全新发布
    当下,大数据、人工智能等前沿技术迅猛发展,正以前所未有的速度重塑着企业IT集成的格局。谷云科技作为深耕国内集成领域多年的专业厂商,始终紧跟技术趋势变化,深度洞察客户需求,致力于以创新驱动为企业数字化转型赋能。近日,谷云科技的产品家族迎来重大更新,核心产品混合集成平台iPaaS......
  • TS 从入门到深度掌握,晋级TypeScript高手 - muke
    TypeScript从入门到深入的学习指南TypeScript是一种基于JavaScript的强类型编程语言,它为开发者提供了更好的代码质量、错误检测能力以及开发效率。本文将介绍如何系统地学习TypeScript,从基础到深入,并提供一些代码示例。学习地址:可免费学习......
  • RockyLinux9配置静态ip地址教程
    以往我们配置linux系统的ip地址是在 /etc/sysconfig/network-scripts/ifcfg-网卡名配置文件中编辑的,详情请见 Rocky8.10配置网络和主机名教程_rocky8配置网络-CSDN博客 但是在RockyLinux9系统中弃用了以前的这种方式,改为了新的配置方式。下面我们介绍一下新系统的配置方式......
  • #渗透测试#网络安全# 一文搞懂IDS与IPS的区别!!!
    免责声明本教程仅为合法的教学目的而准备,严禁用于任何形式的违法犯罪活动及其他商业行为,在使用本教程前,您应确保该行为符合当地的法律法规,继续阅读即表示您需自行承担所有操作的后果,如有异议,请立即停止本文章读。目录一、IPS和IDS的区别何为IDSIDS基本功能IDS分类分类......
  • JavaScript 的简写技巧
    JavaScript是一门强大且灵活的语言,拥有丰富的特性和语法糖。分享下16个最常用的JavaScript的简写技巧,掌握它们可以让我们编写出更简洁、更优雅的代码,并显著提升开发效率(增加摸鱼时间)。1.三元运算符简化条件判断//传统写法letresult;if(someCondition){result='y......
  • MySQL的for update skip locked
    最近有一个功能要是音频转文字以及翻译,该任务不仅耗时还消耗硬件,在硬件能够支持的情况下可以启动多台电脑一起处理任务加快速度,启动多个程序会出现处理同一个任务的问题,也就是并发的问题,趁机了解了一下mysql的FORUPDATESKIPLOCKED在MySQL中,FORUPDATESKIPLOCKED是一个......
  • pip 离线包下载一些方法
    有些时候我们需要进行离线下载pip包,方法很多,以下简单说明几种方法pipdownload会包含依赖,比较推荐的方法pipdownloadrequests-d./offline_packagespipwheel可以下载whl格式的包,但是只是单一包,缺少依赖相关的pipwheelrequests-w./offline_wheels直接在pypip网......