【RH850U2A芯片】RAM and Flash介绍

目录

前言

正文

1.RH850-U2A16芯片RAM

1.1 用户使用RAM类型及大小

1.2 各类RAM起始地址

1.3 LRAM和CRAM的区别

1.4 RAM初始化问题

1.5 RAM使用经验

2.RH850-U2A16芯片Flash

2.1 Flash类型及大小

2.2 各类Flash的起始地址

2.3 Code Flash和Data Flash的区别

2.4 Flash的读写

2.4.1 Code Flash和Data Flash的最小编程单元

2.4.2 Flash的擦写驱动

3.总结


前言

RH850-U2A16是瑞萨(Renesas)公司针对汽车域控制器推出的一款MCU芯片,功能强大,资源丰富。本系列文章将详细介绍RH850-U2A16芯片,本文为RH850-U2A16 RAM和Flash介绍。

正文

1.RH850-U2A16芯片RAM

1.1 用户使用RAM类型及大小

表1:RH850-U2A芯片RAM资源表

用户可使用的RAM有两类:

LRAM(Local RAM): 共4个,每个64KB大小,每个CPU有一个。

CRAM(Cluster RAM): 共4块CRAM,Cluster RAM0:512KB, Cluster RAM1:512KB, Cluster RAM2: 2M, Cluster RAM3:256KB 

1.2 各类RAM起始地址

表2:LRAM和CRAM的起始地址

1.3 LRAM和CRAM的区别

RH850-U2A16芯片有4个核,每个核有一个LRAM,所有的核共享CRAM。LRAM的读写速度要快于CRAM。

1.4 RAM初始化问题

不管LRAM还是CRAM,在使用前都需要进行初始化,如果使用没有初始化的RAM空间,读数据时可能产生ECC校验错误。

为什么说可能产生ECC校验错误? -- 因为ECC校验类似CRC校验,每四个字节产生ECC校验数据,ECC校验数据在写RAM数据时写入,ECC校验在读RAM数据时发生。所以,如果我们在初始化阶段没有对RAM进行初始化,但是我们在使用未初始化的RAM空间时是按4字节数据操作写入的话,在读数据时也是4字节数据读出来,就不会产生ECC校验错误。

RAM初始化一般在系统启动阶段(跳到main函数之前)通过汇编代码完成。

软件复位(非冷启动,Power On Reset)系统重启后,没有初始化的RAM中数据还保存上一次的值。

1.5 RAM使用经验

车载项目中ECU内部跑的代码是不带Flash擦写驱动的(升级时外部导入),如果ECU系统本身还没有外挂EEPROM的话(无Flash驱动也就是意味着不能写片内Flash,无外挂EEPROM,也就是意味着整个系统无可用的ROM),我们可以利用1.4中RAM不初始化复位后记忆数据的特性存储升级标志。

ECU内存布局设计(Memory Layout)的时候,在给函数调用栈(Stack)的头尾预留合适的冗余RAM,这样在发生栈溢出的时候还能一定程度上防止改成其他重要的RAM数据。同时在设计栈监控(stack monitor)程序的时候也能排上用场。

图2:栈冗余RAM

2.RH850-U2A16芯片Flash

2.1 Flash类型及大小

表3:RH850-U2A芯片Flash资源表

CFlash(Code Flash): 16M

DFlash(Data Flash): 576KB的Data Flash == 512KB User Area + 64KM专门用于ICUMHA(Intelligent Cryptographic Unit)

2.2 各类Flash的起始地址

表4:CFlash和DFlash的起始地址

2.3 Code Flash和Data Flash的区别

顾名思义,CFlash一般用于存储代码,DFlash一般用于存储数据。CPU指令可以从CFlash,LRAM,CRAM中取(运行程序),但是不能从DFlash中取。

DFlash起到片内EEPROM的作用,一般用来存储一些下电需要保存的Flag。

2.4 Flash的读写

2.4.1 Code Flash和Data Flash的最小编程单元

图3:Flash的读写单元

Code Flash最小的编程单元是512字节,Code Flash一般用来存储代码,Code Flash可以运行代码(其实就是从Code Flash中取指令)。

Data Flash最小的编程单元是4字节,Data Flash一般用来存储非易失数据,Data Flash不可以运行代码。

2.4.2 Flash的擦写驱动

Flash的擦写驱动不允许出现在量产的产品软件当中,升级时通过UDS升级协议存储到ECU RAM当中,完成升级后RAM被重新初始化,Flash擦写驱动被清楚,防止产品软件被异常擦除。

RH850-U2A16的Flash驱动需要通过读写Flash控制及状态寄存器,发送FACI(Flash Application Command Interface)命令来实现。

Note: RH850-U2A16的Flash驱动的具体编写请关注本公众号的后续文章!

图4:FACI编程命令

图4:FACI块擦除流程图

