S32DS踩坑日记三-使用EEPROM

news2024/11/20 20:25:58

这个片子的EEPROM是用普通的flash模拟的,所以配置比较复杂。需要先增加flash,然后再配置模拟EEPROM那块的电路。

这个模拟的大概意思是这样:片子内置一块用于数据存储的flash,叫D-flash,大小是64K,起始地址为0x1000-0000。还有一片用来模拟EEPROM的内存,大小是4K,位置是0x1400-0000。这两样东西正常情况下就是它原本的用途。但是经过配置FlexNVM里面的电路后,就可以在写内存的时候,自动把数据写到D-flash里面。不知道这种设计的背景是什么,大概就是这么个东西。

在这里插入图片描述

初始化:比较复杂,整个D-flash都配置成EEPROM了,配置后大小是4K。
flash_ssd_config_t SSDConfig;
/* Flash初始化,这个比较复杂,因为EEEFlash(flash模拟EEPROM)的原因。 /
{
INT_SYS_DisableIRQGlobal();
status_t ret;
do
{
ret = FLASH_DRV_Init(&Flash1_InitConfig0, &SSDConfig);
}
while(ret != STATUS_SUCCESS);
if (SSDConfig.EEESize == 0u)
{
/
Configure FlexRAM as EEPROM and FlexNVM as EEPROM backup region,
* DEFlashPartition will be failed if the IFR region isn’t blank.
* Refer to the device document for valid EEPROM Data Size Code
* and FlexNVM Partition Code. For example on S32K144:
* - EEEDataSizeCode = 0x02u: EEPROM size = 4 Kbytes
* - DEPartitionCode = 0x08u: EEPROM backup size = 64 Kbytes */
ret = FLASH_DRV_DEFlashPartition(&SSDConfig, 0x02u, 0x08u, 0x0u, false, true);
DEV_ASSERT(STATUS_SUCCESS == ret);

	        /* Re-initialize the driver to update the new EEPROM configuration */
	        ret = FLASH_DRV_Init(&Flash1_InitConfig0, &SSDConfig);
	        DEV_ASSERT(STATUS_SUCCESS == ret);

	        /* Make FlexRAM available for EEPROM */
	        ret = FLASH_DRV_SetFlexRamFunction(&SSDConfig, EEE_ENABLE, 0x00u, NULL);
	        DEV_ASSERT(STATUS_SUCCESS == ret);
	    }
	    else    /* FLexRAM is already configured as EEPROM */
	    {
	        /* Make FlexRAM available for EEPROM, make sure that FlexNVM and FlexRAM
	         * are already partitioned successfully before */
	        ret = FLASH_DRV_SetFlexRamFunction(&SSDConfig, EEE_ENABLE, 0x00u, NULL);
	        DEV_ASSERT(STATUS_SUCCESS == ret);
	    }
	INT_SYS_EnableIRQGlobal();
}

读写这个假的EEPROM:
{
status_t ret;
uint32_t address;
uint32_t size;
uint8_t sourceBuffer[sizeof(uint32_t)];
uint32_t rbval;

if (SSDConfig.EEESize != 0u)
{
    address = SSDConfig.EERAMBase;
    size = sizeof(uint32_t);
    sourceBuffer[0] = 0x11;
    sourceBuffer[1] = 0x22;
    sourceBuffer[2] = 0x33;
    sourceBuffer[3] = 0x44;
    ret = FLASH_DRV_EEEWrite(&SSDConfig, address, size, sourceBuffer);
    DEV_ASSERT(STATUS_SUCCESS == ret);

    do
    {
    	rbval = *((uint32_t *)address);
    }
    while(rbval != 0x44332211);
}

}

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

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

相关文章

SHCTF-校外赛道 2023 WEB部分题解wp()

[WEEK1]babyRCE 开题,直接给了源码,简单过滤。 被过滤绕过方法cat/tacuniqflagfla?空格%09 payload: ?rcels%09/?rceuniq%09/fla?[WEEK1]1zzphp 考点:intval()函数绕过(数组)、PCRE回溯次数限制绕过 直接给了…

大数据之LibrA数据库系统告警处理(ALM-12005 OKerberos资源异常)

告警解释 告警模块对Manager中的Kerberos资源的状态进行监控,当Kerberos资源异常时,系统产生此告警。 当Kerberos资源恢复时,且告警处理完成时,告警恢复。 告警属性 告警参数 对系统的影响 Manager中的Kerberos资源异常&#…

网课 - 网页视频-倍速播放-快进-拖动进度条-增大音量 - 火狐Firefox浏览器

本文使用的浏览器为火狐Firefox浏览器。 用浏览器播放视频,比如看网课、看在线电影电视剧时,经常能遇到的情况与解决方案: 音量太小,即使调整到100%还是不够响亮 这时可以安装插件“600% Sound Volume”, 安装之后可在原来音量的…

843. n-皇后问题

文章目录 QuestionIdeasCode Question n− 皇后问题是指将 n 个皇后放在 nn 的国际象棋棋盘上,使得皇后不能相互攻击到,即任意两个皇后都不能处于同一行、同一列或同一斜线上。 现在给定整数 n ,请你输出所有的满足条件的棋子摆法。 输入格…

mybatis-plus 使用 mybatis-plus-join 增强多表关联查询能力

一、mybatis-plus-join mybatis-plus 原生的能力不支持多表关联,对于这种场景只能通过写SQL进行实现,而mybatis-plus-join 则是建立在 mybatis-plus 基础之上的扩展框架,可以在不影响原有能力之上通过简单的API即可实现多表关联能力而无需编…

