news 2026/4/23 12:33:48

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/4/23 9:52:53

如何看懂PCB板电路图:从元件识别开始学起

如何看懂PCB板电路图:从元件识别开始,一步步拆解电子世界的“地图”你有没有过这样的经历?手里拿着一块密密麻麻的绿色电路板,想修却无从下手——不知道哪个是电阻、哪个是电容,更别提追踪信号走向了。其实&#xff0c…

作者头像 李华
网站建设 2026/4/9 22:33:25

MediaPipe Pose教程:33点

MediaPipe Pose教程:33点 1. 章节概述 随着AI在视觉领域的深入发展,人体姿态估计(Human Pose Estimation)已成为智能健身、动作捕捉、虚拟现实和人机交互等场景的核心技术之一。其中,Google推出的 MediaPipe Pose 模…

作者头像 李华
网站建设 2026/4/18 12:07:51

AI骨骼关键点检测实战:33个关节定位与优化

AI骨骼关键点检测实战:33个关节定位与优化 1. 引言:AI人体骨骼关键点检测的现实价值 在计算机视觉领域,人体姿态估计(Human Pose Estimation)是一项极具挑战性且应用广泛的技术。它通过分析图像或视频中的人体结构&a…

作者头像 李华
网站建设 2026/4/23 11:12:31

推荐系统中深度学习模型的应用实践

推荐系统中的深度学习实战:从DNN到图神经网络的演进之路你有没有想过,为什么抖音总能“猜中”你想看的内容?淘宝首页推荐的商品,为何频频击中你的购物欲?这背后并非玄学,而是一套高度工程化的智能系统在默默…

作者头像 李华
网站建设 2026/4/18 19:23:53

从图片到骨骼图:MediaPipe Pose极速CPU版使用教程

从图片到骨骼图:MediaPipe Pose极速CPU版使用教程 1. 引言 1.1 AI 人体骨骼关键点检测的现实需求 在智能健身、动作捕捉、虚拟试衣和人机交互等前沿应用中,人体姿态估计(Human Pose Estimation)正成为核心技术支撑。其目标是从…

作者头像 李华
网站建设 2026/4/18 20:09:40

人体姿态估计入门:MediaPipe WebUI使用与调试指南

人体姿态估计入门:MediaPipe WebUI使用与调试指南 1. 引言:走进AI驱动的人体姿态分析 1.1 技术背景与应用场景 随着计算机视觉技术的飞速发展,人体姿态估计(Human Pose Estimation)已成为智能健身、虚拟试衣、动作捕…

作者头像 李华