目录

1. 概述

RH850/U2A系列Flash Memory

Code Flash

Data Flash

刷写流程

启动过程

Overall Flow

启动进程的详细信息


1. 概述

RH850/U2A MCU是瑞萨电子跨域MCU的第一个成员,这是新一代汽车控制设备。基于28纳米(nm)制程技术,32位RH850/U2A汽车MCU建立在瑞萨电子RH850/Px系列(底盘控制)和RH850/Fx系列(车身控制)的关键功能基础上,以提供更高的性能。

MCU包括满足EVITA Full的安全功能,以增强对网络攻击的保护,使设备能够随着安全需求的发展而支持安全快速的全无等待无线(OTA)软件更新。

RH850/U2A MCU还配备了广泛的网络接口,使MCU能够处理ADAS和自动驾驶功能中多种类型传感器产生的大量传感器数据。这使客户能够支持未来的高速网络功能和先进的通信吞吐量要求。

RH850/U2A系列Flash Memory

Code Flash

— 容量:用户区(User Area)最大16 Mbytes,用户引导区(User Boot Area)最大 2x 64 Kbytes。

—多bank配置。

—程序单位:512字节

—Erase单位:每个User Area中8块为16Kbytes,剩余块为64Kbytes

—每个模块支持OTP (One Time Programmable)。

—支持bank间地址映射交换。

Data Flash

●数据区:

-容量:高达512千字节(两个数据区:256千字节+ 256千字节)和ICUMHA专用64K字节

-程序单元:4,8,16,32,64,128字节DMA可以多次启动4字节程序,无需软件开销。(在一个数据区域内)

-擦除单元:Nx 4kbytes (N = 1,2,3…)(在一个数据区域内)

DMA可以在没有软件开销的情况下多次初始化4字节程序。

(在一个数据区内)

-擦除单元:Nx 4kbytes (N = 1,2,3…)(在一个数据区域内)

●硬件属性区域:

本产品的设置可在“数据闪存”的“硬件属性区域”中进行配置。

硬件属性区包括配置设置区、扩展数据区、安全设置区、块保护区、开关区、TAG区和擦除计数器区。

-配置设置区:存放系统配置参数。(Flash选项字节,重置矢量,软件配置选项字节等)

-安全设置区域:用于存储安全参数。(ID代码,安全设置标志等)

-块保护区域:用于存储代码Flash保护设置。(OTP标志等)

-开关区域和TAG区域:以原子和健壮的方式更新配置设置区域,安全设置区域和块保护区域。

-擦除计数器区:用于存储擦除计数器。

-扩展数据区用于存储供用户软件使用的任何数据。

容量:2kb

程序单位:4、8、16、32、64、128字节

擦除单位:2kbytes

Switch区域的有效区域由:TAG区域中的VAF选择。

“配置设置区域”、“安全设置区域”和“块保护区域”的有效区域由:“交换区域”的有效区域中的CVA、SVA和BVA选择

刷写流程

启动过程

Overall Flow

启动进程的详细信息

1. Power-On上电(复位中断) : 上电时,程序计数器变成复位向量地址(复位段)。它从RESET Vector跳转到__start例程。

设备上电后,PE0启动。在PE0的处理中,如果ENABLE_PE1_BY_PE0为1, PE1被激活,ENABLE_PE2_BY_PE0为1, PE2被激活,ENABLE_PE3_BY_PE0为1, PE3被激活。

2. Initializing Registers初始化寄存器

3.Clock Gearup Settings时钟Gearup设置: 启动PE0后,将系统时钟改为PLL,并执行时钟Gearup。

当满足以下所有条件时,该流程才会执行。

·ENABLE_CLOCK_GEARUP为1。

·正在运行的PE为PE0(PEID bit0:2(PEID)=0)

·主OSC和PLL启用(PLLS=0x00000003)

4. Module Standby Settings模块备用设置:设置要使用的功能的模块备用寄存器。

当满足以下所有条件时,该流程才会执行。

·ENABLE_MODULE_STANDBY_SET为1

