瑞萨 RAM 存储机制与双 BANK 机制

1、RAM 分布架构

RH850 分为 4 个 Cluster,每个 Cluster 具有可供所有 CPU 访问的 Cluster RAM。每个 CPU 具有私有访问的 Locam RAM。Cluster 0 与 Cluster 1 具有 2 个 CPU。

2、Cluster RAM 划分

理解 Cluester RAM 公有的含义:将 Cluster RAM 划分为多个部分,分别供不同 CPU 访问:

;cluster ram0 address
  CLUSTER_RAM0_ADDR   .set 0xFE00 0000  ; CLUSTER RAM(Cluster0) start address
  CLUSTER_RAM0_END    .set 0xFE07 FFFF  ; CLUSTER RAM(Cluster0) end address
  CLUSTER_RAM0_ADDR0   .set 0xFE00 0000  ; CLUSTER RAM(Cluster0) start address
  CLUSTER_RAM0_END0    .set 0xFE07 FFFF  ; CLUSTER RAM(Cluster0) end address
  CLUSTER_RAM0_ADDR1   .set 0xFE04 0000  ; CLUSTER RAM(Cluster0) start address
  CLUSTER_RAM0_END1    .set 0xFE07 FFFF  ; CLUSTER RAM(Cluster0) end address
  ...

3、CPU0 访问 RAM 划分如下:

CPU0: LRAM(PE0)、C0、C2、C3
CPU1: LRAM(PE1)、C0、C2、C3
CPU2: LRAM(PE2)、C1、C2、C3
CPU3: LRAM(PE3)、C1、C2、C3

4、Local RAM(PE) 与 Local RAM(self) 的理解

  • Local RAM(self) 是多个 Local RAM(PE) 共同映射的区域;
  • CPU0 和 CPU1 虽然使用同一地址访问 Local RAM(self),但是它们实际访问的物理地址是各自的 Local RAM(PE);

5、RAM 的初始化

  • LRAM 与 CRAM 在使用前都需要初始化。若使用未初始化的 RAM 空间,读数据时可能会产生 ECC 校验错误。ECC 校验按每 4 个字节进行,在写 RAM 数据时写入,在读 RAM 数据时发生

6、双 BANK 原理与启动流程

瑞萨分为 2 种模式:Single Map Mode 与 Double Map Mode。
1)在 Single Map Mode 下,划分出 4 个 4MB 的 Bank A//B/C/D,且只有 Bank A 跟 Bank B 有 256K 的 User Boot Area。;
2)在 Double Map Mode 下,Bank A 与 Bank B 互为备份,Bank C 与 Bank D 互为备份。所以可以推断出,Bank AB 属于 Cluster 0,Bank CD 属于 Cluster 1。

7、双 Bank 工作原理

参考链接:https://zhuanlan.zhihu.com/p/567337414

基于两个独立的 Bank,用户可以选择将应用程序放在任意一个 Bank 中运行,通过设置标志位 BFLAG 决定从哪一个 Bank 启动。假设某 MCU 的启动位置始终为 0x08000000,通过地址重映射的方式,将不同的 Bank 起始地址指定到 0x08000000。

  • BFLAG = 0,MCU 双 BANK 启动禁用,Bank1 的起始地址为 0x08000000,Bank2 的起始地址为 0x08040000,从 Bank1 启动运行;
  • BFLAG = 1,MCU 双 BANK 启动使能,Bank2 的起始地址为 0x08000000,Bank1 的起始地址为 0x08040000,
    从 Bank2 启动运行,若 Bank2 无正常程序,则检测 Bank1 是否有正常程序,若有,则从 Bank1 启动,否则跳转到系统 Bootloader 运行

8、Bootloader和BIOS概念

参考链接1:https://zhuanlan.zhihu.com/p/496270623 # Bootloader和BIOS概念
参考链接2:https://www.dingmos.com/index.php/archives/31/ # 操作系统引导:Bootloader

  • 电源通电后,CPU 开始运转,烧录在 ROM 的 BIOS(Basic Inpit Output System) 开始运行,引导机器去哪里找 OS 系统运行,同时做一些硬件检测。若硬件检测成功,才会把硬件控制权交给 OS;
  • BIOS 程序是靠硬件方法完成的;
  • Bootloader 在 BIOS 之后、OS 内核运行之前运行的一段程序。通过 Bootloader,可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到合适的状态,以便为最终调用 OS 内核准备好正确的环境。通常,Boot Loader 是严重地依赖于硬件而实现的。
  • BIOS 与 Bootloader 区别:均为底层程序片断。只是 PC 端外设比较复杂才分开。

普通的 Bootloader 实现的功能:
1)初始化硬件设备;
2)建立内存空间的映射表,并将操作系统代码载入到 RAM 中;
3)设置堆栈执行环境,为高级语言(如 C 语言)提供执行环境;
4)将控制权交给操作系统。到这一步,系统的完整启动也就结束啦。

posted @ 2024-03-18 09:23  MasterBean  阅读(998)  评论(0)    收藏  举报