致远OA wpsAssistServlet任意文件上传漏洞复现 [附POC]

文章目录 致远OA wpsAssistServlet任意文件上传漏洞复现 [附POC]0x01 前言0x02 漏洞描述0x03 影响版本0x04 漏洞环境0x05 漏洞复现1.访问漏洞环境2.构造POC3.复现 0x06 修复建议 致远OA wpsAssistServlet任意文件上传漏洞复现 [附POC] 0x01 前言 免责声明:请勿利用…

突破时空局限:数字调度系统引领煤炭行业新纪元

随着社会经济的发展,能源需求不断增加,煤炭作为重要的能源资源,在全球能源结构中扮演着重要角色。然而,煤炭行业面临着许多挑战,包括资源开采的不可回复性、环境污染问题以及安全生产隐患等。在这样的背景下&#xff0…

Android Groovy 迁移到 KTS

文章目录 Groovy 迁移到 KTS概述迁移流程setting.gradleproject/build.gradlemodule/build.gradle处理ext扩展函数依次创建如下目录和文件使用 源码 Groovy 迁移到 KTS 概述 Android Studio是使用Gradle来编译,而默认的构建语言是Groovy,但是Gradle实际…

竞赛选题 深度学习图像风格迁移

文章目录 0 前言1 VGG网络2 风格迁移3 内容损失4 风格损失5 主代码实现6 迁移模型实现7 效果展示8 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 深度学习图像风格迁移 - opencv python 该项目较为新颖,适合作为竞赛课题…

你真的会学习网络安全吗?

我敢说,现在网上90%的文章都没有把网络安全该学的东西讲清楚。 为什么?因为全网更多的都是在讲如何去渗透和公鸡,却没有把网安最注重的防御讲明白。 老话说得好:“攻击,是为了更好的防御。”如果连初衷都忘了&#xff…

Grafana 图表 Table 根据 Key 修改背景颜色

文章目录 前言1. 配置过程1.1 创建 override1.2 Add override property1.3 Value mappings 2. 效果展示 前言 需要配置一个备份任务的 Dashboard 展示备份的状态,如果备份状态是 Completed 表示正常(绿色背景),如果是 Error 表示…

LOGO设计工具都有哪些?分享这6款

如果一个品牌想要脱颖而出,它必须有一个令人印象深刻的品牌标志。创建一个专业的标志,设计师不能简单地用刷子手绘,必须使用专业的标志设计软件来制作。 市场上有各种各样的标志设计软件:桌面、在线应用、免费,甚至人…

Kubernetes深度剖析,从基础到高级,带你领略K8s的魅力

一、Kubernetes 是 Google 团队发起并维护的基于 Docker 的开源容器集群管理系统,它不仅支持常见的云平台,而且支持内部数据中心。 建于 Docker 之上的 Kubernetes 可以构建一个容器的调度服务,其目的是让用户透过 Kubernetes 集群来进行云端…

星环科技分布式向量数据库Transwarp Hippo正式发布,拓展大语言模型时间和空间维度

随着企业、机构中非结构化数据应用的日益增多以及AI的爆发式增长所带来的大量生成式数据,所涉及的数据呈现了体量大、格式和存储方式多样、处理速度要求高、潜在价值大等特点。但传统数据平台对这些数据的处理能力较为有限,如使用文件系统、多类不同数据…

0002net程序设计-net家电维修保养信息系统

文章目录 **摘要**目录系统设计开发环境 摘要 家电维修保养信息系统提供给用户一个家电信息管理的网站,最新的家电信息让用户及时了解维修知识,保养方式的同时,还能通过交流区互动更方便。本系统采用了B/S体系的结构,使用了net技术以及SQL SERVER作为后…

uniapp 关于 video 组件的缩放比例问题

在 container 样式的 padding-bottom 设置比例值 9/16 比例值&#xff1a;56.25% 3/4 比例值&#xff1a;75% <view class"container"><video class"video-box" src"xxx.mp4" /> </view> .container {position: relative;wid…

【STL】:list用法详解

朋友们、伙计们&#xff0c;我们又见面了&#xff0c;本期来给大家解读一下有关list的使用&#xff0c;如果看完之后对你有一定的启发&#xff0c;那么请留下你的三连&#xff0c;祝大家心想事成&#xff01; C 语 言 专 栏&#xff1a;C语言&#xff1a;从入门到精通 数据结构…

SQL注入思路扩展

目录 一、资产搜集 二、开始sql注入常规流程 三、sqlmap验证 总结&#xff1a;测试sql注入的时候不要只局限于明文传输&#xff0c;也要注意编码或者加密后的值。 还没看够&#xff1f;欢迎关注&#xff0c;带你走进黑客世界&#xff0c;下面也有免费的靶场视频 一、资产搜…

HCIA --- 综合实验(结束)

一、实验拓扑及要求 二、整体IP规划 三、解决方案 四、解决步骤配置命令 一、基本部分 一、交换机 1、创建对应VLAN&#xff0c;对应接口划入对应VLAN中&#xff0c;创建Trunk干道&#xff0c;配置HTTP服务器IP LSW1 [sw1]vlan batch 2 to 3 [sw1]interface e0/0/1 [sw1-E…

idea提交代码一直提示 log into gitee

解决idea提交代码一直提示 log into gitee问题 文章目录 打开setting->Version control->gitee,删除旧账号&#xff0c;重新配置账号&#xff0c;删除重新登录就好 打开setting->Version control->gitee,删除旧账号&#xff0c;重新配置账号&#xff0c;删除重新登…