·正在运行的PE为PE0(PEID bit0:2(PEID)=0)

5. Enabling PE1~3使能PE1~3:使能PE1、PE2或PE3,将BOOTCTRL (PE1 bit1(BC1)、PE2 bit2(BC2)、PE3 bit3(BC3))对应的PEx位设置为1。

·启用PE1,设置1为ENABLE_PE1_BY_PE0。

·启用PE2,设置1为ENABLE_PE2_BY_PE0。

·启用PE3,设置1为ENABLE_PE3_BY_PE0。

·进程PE为PE0(PEID bit0:2(PEID)=0)

6. Initializing RAM Areas初始化RAM区域:初始化本地RAM和集群RAM。

在本项目中,为了缩短启动时间,每个PE在指定的RAM地址区域内执行初始化。

7. Initializing RAM Areas定时同步(PE0~PE3):正在进行的PE等待,以便其他PE可以同时进一步处理。

当满足以下所有条件时,该流程才会执行

·ENABLE_PE1_BY_PE0为1

·ENABLE_PE2_BY_PE0为1

·ENABLE_PE3_BY_PE0为1

8. Setting Interrupt Handler Address设置中断处理程序地址:在表引用方法中设置一个基指针地址为INTBP。

要设置的基指针地址是EIINTTBL节的起始地址。

设置RBASE的初始值:(PE0,PE1: 0x00000000, PE2,PE3: 0x00800000)作为直接向量法的基址,因为通过寄存器初始化将“0”设置为PSW: bit15 (EBV)。

如果“1”设置为PSW: bit15 (EBV),则使用寄存器初始化时设置为EBASE的“0”。

当满足以下所有条件时,该流程才会执行。

•USE_TABLE_REFERENCE_METHOD为1。

9. Setting Each Pointer设置每个指针: 设置堆栈指针、全局指针和元素指针。

每个指针需要设置的值如下:

·堆栈指针

如果正在运行的PE为PE0,则为_stacktop_pm0的地址(PEID bit0:2(PEID)=0)。

如果正在运行的PE为PE1,则为_stacktop_pm1的地址(PEID bit0:2(PEID)=1)。

如果正在运行的PE为PE2,则为_stacktop_pm2的地址(PEID bit0:2(PEID)=2)。

如果正在运行的PE为PE3,则为_stacktop_pm3的地址(PEID bit0:2(PEID)=3)。

·全局指针。

__gp_data的起始地址

·元素指针

__ep_data的起始地址

10. Setting RAM Areas设置RAM区域

__INITSCT_RH例程初始化。data节(带有初始值的RAM节)和。bss节(没有初始值的RAM节)。

通过调用__INITSCT_RH例程,将初始值为参数寄存器的RAM节的初始化表的起始地址和结束地址设置为参数寄存器(r6和r7),以及将初始值为参数寄存器的RAM节的初始化表的起始地址和结束地址设置为参数寄存器(r8和r9),可以将数据从ROM复制到。data节并将。bss节清除为零。

具有初始值的RAM节的初始化表需要位于. init_dsec中。const部分。

以及拷贝源ROM段的起始和结束地址

并且需要将复制目的RAM段的起始地址设置到表中。

没有初始值的RAM段的初始化表需要位于. init_bsec中。const部分。

并且需要将清除的RAM段的起始地址和结束地址设置到表中。

11. Setting Coprocessor设置Coprocessor:设置“1”为“FEPSW bit16 (CU0)”,使能FPU。

如果不需要配置FPU板,请将“0”设置为“PSW bit16 (CU0)”。

12. Calling a Main Function of User Application调用用户应用程序的主函数:程序计数器转换到用户应用程序的主函数:

如果运行的PE为PE0(PEID bit0:2(PEID)=0),则为_main_pm0。

如果正在运行的PE为PE1(PEID bit0:2(PEID)=1),则为_main_pm1。

如果正在运行的PE是PE2(PEID bit0:2(PEID)=2),则为_main_pm2。

如果正在运行的PE为PE3(PEID bit0:2(PEID)=3),则为_main_pm3。