瑞萨RH850 Flash中有两种存储类型:Mapping of Code Flash Memory和Mapping of Data Flash Memory。

Mapping of Code Flash Memory存储代码,Mapping of Data Flash Memory存储数据。

​瑞萨车规级MCU操作Flash没有直接提供寄存器接口,需要安装官方提供的库文件,有三种形式:

  • FCL:程序存储区仿真库,可使用此库访问程序存储区,一般用于程序自升级操作;

  • FDL:数据存储区仿真库,可通过此库操作数据区,需要人为定义地址和数据长度,占用Flash空间比EEL略少,但占用RAM大;
  • EEL:EEPROM仿真库,可使用此库来访问数据内存区,该方法类似于访问外部EEPROM,使用此库时,不用管理对数据区闪存写和擦除操作,其占用Flash容量大,需配合FDL库来操作。

RH850 FCL、FDL和EEL安装包、源码、配置PPT和使用说明-嵌入式文档类资源

汽车电子技术、瑞萨MCU感兴趣的小伙伴请关注公众号:美男子玩编程,公众号优先推送最新技术博文,创作不易,请各位朋友多多点赞、收藏、关注支持~

1、FCL库

1.1、配置FCL库

第1步:下载FCL库。

FCL库官网地址:Code Flash Libraries (Flash Self Programming Libraries)

RH850 FCL库与用户手册地址:RH850/F1KM-S4 Design Support Resources | Renesas

第2步:安装FCL库。

​安装完成后可见官方库文件和用户使用文件两部分:

​文件系统结构说明如下所示:

第3步:将官方库文件和对应的用户使用文件添加到自己的工程后,在CS+工程中的添加FCL需要的代码段,如下图所示:

​注意:

  • 在这些代码段中请不要插入其他段;
  • FCLRESERVED.bss段: 在RAM中存放FCL库运行的代码,即复制上面代码段的内容到此RAM中。如果定义了RFCLHANDLERCALLUSER,则用户代码RFCLCODEUSER.text也此RAM中运行。在实际应用中定义FCLRESERVED预留的大小,大小必须包含该库代码量和用户代码量(如果定义了RFCLHANDLERCALL_USER );

``` /* This array reserves the copy area in the device RAM */

define FCLRAMEXECUTIONAREASIZE 0x8000

RFCLNOINIT uint8t FCLCopyarea[FCLRAMEXECUTIONAREA_SIZE]; ```

  • RFCLDATA.bss:FCL内部运行数据段;
  • 在CS+环境下,FCL编译后会出现3个对齐失配警告,请忽略。

W0561322:Section alignment mismatch : "R_FCL_CODE_USR.text" W0561322:Section alignment mismatch : "R_FCL_CODE_RAM.text" W0561322:Section alignment mismatch : "R_FCL_CODE_ROMRAM.text"

第4步:修改fcl_cfg.h文件。

```

define RFCLCOMMANDEXECUTIONMODE RFCLHANDLERCALLUSER

//修改成

define RFCLCOMMANDEXECUTIONMODE RFCLHANDLERCALLINTERNAL

```

  • RFCLHANDLERCALLUSER(user mode): user模式,用户代码运行在RAM区,在自编程命令执行期间,可以运行用户代码,用户可以轮询库的运行状态。需要消耗一定的RAM空间;
  • RFCLHANDLERCALLINTERNAL (internal mode):internal模式,不需要轮询库的状态,在自编程命令执行期间没有状态值的返回,直到命令执行结束。消耗RAM空间小。

第5步: 修改fcl_descriptor.h文件。

```

define FCLCPUFREQUENCY_MHZ (240) /*!< CPU frequency in MHz */

#define FCLAUTHENTICATIONID {0xFFFFFFFF, \ 0xFFFFFFFF, \ 0xFFFFFFFF, \ 0xFFFFFFFF} /*!< 128Bit authentication ID */

define FCLRAMADDRESS 0xFEBC0000 /*!< RAM address range blocked for FCL */

```

  • FCLCPUFREQUENCY_MHZ:CPU工作频率配置,请不要在库的运行期间改变CPU的工作频率,如果需要改变,改完后必须重新初始化FCL库;
  • FCLAUTHENTICATIONID:如果设备设置了ID验证码,需要提供相应的ID码,在FCL初始阶段需要验证ID,如果ID验证不通过,不能成功执行FCL命令;
  • FCLRAMADDRESS:根据相应的设备配置RAM起始。

