MS-RTOS CACHE 操作

更新时间:
2023-08-09
下载文档

MS-RTOS CACHE 操作

本章将介绍 MS-RTOS CPU CACHE 操作相关接口的使用。

CACHE 介绍

CPU CACHE 是 CPU 性能的加速器,CPU CACHE 缓存了 CPU 频繁访问的数据,CPU 访问 CACHE 的速度要比访问 RAM 的速度快得多,这样 CPU 就能以较快的速度访问到所需的数据。

CACHE 按缓存的数据类型来分,可分为数据 CACHE 和指令 CACHE,按层次来分,可分为 L1-CACHE、L2-CACHE......

由于 DMA(直接内存访问)搬运数据并不通过 CPU 的运算单元,所以 DMA 搬运数据后,会出现 CACHE 内容与内存里的值不一致的情况,某些高端处理器具备 DMA CACHE 一致性的特性,但很遗憾,目前应用的很多 MCU 都没有该特性,所以需要软件(主要是操作系统和驱动程序)手动维护 CACHE 与内存的一致性。

CACHE 相关 API

下表展示了 CACHE 操作相关的 API 在两个权限空间下是否可用:

API用户空间内核空间
ms_dcache_clean
ms_dcache_flush
ms_dcache_invalid
ms_dma_dcache_clean
ms_dma_dcache_flush
ms_dma_dcache_invalid
ms_icache_invalid
ms_cache_text_update

ms_dcache_clean()

  • 描述 回写指定范围内存的 D-CACHE

  • 函数原型

void ms_dcache_clean(ms_ptr_t ptr, ms_size_t len);
  • 参数
输入/输出参数描述
[in]ptr起始地址
[in]len长度
  • 返回值

  • 注意事项

  • 示例

ms_dcache_flush()

  • 描述 回写并无效指定范围内存的 D-CACHE

  • 函数原型

void ms_dcache_flush(ms_ptr_t ptr, ms_size_t len);
  • 参数
输入/输出参数描述
[in]ptr起始地址
[in]len长度
  • 返回值

  • 注意事项

  • 示例

ms_dcache_invalid()

  • 描述 无效指定范围内存的 D-CACHE(非 D-CACHE 行大小对齐部分将会回写并无效)

  • 函数原型

void ms_dcache_invalid(ms_ptr_t ptr, ms_size_t len);
  • 参数
输入/输出参数描述
[in]ptr起始地址
[in]len长度
  • 返回值

  • 注意事项

  • 示例

ms_dma_dcache_clean()

  • 描述 回写指定范围 DMA 内存的 D-CACHE,在具备 DMA 内存一致性特性的 CPU 上,将变成空操作

  • 函数原型

void ms_dma_dcache_clean(ms_ptr_t ptr, ms_size_t len);
  • 参数
输入/输出参数描述
[in]ptr起始地址
[in]len长度
  • 返回值

  • 注意事项

  • 示例

ms_dma_dcache_flush()

  • 描述 回写并无效指定范围 DMA 内存的 D-CACHE,在具备 DMA 内存一致性特性的 CPU 上,将变成空操作

  • 函数原型

void ms_dma_dcache_flush(ms_ptr_t ptr, ms_size_t len);
  • 参数
输入/输出参数描述
[in]ptr起始地址
[in]len长度
  • 返回值

  • 注意事项

  • 示例

ms_dma_dcache_invalid()

  • 描述 无效指定范围 DMA 内存的 D-CACHE(非 D-CACHE 行大小对齐部分将会回写并无效),在具备 DMA 内存一致性特性的 CPU 上,将变成空操作

  • 函数原型

void ms_dma_dcache_invalid(ms_ptr_t ptr, ms_size_t len);
  • 参数
输入/输出参数描述
[in]ptr起始地址
[in]len长度
  • 返回值

  • 注意事项

  • 示例

ms_icache_invalid()

  • 描述 无效指定范围内存的 I-CACHE

  • 函数原型

void ms_icache_invalid(ms_ptr_t ptr, ms_size_t len);
  • 参数
输入/输出参数描述
[in]ptr起始地址
[in]len长度
  • 返回值

  • 注意事项

  • 示例

ms_cache_text_update()

  • 描述 对指定范围内存进行代码更新(执行 D-CACHE 回写和 I-CACHE 无效),一般在代码搬运和代码修改后需要做代码更新

  • 函数原型

void ms_cache_text_update(ms_ptr_t ptr, ms_size_t len);
  • 参数
输入/输出参数描述
[in]ptr起始地址
[in]len长度
  • 返回值

  • 注意事项

  • 示例

文档内容是否对您有所帮助?
有帮助
没帮助