引言
本文詳細(xì)介紹了RL78 MCU從復(fù)位到進(jìn)入main函數(shù)的過(guò)程,有助于讀者對(duì)RL78 MCU體系結(jié)構(gòu)的理解,RAM和ROM的初始化,以及bootloader程序的開(kāi)發(fā)。
1. RL78復(fù)位源
RL78 MCU有以下7種復(fù)位源:
外部復(fù)位:
RESET復(fù)位引腳
內(nèi)部復(fù)位:
上電復(fù)位(POR)
看門狗復(fù)位
低電壓復(fù)位
非法指令復(fù)位
RAM奇偶校驗(yàn)錯(cuò)誤復(fù)位
存取非法寄存器復(fù)位
復(fù)位功能框圖如下:
2. MCU運(yùn)行模式
RL78 MCU有正常運(yùn)行和閃存編程兩種運(yùn)行模式,在復(fù)位信號(hào)解除時(shí),通過(guò)采樣TOOL0引腳上的電平,進(jìn)入對(duì)應(yīng)的運(yùn)行模式。
3. 啟動(dòng)代碼分析
RL78 MCU啟動(dòng)代碼主要在cstart.asm文件中,流程如下:
3.1 啟動(dòng)代碼入口
代碼如下:
MCU復(fù)位后,PC指針指向地址0,定義復(fù)位向量在地址0。
3.2 寄存器組選擇
代碼如下:
RL78-S2有4組通用寄存器,通過(guò)SEL RBn指令選擇使用的寄存器組。
RL78通用寄存器組結(jié)構(gòu):
3.3 鏡像區(qū)設(shè)置
代碼如下:
3.3.1鏡像區(qū)
RL78支持存取1MB的地址空間,能通過(guò)16位地址進(jìn)行存取的數(shù)據(jù)區(qū)是F0000H~FFFFFH的64K字節(jié)空間,但是如果附加“ES:”,就能擴(kuò)展到00000H~FFFFFH的1M字節(jié)空間。
代碼閃存從地址0開(kāi)始存儲(chǔ),一般需要使用20位地址訪問(wèn)該區(qū)域。為了加快對(duì)代碼閃存的訪問(wèn),可以將代碼閃存的部分區(qū)域鏡像到F0000H~FFFFFH中未使用的區(qū)域。
鏡像示例如下:
3.3.2鏡像區(qū)選擇
復(fù)位后,MAA位默認(rèn)為0,鏡像00000H~0FFFF區(qū)域到F0000H~FFFFFH區(qū)域,對(duì)于閃存大于96KB的產(chǎn)品,可以通過(guò)設(shè)置MAA位,選擇需要鏡像的區(qū)域,詳細(xì)請(qǐng)參考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ù)是由代碼生成器,通過(guò)圖形界面配置生成。
注意:盡量不要修改該部分代碼。
如需修改,禁止執(zhí)行讀取RAM的操作。(訪問(wèn)未初始化的RAM,可能觸發(fā)RAM奇偶校驗(yàn)錯(cuò)誤,產(chǎn)生奇偶校驗(yàn)復(fù)位。)
錯(cuò)誤代碼示例:
錯(cuò)誤原因:g_dbgMode全局變量將在data段的初始化過(guò)程中賦值1,但此時(shí)data段還未初始化,dbgMode指向的RAM地址未寫入奇偶校驗(yàn)位,if(g_dbgMode==0)語(yǔ)句,將執(zhí)行讀操作,可能觸發(fā)RAM奇偶校驗(yàn)錯(cuò)誤,產(chǎn)生奇偶校驗(yàn)復(fù)位。
3.6 初始化BSS,DATA段
BSS初始化代碼如下:
DATA段初始化代碼如下:
其中HIGH/LOW/STARTOF/SIZEOF等表達(dá)式,請(qǐng)參考編譯器手冊(cè)文檔”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)如請(qǐng)參考以下示例:
來(lái)源:瑞薩MCU小百科
審核編輯:湯梓紅
-
mcu
+關(guān)注
關(guān)注
146文章
16885瀏覽量
349912 -
寄存器
+關(guān)注
關(guān)注
31文章
5294瀏覽量
119813 -
函數(shù)
+關(guān)注
關(guān)注
3文章
4277瀏覽量
62321 -
RL78
+關(guān)注
關(guān)注
2文章
119瀏覽量
21612
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論