news 2026/4/3 5:05:55

RH850系列EEL配置总结

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
RH850系列EEL配置总结

hi,诸君,这里是快乐的肌肉。

关于Flash模拟EEPROM之前讲过原理,没有实操难题,毕竟各厂家的拿来改改就能用。

最近有朋友在移植RH850的EEL(EEPROM Emulation Library)时,遇到了个问题,我想有必要记录在案,方便查阅。

1.问题现象

平台芯片RH850 F1KM-S4,DFlash 128KB且初始状态。

问题如下图所示:EEL初始化阶段,在写入EEL Header时,写入地址是0xFF210004,但实际写到了0xFF200004,也就是DFlash首地址,与预期不符。

忽略FF210000的乱码,手册上早就写了:

Values read from data flash memory that has been erased but not yet been programmed again are undefined.

也就是没有任何东西写到0xFF210004这个地址。

当时问我的时候确实一脸懵,我还没调过这么底层。

那遇都遇到了,上呗。

首先我们需要回顾下该芯片DFlash的地址分配,EEL的结构以及需要配置的内容。

2.F1KM-S4 DFlash layout

该芯片DFlash layout如下:

每个block 64 bytes(最小擦除单位),最小编程单位 4bytes。

问题是出在编程地址上的,需要再回忆回忆flash controller这块。

在RH850 Flash memory User's Manual里详细描述了DFlash编程流程,关于编程地址的设定是在FSADDR寄存器里:

问题可能就出在了这里。

可我转念一想,这个库是官方给的,要有问题早解决了,我就问这个朋友,你改了啥。

他说,我按手册配了的,另外我想只用后面64KB,所以改了它里面的静态代码:

记住它,后面要考。

DFlash基本回顾到这差不多了,我们来看看它的EEL是怎么做的。

3.RH850 EEL架构

3.1 EEL Pool概念

还是根据官方手册,整个EEPROM模拟系统如下图:

EEL是在一个抽象级别上对DFlash进行读/写访问,理论上这个EEL可以随意开发,当然瑞萨提供了,那我们就用。

在上图中,我们可以看到用户既可以使用EEL的API,也可以使用FDL的API直接操作DFlash,为什么这么搞呢?

那肯定是根据数据更新频率、鲁棒性和实际开销来决定的。

例如有些数据只需要更新频率很低,例如vin码这种,写一次基本不再变了,就不需要用EEL来管理,只用FDL写一次,后面EEL读写擦都不会影响这个block。

那能不能把DFlash划成两类,一类用来做模拟EEPROM,一类就只单纯存一些不常变的数据,不需要复杂管理?

所以,这里就出现了DFlash Pool的概念,如下图所示:

以32KB DFlash为例,FDL pool通常就是这块芯片的DFlash大小,FDL API都能访问,EEL pool则是给EEL用来做模拟EE的,比如说24KB;User pool则是给用户调用FDL API直接操作DFlash。

那从用户角度来看,要移植EEL,首先是要配置FDL,告诉FDL:你能访问多大Dflash,也就是FDL Pool size;我有多少大小用来做flash模拟EEPROM,是从DFlash什么位置开始的。这里对应代码里的配置项:

那关于EEL本身的配置,我们需要考虑究竟是模拟多少KB的block,如何配置block来满足数据存储,什么情况下需要做好换页准备等等,对应代码配置项如下:

3.2 EEL Block结构

结构如下图所示:

Block Header固定28Bytes,用于表征EEL Blokc状态,

RZF Zone:Reference zone,参考区域包含管理EEL数据集所需的参考条目,包含数据集的存放位置和状态信息,从低地址往高地址写。

Data Zone:就是实际存放数据的地方,从高地址往低地址写。

了解到这里基本就差不多了,我们来结合实际调试情况看看问题所在。

4.问题剖析

要解决写错位置这个问题,就必须实际写到寄存器的地址是什么值。

向0xFF210004写0数据,看起来像是在写block header,但不管是写什么,它最后肯定是要调FDL Write API的,所以我们找到EEL->FDL的接口代码,如下:

在这里我们看到了给到FDL的write请求,地址信息居然是目的地址 - DFlash Read Add,而之前有一个要考的点就是他给配成了0xFF210000,这不就是4了?远远超出预期。

再进一步往下追,我们发现写到FSADDR的值毫无意外地就是4了:

问题应该就是这里了,看样子在EEL+FDL的设计里,FDL pool的首地址是固定的,就是当前芯片的DFlash首地址,没有考虑FDL Pool是DFlash其他地址的情况。

