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

    文章

    16016

    浏览量

    343607
  • 寄存器
    +关注

    关注

    30

    文章

    5028

    浏览量

    117719
  • 函数
    +关注

    关注

    3

    文章

    3868

    浏览量

    61308
  • RL78
    +关注

    关注

    2

    文章

    113

    浏览量

    21465
收藏 人收藏

    评论

    相关推荐

    RL78学***

    在网上看到一本关于RL78的书籍,作者是美国人。全书13章,近400页,内容很充实,欢迎下载:
    发表于 01-04 16:42

    RL78快速解决方案可以加快热门应用的原型设计

    RL78快速解决方案加快热门应用的原型设计
    发表于 01-15 07:13

    瑞萨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 1938次阅读

    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 ユーザーズマニュアル ハードウェア編

    RL7878K0R用 Cコンパイラ CA78K0R リンク・ディレクティブの説明

    RL7878K0R用 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 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 ユーザーズマニュアル ハードウェア編
    发表于 07-10 20:39 0次下载
    <b class='flag-5'>RL78</b>/F1A ユーザーズマニュアル ハードウェア編

    RL7878K0R用 Cコンパイラ CA78K0R 変数セクションの追加方法

    RL7878K0R用 Cコンパイラ CA78K0R 変数セクションの追加方法
    发表于 07-12 19:51 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用)
    发表于 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用)