Renesas-RH850 CPU System - CPU - Ensuring Coherency after Code Flash Programming
Renesas学习笔记
CPU System : CPU - Ensuring Coherency after Code Flash Programming
CPU 对代码闪存区域具有高效的指令缓存和数据缓冲区。因此,在使用自编程编写代码闪存后,清除指令缓存和数据缓冲区以确保一致性。可以分别使用 ICCTRL 寄存器和 RDBCR 寄存器清除指令缓存和数据缓冲区。还可以使用 TM_CC 寄存器同时清除整个 CPU 的指令缓存和数据缓冲区。有关 ICCTRL 和 RDBCR 寄存器的详细信息,请参见第 3.2.3.7 节,缓存操作功能寄存器和第 3.2.3.9 节,硬件功能寄存器。有关 TM_CC 寄存器的详细信息,请参见第 3.2.9.1 节,寄存器。
1 寄存器
(1) 寄存器基地址
GCFU 基地址列于下表中。GCFU 寄存器地址作为基地址的偏移量给出。
基地址名称 | 基地址 | 总线组 |
---|---|---|
FFFB 1400H | P-总线组 0 |
(2) 时钟供给
GCFU 的时钟供给列于下表中。
单元名称 | 单元时钟名称 | 时钟供给名称 |
---|---|---|
GCFU | PCLK | CLK_HBUS |
(3) 寄存器列表
模块名称 | 寄存器名称 | 符号 | 地址 | 访问类型 |
---|---|---|---|---|
GCFU | 缓存清除操作寄存器 | TM_CC | 32 |
(4) TM_CC — 缓存清除操作寄存器
TM_CC 寄存器用于发出清除包含代码闪存数据的单元(指令缓存或数据缓冲区)的请求。
位位置 | 位名称 | 功能 |
---|---|---|
31 到 5 | 保留 | 读取时返回复位后的值。写入时写复位后的值。 |
4 | ICCMK | 指令缓存清除屏蔽 |
写入 1 屏蔽在更新内存映射启用寄存器 GCFU.TM_ME 和 CFU.TM_ME 时的缓存清除请求。 | ||
通过写入 1 到 GCFU.TM_CC.ICCLR 位发出的缓存清除请求不受屏蔽。 | ||
0: 不屏蔽缓存清除请求 | ||
1: 屏蔽缓存清除请求 | ||
3 | DCCMK | 数据缓存(缓冲区)清除屏蔽 |
写入 1 屏蔽在更新内存映射启用寄存器 GCFU.TM_ME 和 CFU.TM_ME 时的缓存清除请求。 | ||
通过写入 1 到 GCFU.TM_CC.DCCLR 位发出的缓存清除请求不受屏蔽。 | ||
0: 不屏蔽缓存清除请求 | ||
1: 屏蔽缓存清除请求 | ||
2 | 保留 | 读取时返回复位后的值。写入时写复位后的值。 |
1 | ICCLR | 指令缓存清除请求 |
写入 1 发出指令缓存清除请求。写入 0 被忽略。 | ||
当在缓存清除请求完成之前读取此位时,读取值为 1;在缓存清除请求完成之后读取此位时,读取值为 0。 | ||
注意:如果在缓存清除请求完成之前写入 1,然后在缓存清除请求完成之前再次写入 1,则忽略第二次写入。 | ||
如果在缓存清除请求完成之前写入 1,然后在缓存清除请求完成之前写入 0,则缓存清除请求不会取消。 | ||
要连续执行缓存清除请求,请确保在执行下一个缓存清除请求之前检查前一个缓存清除请求的执行已完成(通过读取此位并检查读取值为 0)。 | ||
0: 表示当前未处理缓存清除请求,或缓存清除请求的处理已完成(读取时)。 | ||
1: 发出缓存清除请求(写入时)。表示当前正在处理缓存清除请求(读取时)。 | ||
0 | DCCLR | 数据缓冲区清除请求 |
写入 1 发出数据缓冲区清除请求。写入 0 被忽略。 | ||
读取值在数据缓冲区清除请求完成之前为 1,完成后为 0。 | ||
注意:如果在数据缓冲区清除请求完成之前再次写入 1,忽略第二次写入。 | ||
(第二次写入不执行数据缓冲区清除请求。) | ||
如果在数据缓冲区清除请求完成之前写入 0,数据缓冲区清除请求不会取消。 | ||
要连续执行数据缓冲区清除请求,请确保在执行下一个数据缓冲区清除请求之前完成前一个数据缓冲区清除请求的执行(通过读取此位并检查读取值是否为 0)。 | ||
0:表示当前未处理数据缓冲区清除请求,或数据缓冲区清除请求的处理已完成(读取时)。 | ||
1:发出数据缓冲区清除请求(写入时)。表示当前正在处理数据缓冲区清除请求(读取时)。 |