引言
本文詳細(xì)介紹了RL78 MCU從復(fù)位到進(jìn)入main函數(shù)的過程,有助于讀者對RL78 MCU體系結(jié)構(gòu)的理解,RAM和ROM的初始化,以及bootloader程序的開發(fā)。
1. RL78復(fù)位源
RL78 MCU有以下7種復(fù)位源:
外部復(fù)位:
RESET復(fù)位引腳
內(nèi)部復(fù)位:
上電復(fù)位(POR)
看門狗復(fù)位
低電壓復(fù)位
非法指令復(fù)位
RAM奇偶校驗錯誤復(fù)位
存取非法寄存器復(fù)位
復(fù)位功能框圖如下:
2. MCU運行模式
RL78 MCU有正常運行和閃存編程兩種運行模式,在復(fù)位信號解除時,通過采樣TOOL0引腳上的電平,進(jìn)入對應(yīng)的運行模式。
3. 啟動代碼分析
RL78 MCU啟動代碼主要在cstart.asm文件中,流程如下:
3.1 啟動代碼入口
代碼如下:
MCU復(fù)位后,PC指針指向地址0,定義復(fù)位向量在地址0。
3.2 寄存器組選擇
代碼如下:
RL78-S2有4組通用寄存器,通過SEL RBn指令選擇使用的寄存器組。
RL78通用寄存器組結(jié)構(gòu):
3.3 鏡像區(qū)設(shè)置
代碼如下:
3.3.1鏡像區(qū)
RL78支持存取1MB的地址空間,能通過16位地址進(jìn)行存取的數(shù)據(jù)區(qū)是F0000H~FFFFFH的64K字節(jié)空間,但是如果附加“ES:”,就能擴(kuò)展到00000H~FFFFFH的1M字節(jié)空間。
代碼閃存從地址0開始存儲,一般需要使用20位地址訪問該區(qū)域。為了加快對代碼閃存的訪問,可以將代碼閃存的部分區(qū)域鏡像到F0000H~FFFFFH中未使用的區(qū)域。
鏡像示例如下:
3.3.2鏡像區(qū)選擇
復(fù)位后,MAA位默認(rèn)為0,鏡像00000H~0FFFF區(qū)域到F0000H~FFFFFH區(qū)域,對于閃存大于96KB的產(chǎn)品,可以通過設(shè)置MAA位,選擇需要鏡像的區(qū)域,詳細(xì)請參考PMC控制寄存器。
3.4 棧初始化
代碼如下:
3.4.1 設(shè)置SP
將棧頂?shù)刂?__STACK_ADDR_START設(shè)置到SP寄存器。
其中__STACK_ADDR_START是由鏈接器產(chǎn)生。
3.4.2 初始化棧
將棧底地址參數(shù)賦值給AX寄存器,然后調(diào)用棧初始化函數(shù)stkinit,將棧區(qū)域清0。
stkinit函數(shù)在stkinit.asm文件中,代碼如下:
大致流程為:先按照32字節(jié)進(jìn)行清0,剩余部分,按字節(jié)進(jìn)行清0。
3.5 外設(shè)初始化
代碼如下:
其中R_Systeminit函數(shù)是由代碼生成器,通過圖形界面配置生成。
注意:盡量不要修改該部分代碼。
如需修改,禁止執(zhí)行讀取RAM的操作。(訪問未初始化的RAM,可能觸發(fā)RAM奇偶校驗錯誤,產(chǎn)生奇偶校驗復(fù)位。)
錯誤代碼示例:
錯誤原因:g_dbgMode全局變量將在data段的初始化過程中賦值1,但此時data段還未初始化,dbgMode指向的RAM地址未寫入奇偶校驗位,if(g_dbgMode==0)語句,將執(zhí)行讀操作,可能觸發(fā)RAM奇偶校驗錯誤,產(chǎn)生奇偶校驗復(fù)位。
3.6 初始化BSS,DATA段
BSS初始化代碼如下:
DATA段初始化代碼如下:
其中HIGH/LOW/STARTOF/SIZEOF等表達(dá)式,請參考編譯器手冊文檔”CC-RL user’s manual”。
3.7 進(jìn)入main函數(shù)
3.8 堆
CC-RL V1.02以上版本支持堆的操作
如需使用堆的相關(guān)操作,需要先初始化_REL_sysheap和_REL_sizeof_sysheap,詳細(xì)內(nèi)如請參考以下示例:
來源:瑞薩MCU小百科
審核編輯:湯梓紅
-
mcu
+關(guān)注
關(guān)注
146文章
17349瀏覽量
352756 -
寄存器
+關(guān)注
關(guān)注
31文章
5368瀏覽量
121241 -
函數(shù)
+關(guān)注
關(guān)注
3文章
4346瀏覽量
62998 -
RL78
+關(guān)注
關(guān)注
2文章
119瀏覽量
21717
發(fā)布評論請先 登錄
相關(guān)推薦
瑞薩RL78/G15針對8位MCU應(yīng)用進(jìn)行的優(yōu)化
RL78/G23 Data flash使用教程
Renesas Flash Driver RL78 Type 02 RL78/F2x 用戶手冊
![Renesas Flash Driver <b class='flag-5'>RL78</b> Type 02 <b class='flag-5'>RL78</b>/F2x 用戶手冊](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
EEPROM Emulation 軟件 RL78 Type 01 用戶手冊 for RL78/G23
![EEPROM Emulation 軟件 <b class='flag-5'>RL78</b> Type 01 用戶手冊 for <b class='flag-5'>RL78</b>/G23](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
Renesas Flash Driver RL78 Type 01 用戶手冊 RL78/G23 Rev.1.00
![Renesas Flash Driver <b class='flag-5'>RL78</b> Type 01 用戶手冊 <b class='flag-5'>RL78</b>/G23 Rev.1.00](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
Renesas Flash Driver RL78 Type 02RL78/F23 和 RL78/F24 用戶手冊
![Renesas Flash Driver <b class='flag-5'>RL78</b> Type 02<b class='flag-5'>RL78</b>/F23 和 <b class='flag-5'>RL78</b>/F24 用戶手冊](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
EEPROM 仿真軟件 RL78 Type 02RL78/F23 和 RL78/F24 用戶手冊
![EEPROM 仿真軟件 <b class='flag-5'>RL78</b> Type 02<b class='flag-5'>RL78</b>/F23 和 <b class='flag-5'>RL78</b>/F24 用戶手冊](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
Renesas Flash Driver RL78 Type 02RL78/F23 和 RL78/F24 用戶手冊
![Renesas Flash Driver <b class='flag-5'>RL78</b> Type 02<b class='flag-5'>RL78</b>/F23 和 <b class='flag-5'>RL78</b>/F24 用戶手冊](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
EEPROM 仿真軟件 RL78 Type 02RL78/F23 和 RL78/F24 用戶手冊
![EEPROM 仿真軟件 <b class='flag-5'>RL78</b> Type 02<b class='flag-5'>RL78</b>/F23 和 <b class='flag-5'>RL78</b>/F24 用戶手冊](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
EEPROM Emulation 軟件 RL78 Type 01 用戶手冊 for RL78/G23
![EEPROM Emulation 軟件 <b class='flag-5'>RL78</b> Type 01 用戶手冊 for <b class='flag-5'>RL78</b>/G23](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
Renesas Flash Driver RL78 Type 01 用戶手冊 RL78/G23 Rev.1.00
![Renesas Flash Driver <b class='flag-5'>RL78</b> Type 01 用戶手冊 <b class='flag-5'>RL78</b>/G23 Rev.1.00](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
評論