第6步:修改rfcltypes.h文件。

```

define RFCLNOBFASWITCH

if ((defined RFCLMIRRORFCUCOPY) && (defined RFCLNOFCUCOPY))

#error "r_fcl_types.h: Invalid define for support device macro"

elif ((defined RFCLMIRRORFCUCOPY) && (defined RFCLNOBFASWITCH))

#error "r_fcl_types.h: Invalid define for support device macro"

elif ((defined RFCLNOFCUCOPY) && (defined RFCLNOBFASWITCH))

#error "r_fcl_types.h: Invalid define for support device macro"

elif (defined RFCLMIRRORFCUCOPY)

#define R_FCL_INNER_NO_BFA_SWITCH

elif (defined RFCLNOFCUCOPY)

#define R_FCL_INNER_NO_FCU_COPY

elif (defined RFCLNOBFASWITCH)

#define R_FCL_INNER_NO_BFA_SWITCH
#define R_FCL_INNER_NO_FCU_COPY

endif

```

在FCL V2.12版本中增加了RFCLNOFCUCOPY、RFCLMIRRORFCUCOPY和RFCLNOBFASWITCH预编译配置选项。

  • 在执行FCL库环境准备命令时,为了从MCU内部固件读取数据,需要开关CodeFlash几次。有些设备需要更少的开关来完成这个准备工作,需要定义RFCLNOBFASWITCH 宏;
  • RFCLNOBFASWITCH 宏和RFCLNOFCUCOPY、RFCLMIRRORFCUCOPY 不能同时被定义。

预编译目标设备所需的定义如下表所示:

1.2、使用FCL库

2、FDL库

2.1、配置FDL库

第1步:下载FDL库。

FDL库官网地址:Data Flash Libraries

RH850 FDL库与用户手册地址:RH850/F1KM-S4 Design Support Resources

第2步:安装FDL库。

​安装完成后可见官方库文件和用户使用文件两部分:

​第3步:将官方库文件和对应的用户使用文件添加到自己的工程后,在CS+工程中的添加FDL需要的代码段,如下图所示:

​注意:

  • FDL库的代码段请按照如图样例1设置,位置可以任意,但不要插在FCL代码的中间;
  • RFDLData.bss:FCL内部运行变量据段;
  • RFDLCodeRam.bss: 在执行FDL环境准备期间,Code Flash不可用,需要从RAM中运行代码。

第4步:修改r_fdl.h文件。

```

define RFDLNOBFASWITCH

/* Global compiler definition */

if ((defined RFDLMIRRORFCUCOPY) && (defined RFDLNOFCUCOPY))

#error "r_fdl.h: Invalid define for support device macro"

elif ((defined RFDLMIRRORFCUCOPY) && (defined RFDLNOBFASWITCH))

#error "r_fdl.h: Invalid define for support device macro"

elif ((defined RFDLNOFCUCOPY) && (defined RFDLNOBFASWITCH))

#error "r_fdl.h: Invalid define for support device macro"

elif (defined RFDLMIRRORFCUCOPY)

#define R_FDL_INNER_NO_BFA_SWITCH

elif (defined RFDLNOFCUCOPY)

#define R_FDL_INNER_NO_FCU_COPY

elif (defined RFDLNOBFASWITCH)

#define R_FDL_INNER_NO_BFA_SWITCH
#define R_FDL_INNER_NO_FCU_COPY

endif

```

  • 在FDL V2.12版本中增加了RFDLNOFCUCOPY, RFDLMIRRORFCUCOPY和RFDLNOBFASWITCH预编译配置选项。
  • 在执行FDL库初始化时,为了从MCU内部拷贝固件,需要在固件区和用户区来回切换几次,需要定义宏RFDLNOBFASWITCH 。有些设备不需要拷贝固件(比如RH850/D1M1A),需要定义RFDLNOFCUCOPY宏。
  • 不要同时定义RFDLNOBFASWITCH和RFDLNOFCUCOPY, RFDLMIRRORFCUCOPY 。

预编译目标设备所需的定义如下表所示:

​第5步:修改fdl_descriptor.h文件。

