0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

RL78啟動(dòng)過程詳解

jf_pJlTbmA9 ? 來源:瑞薩MCU小百科 ? 作者:瑞薩MCU小百科 ? 2023-09-28 16:39 ? 次閱讀

引言

本文詳細(xì)介紹了RL78 MCU從復(fù)位到進(jìn)入main函數(shù)的過程,有助于讀者對(duì)RL78 MCU體系結(jié)構(gòu)的理解,RAMROM的初始化,以及bootloader程序的開發(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ù)位功能框圖如下:

wKgaomUD4BiAbnAdAAGB6zk73zQ354.png

2. MCU運(yùn)行模式

RL78 MCU有正常運(yùn)行和閃存編程兩種運(yùn)行模式,在復(fù)位信號(hào)解除時(shí),通過采樣TOOL0引腳上的電平,進(jìn)入對(duì)應(yīng)的運(yùn)行模式。

wKgZomUD4BmANdOgAACK7e1913E996.png

3. 啟動(dòng)代碼分析

RL78 MCU啟動(dòng)代碼主要在cstart.asm文件中,流程如下:

wKgaomUD4BqALfJLAAH7pBUkT8s300.png

3.1 啟動(dòng)代碼入口

代碼如下:

wKgZomUD4ByAbpclAABEYoASaX4052.png

MCU復(fù)位后,PC指針指向地址0,定義復(fù)位向量在地址0。

wKgaomUD4B2AK7LoAAAQvqUPNnY510.png
wKgZomUD4B-AT1WRAAAaHUphYug593.png

3.2 寄存器組選擇

代碼如下:

wKgaomUD4CGAeIcGAAAhRjoAyUw098.png

RL78-S2有4組通用寄存器,通過SEL RBn指令選擇使用的寄存器組。

wKgaomUD4CKAWP0XAAAJshpsf78458.png

RL78通用寄存器組結(jié)構(gòu):

wKgZomUD4CSASJdrAAB7ljjytis160.png

3.3 鏡像區(qū)設(shè)置

代碼如下:

wKgaomUD4CWAAS_WAAAzMwZDDbc622.png

3.3.1鏡像區(qū)

RL78支持存取1MB的地址空間,能通過16位地址進(jìn)行存取的數(shù)據(jù)區(qū)是F0000H~FFFFFH的64K字節(jié)空間,但是如果附加“ES:”,就能擴(kuò)展到00000H~FFFFFH的1M字節(jié)空間。

wKgZomUD4CaAKXqJAACTWGkM6L8924.png

代碼閃存從地址0開始存儲(chǔ),一般需要使用20位地址訪問該區(qū)域。為了加快對(duì)代碼閃存的訪問,可以將代碼閃存的部分區(qū)域鏡像到F0000H~FFFFFH中未使用的區(qū)域。

鏡像示例如下:

wKgZomUD4CiABOVXAADqXkTn7Yg455.png

3.3.2鏡像區(qū)選擇

復(fù)位后,MAA位默認(rèn)為0,鏡像00000H~0FFFF區(qū)域到F0000H~FFFFFH區(qū)域,對(duì)于閃存大于96KB的產(chǎn)品,可以通過設(shè)置MAA位,選擇需要鏡像的區(qū)域,詳細(xì)請(qǐng)參考PMC控制寄存器。

wKgaomUD4CmAN2eEAAAMx_dkt14012.png
wKgaomUD4CqAMt42AADMAOVe6p0467.png

3.4 棧初始化

代碼如下:

wKgZomUD4CyAdmxiAADwaV-F_yI261.png

3.4.1 設(shè)置SP

將棧頂?shù)刂?__STACK_ADDR_START設(shè)置到SP寄存器。

其中__STACK_ADDR_START是由鏈接器產(chǎn)生。

wKgaomUD4C2AArw7AAAkOOHxPM0351.png

3.4.2 初始化棧

將棧底地址參數(shù)賦值給AX寄存器,然后調(diào)用棧初始化函數(shù)stkinit,將棧區(qū)域清0。

wKgZomUD4C-ALdZrAAAt6HccgWs912.png

stkinit函數(shù)在stkinit.asm文件中,代碼如下:

