标签:sample 选择 设置 ESS 初始 rom flash prot 根据
调试的电路板为瑞萨F1KM系列,使用的FCL库版本为2.13,应用说明手册为R01US0078ED0213,手册和库都可以在官网下载到。
好,进入正题。
使用CS+版本时参考库提供的CC-RH_200文件夹 ,此文件夹下的FCL文件夹为源码文件,在调试时,添加此文件夹下所有文件,此文件夹下的文件都不要进行更改。
其中RH850-D1M1A、RH850-D1x、RH850-F1H、RH850-F1x、RH850-F1K文件下的文件为参考代码文件夹,根据芯片型号选择参考代码,进行调试。
根据F1KM系列我们选择F1K系列。在不了解具体流程前还是要按照参考代码进行调试,否则真有坑啊,由于之前理解擦写动作函数可以不在RAM中运行,导致调试时频繁出错,
不清楚问题出现哪里,后来理解了参考代码擦除操作是在RAM中的进行的,这个坑才跳出来。由于调试过程中遇到很多问题,在这里总结一下注意事项及相关操作方法。
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
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段,不影响正常变量的定义。
根据上面FCL_RESERVED.bss段定义的Retention RAM起始地址,修改fcl_descriptor.h文件中的宏定义FCL_RAM_ADDRESS。
根据实际设置时钟大小进行FCL_CPU_FREQUENCY_MHZ的修改,
FCL_AUTHENTICATION_ID为安全ID,如果不使用,不需要进行修改。
此定义为清零 RAM范围定义,将set后设置为芯片RAM正常地址
GLOBAL_RAM_ADDR
GLOBAL_RAM_END
LOCAL_RAM_ADDR
LOCAL_RAM_END
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窗口查看内容不会立即显示,多调试下载几次代码就正常了。
总结完毕,欢迎讨论。
标签:sample 选择 设置 ESS 初始 rom flash prot 根据
原文地址:https://www.cnblogs.com/hkj8808/p/13186613.html