<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

RL78啟動過程詳解

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

引言

本文詳細介紹了RL78 MCU從復位到進入main函數的過程,有助于讀者對RL78 MCU體系結構的理解,RAMROM的初始化,以及bootloader程序的開發。

1. RL78復位源

RL78 MCU有以下7種復位源:

外部復位:

RESET復位引腳

內部復位:

上電復位(POR)

看門狗復位

低電壓復位

非法指令復位

RAM奇偶校驗錯誤復位

存取非法寄存器復位

復位功能框圖如下:

wKgaomUD4BiAbnAdAAGB6zk73zQ354.png

2. MCU運行模式

RL78 MCU有正常運行和閃存編程兩種運行模式,在復位信號解除時,通過采樣TOOL0引腳上的電平,進入對應的運行模式。

wKgZomUD4BmANdOgAACK7e1913E996.png

3. 啟動代碼分析

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

wKgaomUD4BqALfJLAAH7pBUkT8s300.png

3.1 啟動代碼入口

代碼如下:

wKgZomUD4ByAbpclAABEYoASaX4052.png

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

wKgaomUD4B2AK7LoAAAQvqUPNnY510.png
wKgZomUD4B-AT1WRAAAaHUphYug593.png

3.2 寄存器組選擇

代碼如下:

wKgaomUD4CGAeIcGAAAhRjoAyUw098.png

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

wKgaomUD4CKAWP0XAAAJshpsf78458.png

RL78通用寄存器組結構:

wKgZomUD4CSASJdrAAB7ljjytis160.png

3.3 鏡像區設置

代碼如下:

wKgaomUD4CWAAS_WAAAzMwZDDbc622.png

3.3.1鏡像區

RL78支持存取1MB的地址空間,能通過16位地址進行存取的數據區是F0000H~FFFFFH的64K字節空間,但是如果附加“ES:”,就能擴展到00000H~FFFFFH的1M字節空間。

wKgZomUD4CaAKXqJAACTWGkM6L8924.png

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

鏡像示例如下:

wKgZomUD4CiABOVXAADqXkTn7Yg455.png

3.3.2鏡像區選擇

復位后,MAA位默認為0,鏡像00000H~0FFFF區域到F0000H~FFFFFH區域,對于閃存大于96KB的產品,可以通過設置MAA位,選擇需要鏡像的區域,詳細請參考PMC控制寄存器。

wKgaomUD4CmAN2eEAAAMx_dkt14012.png
wKgaomUD4CqAMt42AADMAOVe6p0467.png

3.4 棧初始化

代碼如下:

wKgZomUD4CyAdmxiAADwaV-F_yI261.png

3.4.1 設置SP

將棧頂地址 __STACK_ADDR_START設置到SP寄存器。

其中__STACK_ADDR_START是由鏈接器產生。

wKgaomUD4C2AArw7AAAkOOHxPM0351.png

3.4.2 初始化棧

將棧底地址參數賦值給AX寄存器,然后調用棧初始化函數stkinit,將棧區域清0。

wKgZomUD4C-ALdZrAAAt6HccgWs912.png

stkinit函數在stkinit.asm文件中,代碼如下:

wKgaomUD4DGANVD-AAGnajNjJMY467.png
wKgZomUD4DKAOegaAAB0qbVyjHU039.png

大致流程為:先按照32字節進行清0,剩余部分,按字節進行清0。

3.5 外設初始化

代碼如下:

wKgaomUD4DSAOXbbAADVwr-iCQs087.png

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

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

如需修改,禁止執行讀取RAM的操作。(訪問未初始化的RAM,可能觸發RAM奇偶校驗錯誤,產生奇偶校驗復位。)

錯誤代碼示例:

wKgZomUD4DWAadhFAACcvK1rAuE323.png

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

3.6 初始化BSS,DATA段

BSS初始化代碼如下:

wKgZomUD4DeAMqv6AAGTPzADhvM566.png

DATA段初始化代碼如下:

wKgaomUD4DiAW5c8AAHp7yVmNGc012.png

其中HIGH/LOW/STARTOF/SIZEOF等表達式,請參考編譯器手冊文檔”CC-RL user’s manual”。

wKgZomUD4DqAQdc0AADgrgmTbXE458.png

3.7 進入main函數

wKgaomUD4DuAG6gaAAAIIfa1-cA890.png

3.8 堆

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

wKgZomUD4D2Ae6KPAACKTxHgkm0497.png

如需使用堆的相關操作,需要先初始化_REL_sysheap和_REL_sizeof_sysheap,詳細內如請參考以下示例:

wKgaomUD4D6AMllcAABJr4MVKT0001.png