``` /* The Flash programming hardware is provided with a clock, derived from the CPU subsystem frequency. Check that the frequency is correct as this has an impact on the programming quality and performance! / #define CPU_FREQUENCY_MHZ (240) /*< CPU frequency in MHz */

/******************************************************************************************************************  Important definitions for run-time configuration of the FDL: *   - EEL/FDL Pool -*****************************************************************************************************************/
/* The physical erase unit of the Data Flash is 64Byte. The Renesas EEL works with a ring buffer consisting of ring buffer (virtual) blocks that merge a certain number of physical blocks.E.g. virtual block size of 2kB equals 32 physical blocks of 64Bytes --> EEL_VIRTUALBLOCKSIZE = 32virtual block size of 4kB equals 64 physical blocks of 64Bytes --> EEL_VIRTUALBLOCKSIZE = 64Note: If the Renesas EEL is not used, an alignment is not necessary "EEL_VIRTUALBLOCKSIZE" need not be defined and the pools start and size definitions can be set free to the application needs */
#define EEL_VIRTUALBLOCKSIZE    (64u)#define FDL_POOL_SIZE           (16u * EEL_VIRTUALBLOCKSIZE)    /**< Number of Data Flash blocks, accessible bythe FDL. Typically it is the completeno. of available Data Flash blocks */
#define EEL_POOL_START          (1u * EEL_VIRTUALBLOCKSIZE)     /**< 1st block of the EEL pool */
#define EEL_POOL_SIZE           (6u * EEL_VIRTUALBLOCKSIZE)     /**< no. of blocks for the EEL pool */

```

  • CPUFREQUENCYMHZ:CPU工作频率配置,请不要在库的运行期间改变CPU的工作频率,如果需要改变,改变后必须重新初始化FDL库;
  • EELVIRTUALBLOCKSIZE虚拟块定:Data Flash物理块的大小为64Bytes,在EEL(EE2PROM Emulation Library)库中,需要合并一定数量的物理块虚拟成一个虚拟块作为EEL的缓冲区,用户可以根据实际应用定义虚拟块的大小;如果没有使用EEL,设EELVIRTUALBLOCKSIZE = 0。如果使用EEL,例如要定义2KB的虚拟块,则需要32块64B的物理块组成,那么设EEL_VIRTUALBLOCKSIZE = 32。
  • FDLPOOLSIZE :设备Data Flash的物理块的数量;
  • EELPOOLSTART、EELPOOLSIZE:EEL池的起始块和大小定义。 如果没有使用EEL,设EELPOOLSTART = 0, EELPOOLSIZE = 0;如果使用EEL,例如 EELPOOLSTART = 0u * EELVIRTUALBLOCKSIZE、EELPOOLSIZE = 5 * EELVIRTUALBLOCKSIZE。

2.2、使用FDL库

3、EEL库

FDL和EEL都是操作Data Flash Memory,EEL依托于FDL,在FDL库中已经讲解了使用EEL的方法。EEL和FDL关系如下图所示:

  • EEL PooL:EEL Pool为EEL提供存储数据和管理信息;
  • User PooL:所有不是EEL Pool分配的FDL Pool空间都可由用户应用程序自由使用,因此称为User PooL。

RH850FCL、FDL和EEL安装包、源码、配置PPT和使用说明-嵌入式文档类资源


瑞萨IDE:CS+ for CC下载、安装和基础使用

瑞萨IDE:CS+ for CC新建工程配置方法

瑞萨IDE:CS+ for CC进行BootLoader升级时开发环境配置

瑞萨E1/E20烧录工具自检方法