wKgaomUD4DGANVD-AAGnajNjJMY467.png
wKgZomUD4DKAOegaAAB0qbVyjHU039.png

大致流程為:先按照32字節(jié)進(jìn)行清0,剩余部分,按字節(jié)進(jìn)行清0。

3.5 外設(shè)初始化

代碼如下:

wKgaomUD4DSAOXbbAADVwr-iCQs087.png

其中R_Systeminit函數(shù)是由代碼生成器,通過圖形界面配置生成。

注意:盡量不要修改該部分代碼。

如需修改,禁止執(zhí)行讀取RAM的操作。(訪問未初始化的RAM,可能觸發(fā)RAM奇偶校驗(yàn)錯(cuò)誤,產(chǎn)生奇偶校驗(yàn)復(fù)位。)

錯(cuò)誤代碼示例:

wKgZomUD4DWAadhFAACcvK1rAuE323.png

錯(cuò)誤原因:g_dbgMode全局變量將在data段的初始化過程中賦值1,但此時(shí)data段還未初始化,dbgMode指向的RAM地址未寫入奇偶校驗(yàn)位,if(g_dbgMode==0)語句,將執(zhí)行讀操作,可能觸發(fā)RAM奇偶校驗(yàn)錯(cuò)誤,產(chǎn)生奇偶校驗(yàn)復(fù)位。

3.6 初始化BSS,DATA段

BSS初始化代碼如下:

wKgZomUD4DeAMqv6AAGTPzADhvM566.png

DATA段初始化代碼如下:

wKgaomUD4DiAW5c8AAHp7yVmNGc012.png

其中HIGH/LOW/STARTOF/SIZEOF等表達(dá)式,請(qǐng)參考編譯器手冊(cè)文檔”CC-RL user’s manual”。

wKgZomUD4DqAQdc0AADgrgmTbXE458.png

3.7 進(jìn)入main函數(shù)

wKgaomUD4DuAG6gaAAAIIfa1-cA890.png

3.8 堆

CC-RL V1.02以上版本支持堆的操作

wKgZomUD4D2Ae6KPAACKTxHgkm0497.png

如需使用堆的相關(guān)操作,需要先初始化_REL_sysheap和_REL_sizeof_sysheap,詳細(xì)內(nèi)如請(qǐng)參考以下示例:

wKgaomUD4D6AMllcAABJr4MVKT0001.png

