ESP32地址映射是指ESP32芯片内部的不同存储器空间如何映射到统一的32位地址空间的方式。ESP32芯片内部包含多种存储器,如ROM、RAM、Flash等,它们有不同的容量、速度、可读写性等特性。为了让CPU能够访问这些存储器,ESP32采用了一种灵活的地址映射机制,可以根据不同的应用场景和需求,动态地调整存储器的分配和访问方式。
ESP32地址映射的基本原理是,将32位地址空间划分为多个区域,每个区域有一个固定的起始地址和大小,以及一个对应的存储器类型。例如,地址0x40000000~0x4005FFFF对应的是Internal ROM 0,地址0x3FF80000~0x3FFFFFFF对应的是Internal SRAM 0等。CPU通过指令或数据总线访问这些地址时,会根据地址映射表找到相应的存储器,并进行读写操作。这样,CPU就可以使用统一的地址空间来管理不同的存储器。
ESP32地址映射还具有一些高级特性,如:
- 重映射(Remap)。某些存储器区域可以被重映射到另一个区域,从而改变其访问方式或属性。例如,Internal ROM 0的前32KB可以被重映射到Internal SRAM 1中的一部分,从而提高执行速度或节省空间。
- 镜像(Mirror)。某些存储器区域可以被镜像到多个地址区域,从而提供多种访问方式或方便调试。例如,External Flash可以被镜像到两个不同的地址区域,一个用于指令执行,一个用于数据访问。
- 银行切换(Bank Switch)。某些存储器区域可以被划分为多个银行(Bank),每个银行有一个固定的大小和编号。通过配置寄存器,可以选择当前激活的银行,并将其映射到相应的地址区域。这样,可以扩展存储器的容量或实现多任务切换等功能