当我问这位朋友,你为啥想到改它的静态代码呢?他说,我就只想用后面一点Flash来做EEL,而且我只是这个核会用到这点DFlash,另一个核怎么用不清楚,我肯定想的是把我的FDL pool配到后面啊。

这么说起来好像也很有道理。

5.问题解决

那么在不动静态代码,要怎么解决他这个问题呢?

回到配置当中,首先这个还原

#define R_FCU_DFLASH_READ_ADD (0xFF200000u)

其次,我们再来看配置。

整个FDL pool为128KB,这是毋庸置疑的。

要模拟8KB的block(突然想到,理解为sector也行),那么就是8*1024/64 = 128个实际物理block(sector)来模拟,为了效率和空间,EEL_POOL_SIZE暂定5个虚拟Block大小,也就是40KB。

然后就是配置EEL Pool的首地址,这里设计有点巧妙:既然想模拟8KB,那么对用户来说,我们就假设这个DFlash的物理sector就是8KB,因此整个DFlash就有128/8 = 16个sector,我就可以选从第几个sector开始作为EEL POOL 首地址,选11,就用末尾40KB吧,这里对应实际物理地址应该是0xFF216000。

EEL配置项也相同变化即可。

我们来看看效果:

确实得偿所愿,FF216000初始化成功,首地址没数据。

我们进一步解析这个Block信息,按理说,Header有7个word来表征状态,如下:

其中,第一个word只会在无效时写入,因此之前出问题前面4个word全是0x55555555,这里就不一样了,就只有3个,对应prepare、active,紧接着跟到的EC 和RWP,RWP,reference write pointer,它指向的是上一个block RFZ和Data zone间隔符,主要用来快速分析所有活跃block的RFZ,内部用,还没理清原理。

仔细想想这里只有6个word,还有一个在哪里呢?

留个坑,后续有调了再说。

就酱,拜拜。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/27 9:47:42

人体姿态估计实战:基于MediaPipe的骨骼关键点检测案例

人体姿态估计实战:基于MediaPipe的骨骼关键点检测案例 1. 引言:AI 人体骨骼关键点检测的应用价值 随着计算机视觉技术的快速发展,人体姿态估计(Human Pose Estimation)已成为智能健身、动作捕捉、虚拟现实和人机交互…

作者头像 李华
网站建设 2026/3/25 6:31:28

亲测MediaPipe骨骼检测:33个关节点定位效果惊艳

亲测MediaPipe骨骼检测:33个关节点定位效果惊艳 1. 引言:为什么选择MediaPipe做姿态估计? 在计算机视觉领域,人体骨骼关键点检测(Human Pose Estimation)是一项基础而关键的技术,广泛应用于动…

作者头像 李华
网站建设 2026/4/2 4:14:44

彩虹骨骼效果展示:MediaPipe Hands镜像作品集锦

彩虹骨骼效果展示:MediaPipe Hands镜像作品集锦 1. 项目背景与技术价值 1.1 手势识别的演进与现实需求 随着人机交互方式的不断升级,传统按键、触控等输入模式已难以满足日益增长的自然交互需求。手势识别作为非接触式交互的核心技术之一,…

作者头像 李华
网站建设 2026/3/31 23:28:31

AI骨骼检测实战:用MediaPipe快速生成荧光棒舞特效

AI骨骼检测实战:用MediaPipe快速生成荧光棒舞特效 1. 引言:从骨骼检测到创意视觉特效 1.1 业务场景描述 在短视频和数字艺术创作盛行的今天,如何将AI技术与视觉表达结合,创造出有趣且具有传播力的内容?一个极具潜力…

作者头像 李华
网站建设 2026/3/24 13:07:32

Elasticsearch基本用法与Kibana Dev Tools实践

用 Kibana Dev Tools 玩转 Elasticsearch:从零开始的实战指南你有没有遇到过这样的场景?用户输入“苹果手机”,系统却搜不到“iPhone”相关商品;日志堆积如山,排查一个问题要翻几十个文件;报表需求一变再变…

作者头像 李华
网站建设 2026/4/1 16:39:23

MediaPipe Pose部署教程:虚拟现实动作交互系统搭建

MediaPipe Pose部署教程:虚拟现实动作交互系统搭建 1. 引言 1.1 学习目标 本文将带你从零开始,基于 Google 的 MediaPipe Pose 模型,搭建一个可用于虚拟现实(VR)或增强现实(AR)场景的动作交互…

作者头像 李华