3.总结

项目开发初期,就会对项目使用Memroy进行内存划分(Memroy Layout),包括Bootloader存储区,APP代码存储区,标定数据区,栈区等。这些逻辑逻辑区的物理载体就是芯片的RAM和Flash,所以熟悉一款芯片的RAM和Flash对于底层开发的工程师来说也非常的重要。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/334808.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python基础知识:整理7 字典的定义及其相关操作

1 字典的定义 # 1. 字典的定义 # 定义字典的字面量 # {key: value, key: value, ......, key: value}# 定义字典变量 # my_dict {key: value, key: value, ......, key: value}# 定义空字典 # my_dict {} # my_dict dict()定义重复Key的字典 my_dict1 {"张三": …

Spring MVC响应结合RESTful风格开发,打造具有强大功能和良好体验的Web应用!

响应与Rest风格 1.11.1.1 环境准备步骤1:设置返回页面步骤2:启动程序测试 1.1.2 返回文本数据步骤1:设置返回文本内容步骤2:启动程序测试 1.1.3 响应JSON数据响应POJO对象响应POJO集合对象 知识点1:ResponseBody 2,Rest风格2.1 REST简介2.2 RESTful入门案…

Google Earth Engine(GEE)深度学习入门教程- GEE导出篇

GEE导出篇 官方教程:TFRecord 和地球引擎 在GEE的JS Code Editor中,我们按照我们的需要去处理对应的遥感影像,得到处理后Image影像。为了导出后读取数据,在导出前一定清楚每个波段的名称(不然没法读取)。…

Centos7 手动更改系统时间

文章目录 1.更改系统时间2.写入系统时间3.查看是否写入成功 1.更改系统时间 date -s "2017-12-18 09:40:00"2.写入系统时间 hwclock -w3.查看是否写入成功 timedatectl

VMware复制粘贴共享文件夹

win和虚拟机之间,无法复制粘贴,共享文件夹的解决方案。 安装VMware tools 1,先检查虚拟机设置部分。共享文件夹已启用。复制粘贴已启用。 2,安装tools.选择重新安装VMware tools. (此图片为安装过的截图) 成功后会显示如图。…

解决word图片格式错乱、回车图片不跟着换行的问题

解决word图片格式错乱、回车图片不跟着换行的问题 1.解决方法。 先设置为嵌入型 但是设置的话会出现下面的问题。图片显示不全。 进一步设置对应的行间距,原先设置的是固定值,需要改为1.5倍行距的形式,也就是说不能设置成固定值就可以。

Nginx location 配置 - Part 2

接上文 链接: Nginx 简介和入门 - part1 上文 我们简单地在 nginx 创建了3个虚拟主机, 虽然这个3个主机都是用占用80端口 但是我们可以用不同的域名来实现区分访问3台虚拟主机。 但是, 实际项目上, 我们更加多地会使用location 配置而不是…

5分钟搭建开源运维监控工具Uptime Kuma并实现无公网IP远程访问

文章目录 **主要功能**一、前期准备本教程环境为:Centos7,可以跑Docker的系统都可以使用本教程安装。本教程使用Docker部署服务,如何安装Docker详见: 二、Docker部署Uptime Kuma三、实现公网查看网站监控四、使用固定公网地址访问…

SpringBoot 如何增强PageHelper入参的健壮性

PageHelper.startPage(int pageNum, int pageSize, boolean count) 参数为外部输入,故存在异常输入场景。比如 pageNum 和 pageSize 输入的值 负数 或者 0,所以引入PageUtils来对入参进行判断矫正,从而避免引入异常。 第1步:支持…

JAVA基础学习笔记-day15-File类与IO流

JAVA基础学习笔记-day15-File类与IO流 1. java.io.File类的使用1.1 概述1.2 构造器1.3 常用方法1、获取文件和目录基本信息2、列出目录的下一级3、File类的重命名功能4、判断功能的方法5、创建、删除功能 2. IO流原理及流的分类2.1 Java IO原理2.2 流的分类2.3 流的API 3. 节点…

【PostgreSQL在线创建索引(CIC)功能的锁分析以及使用注意】

前一篇文章提到了普通创建索引会阻塞DML操作 PostgreSQL创建索引的锁分析和使用注意 而PostgreSQL里可以使用create index concurrently 在线创建索引(CIC)功能,降低创建索引在表上申请的锁的级别,ShareUpdateExclusiveLock级别的锁和RowExclusiveLock…

框架技术与应用开发期末速成

spring Spring简介 Spring是个java企业级应用的开源开发框架。Spring主要用来开发web应用是一个轻量级的控制反转(IOC)和面向切面(AOP)的容器框架。 Spring体系结构 核心容器: Core模块 提供了框架的基本组成部分,包括TOC和依赖注入功能 Beans模块 提供 BeanFacto…