Renesas:RH850的FCL库移植与使用

本文介绍了如何将Renesas的FCL库移植到RH850微控制器项目中,包括添加库文件、修改配置文件fcl_cfg.h和fcl_descriptor.h,并详细阐述了FCL库的使用流程,如初始化、段复制、Flash编程等操作。适合熟悉MCU编程的读者参考。
摘要由CSDN通过智能技术生成

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

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

一、FCL的移植过程

(1)添加文件到自己的工程中

1.安装官网提供的FCL库文件

 2.解压安装后对应目录介绍

 3.将官方库文件和对应的用户文件添加到自己的工程中

 (2)CS+工程中的添加FCL需要的段

 二、FCL库中的文件介绍(在用户手册中有介绍)

 对于我们来说,我们大致需要修改的文件只有两个

  • fcl_cfg.h
  • fcl_descriptor.h

(1)fcl_cfg.h 文件中的修改

#define R_FCL_COMMAND_EXECUTION_MODE    R_FCL_HANDLER_CALL_USER
//修改成
#define R_FCL_COMMAND_EXECUTION_MODE    R_FCL_HANDLER_CALL_INTERNAL

 使用R_FCL_HANDLER_CALL_INTERNAL模式可以少点坑,除了无法查询操作状态,其他没有太大的差别

(2)fcl_descriptor.h 文件中的修改

#define FCL_CPU_FREQUENCY_MHZ  (240)                          /*!< CPU frequency in MHz */
#define FCL_AUTHENTICATION_ID {0xFFFFFFFF, \
                               0xFFFFFFFF, \
                               0xFFFFFFFF, \
                               0xFFFFFFFF}                    /*!< 128Bit authentication ID */
#define FCL_RAM_ADDRESS        0xFEBC0000                     /*!< RAM address range blocked for FCL */
  •  FCL_CPU_FREQUENCY_MHZ   修改成自己MCU的主频
  • FCL_AUTHENTICATION_ID         若无设置验证ID,不需要改动
  • FCL_RAM_ADDRESS                   查芯片手册,修改成自己芯片手册的Local RAM 起始地址

三、FCL库大致使用流程

在编写自己的应用函数的时候,一定要参考示例。具体可以查看用户手册与用例展示,以下仅做简略介绍

  • R_FCL_Init (&sampleApp_fclConfig_enu)     初始化FCL库
  • R_FCL_CopySections ()                                将使用的链接段从ROM复制到RAM中的新地址

  • FCLUser_Open()                                           准备Flash编程硬件,用于Flash修改操作

  • myRequest.command_enu = R_FCL_CMD_PREPARE_ENV;            FCL库准备环境

    R_FCL_Execute (&myRequest);

  • myRequest.command_enu = R_FCL_CMD_DISABLE_LOCKBITS;    Flash解锁

    R_FCL_Execute (&myRequest);

  •     myRequest.command_enu = R_FCL_CMD_ERASE;                       Flash擦除

        myRequest.idx_u32     = sector;                  

        myRequest.cnt_u16     = cnt;

        R_FCL_Execute (&myRequest);

  •     myRequest.command_enu = R_FCL_CMD_WRITE;                        Flash写

        myRequest.bufferAdd_u32 = (uint32_t)sourAddr;

        myRequest.idx_u32       = targetAddr;

        myRequest.cnt_u16       = cnt;

        R_FCL_Execute (&myRequest);

  • 3
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不吃鱼的猫丿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值