RH850 FCL的使用

一、前言

调试的电路板为瑞萨F1KM系列,使用的FCL库版本为2.13,应用说明手册为R01US0078ED0213,手册和库都可以在官网下载到。

好,进入正题。

使用CS+版本时参考库提供的CC-RH_200文件夹 ,此文件夹下的FCL文件夹为源码文件,在调试时,添加此文件夹下所有文件,此文件夹下的文件都不要进行更改。

其中RH850-D1M1A、RH850-D1x、RH850-F1H、RH850-F1x、RH850-F1K文件下的文件为参考代码文件夹,根据芯片型号选择参考代码,进行调试。

根据F1KM系列我们选择F1K系列。在不了解具体流程前还是要按照参考代码进行调试,否则真有坑啊,由于之前理解擦写动作函数可以不在RAM中运行,导致调试时频繁出错,

不清楚问题出现哪里,后来理解了参考代码擦除操作是在RAM中的进行的,这个坑才跳出来。由于调试过程中遇到很多问题,在这里总结一下注意事项及相关操作方法。

二、工程的配置

2.1.在工程文件Section中添加FCL库所需要的段

2.1.1 ROM中添加

R_FCL_CODE_ROM.text

R_FCL_CONST.const

R_FCL_CODE_USRINT.text

R_FCL_CODE_USR.text

R_FCL_CODE_RAM.text

R_FCL_CODE_ROMRAM.text

R_FCL_CODE_RAM_EX_PROT.text

2.1.2 RAM中添加

R_FCL_DATA.bss

FCL_RESERVED.bss

关于FCL_RESERVED.bss段

由于此段的内定义的数据大小为宏FCL_RAM_EXECUTION_AREA_SIZE  为0x8000,共32K,占用了整个Local RAM大小,

由于在调试时Retention RAM中的变量在CS+ 中不正常,所以将FCL_RESERVED.bss段定义在Retention 段内,保证了调试程序时,变量的正常使用。

关于FCL_RAM_EXECUTION_AREA_SIZE  宏定义的大小应该可是进行修改的,在调试成功后,将宏定义改为了0x6000,擦写操作也能正常进行,但为了

保险起见,我们还是不要进行修改了,以防后面埋了个坑,反正定义也是在Retention RAM段,不影响正常变量的定义。

三、文件的修改

3.1 fcl_descriptor.h

根据上面FCL_RESERVED.bss段定义的Retention RAM起始地址,修改fcl_descriptor.h文件中的宏定义FCL_RAM_ADDRESS。

根据实际设置时钟大小进行FCL_CPU_FREQUENCY_MHZ的修改,

FCL_AUTHENTICATION_ID为安全ID,如果不使用,不需要进行修改。

3.2 关于boot.sam的修改

此定义为清零 RAM范围定义,将set后设置为芯片RAM正常地址

GLOBAL_RAM_ADDR 
GLOBAL_RAM_END 
LOCAL_RAM_ADDR 
LOCAL_RAM_END 

四、初始化过程

4.1 调用R_FCL_Init (&sampleApp_fclConfig_enu)函数

4.2 调用R_FCL_CopySections();函数

4.3 在内存中运行以下两个函数

FCLUser_Open ();
DRV_CodeFlashEnvInit();

两个函数。参考库提供的参考main.c的 方法为

fpFct = ( uint32_t (*)() )R_FCL_CalcFctAddr ( (uint32_t)(&FCL_Ctrl) );
fpFct ();

此处一定注意运行是在RAM中进行的,此处有坑,我就跳里了,不要直接运行FCL_Ctrl ()函数哦!!!

五、注意事项

调试成功后可以参考fcl_ctrl.c的例程,编写自己的接口程序了,新编写文件时,注意在源文件头添加#pragma section text "R_FCL_CODE_USR"的定义

将代码定义到R_FCL_CODE_USR段内,否则有坑!!!

编写好库文件后可以将fcl_ctrl.c移除工程文件了,进行接口函数的验证,擦除,写数据等。

通过程序擦写FLASH后,mem窗口查看内容不会立即显示,多调试下载几次代码就正常了。

总结完毕,欢迎讨论。

 

原文地址:https://www.cnblogs.com/hkj8808/p/13186613.html