瑞萨 RH850 FCL、FDL 和 EEL 库的配置和使用相关推荐

  1. 瑞萨RH850 FCL、FDL和EEL库的配置和使用

    目录 1.FCL库 1.1.配置FCL库 1.2.使用FCL库 2.FDL库 2.1.配置FDL库 2.2.使用FDL库 3.EEL库 瑞萨RH850 Flash中有两种存储类型:Mapping of ...

  2. 瑞萨RH850 FCL库的使用

    FCL功能规范 RAM中的代码执行 自编程应用程序和FCL最初位于代码闪存中.在库操作期间,由于硬件资源忙于flash编程,代码flash通常不可访问.这就是为什么部分用户应用程序和库必须从RAM内存 ...

  3. 瑞萨RH850/F1L-片上资源分配(Flash,RAM,外设资源)

    瑞萨RH850片上存储资源分配,本博文讲解RH850为176pin LQFP封装: 1.片上Code Flash 2.片上Data Flash 3.片上RAM 版权声明 本博文系广州欧科曼科技有限公司 ...

  4. 详解AUTOSAR:Green Hills Software(GHS)编译下载瑞萨RH850程序(环境配置篇—2)

    目录 1.配置烧录器参数 2.仿真烧录程序 在学习本篇博文之前,可以先看一看:Green Hills Software(GHS)的安装和申请License文件. 使用GHS编译下载瑞萨RH850程序方 ...

  5. [瑞萨RH850学习笔记]——RDC与旋转变压器

    [瑞萨RH850学习笔记]--RDC与旋转变压器 一.旋转变压器基本原理 旋转变压器 使用电磁式方法进行角位移测量的传感器.特点是稳定性高,环境耐受力强,抗干扰能力强,精度较高. 基本原理 本质上是一 ...

  6. 瑞萨RH850 CS+环境下设置堆和栈空间

    目录 1.设置栈空间 2.设置堆空间 嵌入式软件开发离不开对堆和栈的操作. 栈由操作系统自动分配和释放 ,存放函数的参数值.局部变量的值等.通常都是被调用时处于存储空间中,调用完毕立即释放. 堆由开发 ...

  7. 基于瑞萨RH850的BootLoader调试问题记录

    最近要基于瑞萨的RH850开发BootLoader,调试过程遇到了一些问题,在这里记录一下. 1 Flash擦写问题 1.1 Flash介绍 Flash分为DFlash和CFlash DFlash一般 ...

  8. 瑞萨RH850 F1KM-S4 -LED闪烁

    上一章节,学会通过GPIO口控制LED灯的开和关,本节介绍如何实现LED灯的周期开和关,实现闪烁效果. 关于LED闪烁的实现方法,一般有以下几种,本章讲解第一种GPIO控制. 1. 采用GPIO控制: ...

  9. 瑞萨单片机C语言,瑞萨单片机学习笔记(1)基本配置

    根据自己的芯片家族选择不同的代码编辑工具及仿真工具 对应78K0系列单片机,推荐的是cubeSuite+集成开发环境,具体使用可以看帮助手册. 有接触过PIC.STC的单片机,瑞萨单片机有其独特的地方 ...

最新文章

  1. Template mode HTML5 has not been configured
  2. IT 往事录:苹果 Mac 之父,却在 Mac 问世前黯然退场
  3. FreeMarker基本语法详解及模板文件的组成(二)
  4. 基于ADuC845的数据采集板
  5. 用PC端Chrome浏览器进行模拟微信浏览器的开发
  6. 黑客道诠释完整版1-7
  7. colab文件夹上传到github
  8. 或许你不知道的10条SQL技巧(转自58沈剑原创)
  9. CGAffineTransform 获取 旋转的弧度 和 角度 的方法
  10. Wi-Fi也有版本号了!
  11. IMX8MM IMX8QXP芯片配置GPIO方向和数据
  12. 30个外贸业务员常用邮件模板案例分享
  13. 电脑连接ios开发配置
  14. oracle 罗马数字处理,阿拉伯数字转罗马数字(Roman Numeral Converter)
  15. excel如何设置下拉框选项
  16. 2022年诺贝尔物理学奖背后的故事——贝尔不等式诞生之后
  17. 360全景视频panolens.js 实现代码
  18. 进程间通讯(IPC)(有信号捕捉函数)
  19. 2021高考秦安一中成绩查询,2021年天水高考状元是谁分数多少分,历年天水高考状元名单...
  20. GO的gin依赖下载不下来的问题

热门文章

  1. mysql创建表时报Error : Tablespace for table '`database`.`temp`' exists.
  2. 【原创】买机票的经验
  3. 计算机表格增加,职称计算机Dreamwaver2017教程:插入并编辑表格
  4. 2011年11月51CTO壁纸点评活动获奖名单【已结束】
  5. Swing学习----------QQ登录界面制作(二)
  6. 《关于唐医生的一起》:你所不知道的人工心脏
  7. ID CS6怎么加框_苹果手机id密码忘了怎么办,超级实用。
  8. 在macOS系统安装python
  9. mac 搭建文件服务器,MacOS-搭建本地服务器
  10. c# 判断与循环语句练习,简易文字游戏