來源:瑞薩MCU小百科

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • mcu
    mcu
    +關注

    關注

    146

    文章

    16085

    瀏覽量

    344375
  • 寄存器
    +關注

    關注

    30

    文章

    5113

    瀏覽量

    118007
  • 函數
    +關注

    關注

    3

    文章

    4093

    瀏覽量

    61416
  • RL78
    +關注

    關注

    2

    文章

    113

    瀏覽量

    21485
收藏 人收藏

    評論

    相關推薦

    RL78學***

    在網上看到一本關于RL78的書籍,作者是美國人。全書13章,近400頁,內容很充實,歡迎下載:
    發表于 01-04 16:42

    RL78快速解決方案可以加快熱門應用的原型設計

    RL78快速解決方案加快熱門應用的原型設計
    發表于 01-15 07:13

    RL78 dataflash pfdl庫使用教程

    瑞薩RL78 dataflash pfdl庫使用1.安裝PFDL庫2.CS+ for CC配置4.讀dataflash5.寫dataflash6.注意事項1.安裝PFDL庫從瑞薩官方下載
    發表于 07-23 09:48

    瑞薩RL78/G15針對8位MCU應用進行的優化

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

    RL78/G23 Data flash使用教程

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

    Renesas Flash Driver RL78 Type 02 RL78/F2x 用戶手冊

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

    EEPROM Emulation 軟件 RL78 Type 01 用戶手冊 for RL78/G23

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

    E1/E20 Emulator, E2Emulator Lite 用戶手冊附加文件(RL78連接注意事項)(for RL78/G10, RL78/G1M, RL78/G1N)

    E1/E20 Emulator, E2 Emulator Lite 用戶手冊附加文件(RL78連接注意事項)(for RL78/G10, RL78/G1M, RL78/G1N)
    發表于 03-13 19:21 ?1次下載
    E1/E20 Emulator, E2Emulator Lite 用戶手冊附加文件(<b class='flag-5'>RL78</b>連接注意事項)(for <b class='flag-5'>RL78</b>/G10, <b class='flag-5'>RL78</b>/G1M, <b class='flag-5'>RL78</b>/G1N)

    RL78/F1A ユーザーズマニュアル ハードウェア編

    RL78/F1A ユーザーズマニュアル ハードウェア編
    發表于 03-24 18:49 ?0次下載
    <b class='flag-5'>RL78</b>/F1A ユーザーズマニュアル ハードウェア編

    RL78、78K0R用 Cコンパイラ CA78K0R リンク?ディレクティブの説明

    RL78、78K0R用 Cコンパイラ CA78K0R リンク?ディレクティブの説明
    發表于 03-29 19:44 ?0次下載
    <b class='flag-5'>RL78</b>、<b class='flag-5'>78</b>K0R用 Cコンパイラ CA<b class='flag-5'>78</b>K0R リンク?ディレクティブの説明

    RL78ファミリ用CコンパイラCA78K0R スタートアップルーチンの変更について(RL78/G10用)

    RL78ファミリ用CコンパイラCA78K0R スタートアップルーチンの変更について(RL78/G10用)
    發表于 03-29 19:44 ?0次下載
    <b class='flag-5'>RL78</b>ファミリ用CコンパイラCA<b class='flag-5'>78</b>K0R スタートアップルーチンの変更について(<b class='flag-5'>RL78</b>/G10用)

    EEPROM Emulation 軟件 RL78 Type 01 用戶手冊 for RL78/G23

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

    E1/E20 Emulator, E2Emulator Lite 用戶手冊附加文件(RL78連接注意事項)(for RL78/G10, RL78/G1M, RL78/G1N)

    E1/E20 Emulator, E2 Emulator Lite 用戶手冊附加文件(RL78連接注意事項)(for RL78/G10, RL78/G1M, RL78/G1N)
    發表于 07-04 20:39 ?3次下載
    E1/E20 Emulator, E2Emulator Lite 用戶手冊附加文件(<b class='flag-5'>RL78</b>連接注意事項)(for <b class='flag-5'>RL78</b>/G10, <b class='flag-5'>RL78</b>/G1M, <b class='flag-5'>RL78</b>/G1N)

    RL78/F1A ユーザーズマニュアル ハードウェア編

    RL78/F1A ユーザーズマニュアル ハードウェア編
    發表于 07-10 20:39 ?0次下載
    <b class='flag-5'>RL78</b>/F1A ユーザーズマニュアル ハードウェア編

    RL78ファミリ用CコンパイラCA78K0R スタートアップルーチンの変更について(RL78/G10用)

    RL78ファミリ用CコンパイラCA78K0R スタートアップルーチンの変更について(RL78/G10用)
    發表于 07-12 19:52 ?0次下載
    <b class='flag-5'>RL78</b>ファミリ用CコンパイラCA<b class='flag-5'>78</b>K0R スタートアップルーチンの変更について(<b class='flag-5'>RL78</b>/G10用)
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>