來源:瑞薩MCU小百科

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • mcu
    mcu
    +關(guān)注

    關(guān)注

    146

    文章

    17148

    瀏覽量

    351185
  • 寄存器
    +關(guān)注

    關(guān)注

    31

    文章

    5343

    瀏覽量

    120348
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4331

    瀏覽量

    62609
  • RL78
    +關(guān)注

    關(guān)注

    2

    文章

    119

    瀏覽量

    21651
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    RL78學(xué)***

    在網(wǎng)上看到一本關(guān)于RL78的書籍,作者是美國(guó)人。全書13章,近400頁,內(nèi)容很充實(shí),歡迎下載:
    發(fā)表于 01-04 16:42

    有瑞薩RL78族匯編案例嗎?

    有瑞薩RL78族匯編案例嗎
    發(fā)表于 04-17 11:27

    RL78快速解決方案可以加快熱門應(yīng)用的原型設(shè)計(jì)

    RL78快速解決方案加快熱門應(yīng)用的原型設(shè)計(jì)
    發(fā)表于 01-15 07:13

    瑞薩RL78/G15針對(duì)8位MCU應(yīng)用進(jìn)行的優(yōu)化

    RL78/G15是一款通用微控制器,工作頻率為16MHz,針對(duì)8位MCU應(yīng)用進(jìn)行了優(yōu)化,適用于工業(yè)、消費(fèi)類、傳感器控制、照明和逆變器等各種應(yīng)用。1. RL78/G15 MCU的主要特性RL78
    發(fā)表于 02-13 17:48

    使用 RL78/G13 實(shí)現(xiàn)流水燈的過程

    從流水燈開始學(xué)習(xí)RL78
    的頭像 發(fā)表于 06-14 12:12 ?3518次閱讀

    RL78/G23 Data flash使用教程

    RL78/G23 Data flash使用與之前的RL78系列(如RL78/G13)有所不同,詳細(xì)介紹及使用如下。
    的頭像 發(fā)表于 09-09 12:58 ?2865次閱讀

    Renesas Flash Driver RL78 Type 02 RL78/F2x 用戶手冊(cè)

    Renesas Flash Driver RL78 Type 02 RL78/F2x 用戶手冊(cè)
    發(fā)表于 01-10 19:04 ?1次下載
    Renesas Flash Driver <b class='flag-5'>RL78</b> Type 02 <b class='flag-5'>RL78</b>/F2x 用戶手冊(cè)

    EEPROM Emulation 軟件 RL78 Type 01 用戶手冊(cè) for RL78/G23

    EEPROM Emulation 軟件 RL78 Type 01 用戶手冊(cè) for RL78/G23
    發(fā)表于 01-13 18:58 ?3次下載
    EEPROM Emulation 軟件 <b class='flag-5'>RL78</b> Type 01 用戶手冊(cè) for <b class='flag-5'>RL78</b>/G23

    Renesas Flash Driver RL78 Type 01 用戶手冊(cè) RL78/G23 Rev.1.00

    Renesas Flash Driver RL78 Type 01 用戶手冊(cè) RL78/G23 Rev.1.00
    發(fā)表于 02-02 18:49 ?0次下載
    Renesas Flash Driver <b class='flag-5'>RL78</b> Type 01 用戶手冊(cè) <b class='flag-5'>RL78</b>/G23 Rev.1.00

    Renesas Flash Driver RL78 Type 02RL78/F23 和 RL78/F24 用戶手冊(cè)

    Renesas Flash Driver RL78 Type 02 RL78/F23 和 RL78/F24 用戶手冊(cè)
    發(fā)表于 05-12 19:25 ?3次下載
    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 用戶手冊(cè)

    EEPROM 仿真軟件 RL78 Type 02RL78/F23 和 RL78/F24 用戶手冊(cè)

    EEPROM 仿真軟件 RL78 Type 02 RL78/F23 和 RL78/F24 用戶手冊(cè)
    發(fā)表于 05-19 18:41 ?2次下載
    EEPROM 仿真軟件 <b class='flag-5'>RL78</b> Type 02<b class='flag-5'>RL78</b>/F23 和 <b class='flag-5'>RL78</b>/F24 用戶手冊(cè)

    Renesas Flash Driver RL78 Type 02RL78/F23 和 RL78/F24 用戶手冊(cè)

    Renesas Flash Driver RL78 Type 02 RL78/F23 和 RL78/F24 用戶手冊(cè)
    發(fā)表于 06-29 19:17 ?1次下載
    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 用戶手冊(cè)

    EEPROM 仿真軟件 RL78 Type 02RL78/F23 和 RL78/F24 用戶手冊(cè)

    EEPROM 仿真軟件 RL78 Type 02 RL78/F23 和 RL78/F24 用戶手冊(cè)
    發(fā)表于 06-29 19:33 ?0次下載
    EEPROM 仿真軟件 <b class='flag-5'>RL78</b> Type 02<b class='flag-5'>RL78</b>/F23 和 <b class='flag-5'>RL78</b>/F24 用戶手冊(cè)

    EEPROM Emulation 軟件 RL78 Type 01 用戶手冊(cè) for RL78/G23

    EEPROM Emulation 軟件 RL78 Type 01 用戶手冊(cè) for RL78/G23
    發(fā)表于 07-03 19:32 ?0次下載
    EEPROM Emulation 軟件 <b class='flag-5'>RL78</b> Type 01 用戶手冊(cè) for <b class='flag-5'>RL78</b>/G23

    Renesas Flash Driver RL78 Type 01 用戶手冊(cè) RL78/G23 Rev.1.00

    Renesas Flash Driver RL78 Type 01 用戶手冊(cè) RL78/G23 Rev.1.00
    發(fā)表于 07-04 18:35 ?1次下載
    Renesas Flash Driver <b class='flag-5'>RL78</b> Type 01 用戶手冊(cè) <b class='flag-5'>RL78</b>/G23 Rev.1.00