一、前言
調試的電路板為瑞薩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窗口查看內容不會立即顯示,多調試下載幾次代碼就正常了。
總結完畢,歡迎討論。