esp-idf/docs/zh_CN/api-reference/system/himem.rst

29 lines
1.7 KiB
ReStructuredText
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Himem
=====
:link_to_translation:`en:[English]`
概述
--------
对于小于等于 4 MiB 大小的外部内存MMU 配置为使用“统一映射”,即每个 CPU 地址一对一地映射到外部 SPI RAM 地址,从而透明地访问外部内存。但是,由于外部内存的地址空间只有 4 MiB因此只有小于等于 4 MiB 大小的 SPI RAM 芯片才能完全透明地使用。
ESP32 仍可使用大于等于 4 MiB 大小的 SPI RAM 芯片。不过,这些芯片上的内存需要通过存储体切换方案 (bank switching) 来访问。ESP-IDF 提供了 **Himem API** 来控制此类存储体切换。具体而言Himem API 允许在运行时切换地址映射,将特定的 32 K 存储体映射到 4 MiB 地址空间中,从而访问超过 4 MiB 的外部内存。
使用注意事项
--------------
使用 Himem API 前,必须在 menuconfig 中启用 :ref:`CONFIG_SPIRAM_BANKSWITCH_ENABLE`,并在 :ref:`CONFIG_SPIRAM_BANKSWITCH_RESERVE` 中设置为此预留的储存体数量。这会减少由 ``malloc()`` 等函数分配的外部内存量,但允许使用 Himem API 将任何剩余内存映射到预留的存储体中。
Himem API 可以看作是存储体切换方案的一个抽象。具体而言,该 API 允许声明一个或多个地址空间存储体(在 API 中称为“regions”以及一个或多个需映射到此范围的内存存储体。
应用示例
--------------------
- :example:`system/himem` 演示了如何在 {IDF_TARGET_NAME} 上使用 Himem API 对 8 MiB PSRAM 芯片的上部 4 MiB 进行内存测试,展示了如何分配地址空间、分配物理内存,并在分配的地址空间中切换内存。
API 参考
-------------
.. include-build-file:: inc/himem.inc