ESP32-S3-分区表(Partition Table)

文章目录

  • 一、ESP32S3内存地址映射
    • [   1、映射框图](#   1、映射框图)
    • [   2、相关概念](#   2、相关概念)
      • [     1.Data bus(数据总线):](#     1.Data bus(数据总线):)
      • [     2.Instruction bus(指令总线):](#     2.Instruction bus(指令总线):)
      • [     3.Cache:](#     3.Cache:)
      • [     4.MMU:](#     4.MMU:)
      • [     5.ROM:](#     5.ROM:)
      • [     6.SRAM:](#     6.SRAM:)
      • [     7.GDMA:](#     7.GDMA:)
      • [     8.RTC Slow Memory(0x50000000 段)](#     8.RTC Slow Memory(0x50000000 段))
      • [     9.RTC Fast Memory(0x600FE000 段)](#     9.RTC Fast Memory(0x600FE000 段))
  • 二、地址分区详解
    • [   1、数据总线地址范围(0x00000000 ~ 0x3FFFFFFF)](#   1、数据总线地址范围(0x00000000 ~ 0x3FFFFFFF))
      • [     1. 0x0000_0000 ~ 0x3BFF_FFFF:Reserved 保留区](#     1. 0x0000_0000 ~ 0x3BFF_FFFF:Reserved 保留区)
      • [     2. 0x3C00_0000 ~ 0x3DFF_FFFF 32MB External memory(PSRAM)](#     2. 0x3C00_0000 ~ 0x3DFF_FFFF 32MB External memory(PSRAM))
      • [     3. 0x3E00_0000 ~ 0x3FC7_FFFF:Reserved 保留](#     3. 0x3E00_0000 ~ 0x3FC7_FFFF:Reserved 保留)
      • [     4. 0x3FC8_8000 ~ 0x3FCF_FFFF 480KB Internal memory(SRAM1 SRAM2)](#     4. 0x3FC8_8000 ~ 0x3FCF_FFFF 480KB Internal memory(SRAM1 SRAM2))
      • [     5. 0x3FD0_0000 ~ 0x3FEF_FFFF:Reserved 保留](#     5. 0x3FD0_0000 ~ 0x3FEF_FFFF:Reserved 保留)
      • [     6. 0x3FF0_0000 ~ 0x3FF1_FFFF 128KB Internal memory(ROM1)](#     6. 0x3FF0_0000 ~ 0x3FF1_FFFF 128KB Internal memory(ROM1))
      • [     7. 0x3FF2_0000 ~ 0x3FFF_FFFF:Reserved 保留](#     7. 0x3FF2_0000 ~ 0x3FFF_FFFF:Reserved 保留)
    • [   2、指令总线地址范围(0x40000000 ~ 0x4FFFFFFF)](#   2、指令总线地址范围(0x40000000 ~ 0x4FFFFFFF))
      • [     1. 0x4000_0000 ~ 0x4005_FFFF 384KB Internal memory(ROM0 ROM1)](#     1. 0x4000_0000 ~ 0x4005_FFFF 384KB Internal memory(ROM0 ROM1))
      • [     2. 0x4006_0000 ~ 0x4036_FFFF:Reserved 保留](#     2. 0x4006_0000 ~ 0x4036_FFFF:Reserved 保留)
      • [     3. 0x4037_0000 ~ 0x403D_FFFF 448KB Internal memory(SRAM0 SRAM1)](#     3. 0x4037_0000 ~ 0x403D_FFFF 448KB Internal memory(SRAM0 SRAM1))
      • [     4. 0x403E_0000 ~ 0x41FF_FFFF:Reserved 保留](#     4. 0x403E_0000 ~ 0x41FF_FFFF:Reserved 保留)
      • [     5. 0x4200_0000 ~ 0x43FF_FFFF 32MB External memory(Flash 虚拟指令映射)](#     5. 0x4200_0000 ~ 0x43FF_FFFF 32MB External memory(Flash 虚拟指令映射))
      • [     6. 0x4400_0000 ~ 0x4FFFF_FFFF:Reserved 缓存预留区](#     6. 0x4400_0000 ~ 0x4FFFF_FFFF:Reserved 缓存预留区)
    • [   3、共享总线地址范围(0x50000000 ~ 0xFFFFFFFF)](#   3、共享总线地址范围(0x50000000 ~ 0xFFFFFFFF))
      • [     1. 0x5000_0000 ~ 0x5000_1FFF 8KB Internal memory (RTC SLOW Memory)](#     1. 0x5000_0000 ~ 0x5000_1FFF 8KB Internal memory (RTC SLOW Memory))
      • [     2. 0x5000_2000 ~ 0x5FFF_FFFF:Reserved 保留](#     2. 0x5000_2000 ~ 0x5FFF_FFFF:Reserved 保留)
      • [     3. 0x6000_0000 ~ 0x600D_0FFF 836KB Peripherals 外设寄存器区](#     3. 0x6000_0000 ~ 0x600D_0FFF 836KB Peripherals 外设寄存器区)
      • [     4. 0x600D_1000 ~ 0x600F_DFFF:Reserved 保留](#     4. 0x600D_1000 ~ 0x600F_DFFF:Reserved 保留)
      • [     5. 0x600F_E000 ~ 0x600F_FFFF 8KB Internal memory (RTCFAST Memory)](#     5. 0x600F_E000 ~ 0x600F_FFFF 8KB Internal memory (RTCFAST Memory))
      • [     6. 0x6010_0000 ~ 0xFFFFFFFF:全保留,禁止访问,触发硬件崩溃](#     6. 0x6010_0000 ~ 0xFFFFFFFF:全保留,禁止访问,触发硬件崩溃)
  • 三、功能分区详解
    • [   1、PSRAM](#   1、PSRAM)
    • [   2、Internal ROM 0](#   2、Internal ROM 0)
    • [   3、Internal ROM 1](#   3、Internal ROM 1)
    • [   4、Internal SRAM 0 (DRAM 数据内存)](#   4、Internal SRAM 0 (DRAM 数据内存))
    • [   5、Internal SRAM 1 (IRAM 指令内存)](#   5、Internal SRAM 1 (IRAM 指令内存))
    • [   6、Internal SRAM 2 (双核共享 RAM)](#   6、Internal SRAM 2 (双核共享 RAM))
    • [   7、RTC FAST Memory](#   7、RTC FAST Memory)
    • [   8、RTC SLOW Memory](#   8、RTC SLOW Memory)
    • [   9、Flash(虚拟指令映射区)](#   9、Flash(虚拟指令映射区))
  • 四、外设寄存器区

一、ESP32S3内存地址映射

   1、映射框图

    

   2、相关概念

     1.Data bus(数据总线):

       仅用于读写变量、缓冲区、外设寄存器,不能取指令执行代码;

     2.Instruction bus(指令总线):

       仅用于 CPU 读取程序代码运行,仅支持 4 字节对齐数据访问;

     3.Cache:

       CPU 统一缓存,数据 / 指令总线访问都会经过缓存,提升读写速度。

     4.MMU:

       外部内存(PSRAM/Flash)地址映射硬件,实现虚拟地址访问外设存储。

     5.ROM:

       0x40000000 固化固件,仅指令总线读取;

     6.SRAM:

       片内 IRAM/DRAM/ 共享 RAM,CPU 高速读写;

     7.GDMA:

       直接访问外设、PSRAM、RTC 内存,硬件搬运数据,无需 CPU 介入;

     8.RTC Slow Memory(0x50000000 段)

       ULP 超低功耗协处理器专用,主 CPU 也可读写,超低功耗场景存放传感器数据。

     9.RTC Fast Memory(0x600FE000 段)

       主 CPU 高速读写,深度睡眠不掉电,唤醒逻辑专用。

二、地址分区详解

   1、数据总线地址范围(0x00000000 ~ 0x3FFFFFFF)

     1. 0x0000_0000 ~ 0x3BFF_FFFF:Reserved 保留区

       灰色不可使用,访问触发硬件异常、CPU 死机。

     2. 0x3C00_0000 ~ 0x3DFF_FFFF 32MB External memory(PSRAM)

       总线:Data bus;

       对应外接 SPI PSRAM,存放大缓冲区、图片帧缓存;

       代码修饰:PSRAM_ATTR 全局数组分配到此;

       仅硬件焊接 PSRAM、menuconfig 开启后才能访问。

     3. 0x3E00_0000 ~ 0x3FC7_FFFF:Reserved 保留

     4. 0x3FC8_8000 ~ 0x3FCF_FFFF 480KB Internal memory(SRAM1 SRAM2)

       总线:Data bus;

       0x3FC8_8000 0x3FCE_FFFF 416 Internal SRAM 1:

         CPU可以通过数据或指令总线访问。

         用于Icache,缓存外部存储器指令数据,承载绝大多数运行时数据:

           .data 初始化全局变量。

           .bss 未初始化全局 / 静态变量。

           FreeRTOS 任务栈、队列、信号量、事件组。

           系统堆 malloc 默认分配池。

       0x3FCF_0000 0x3FCF_FFFF 64 Internal SRAM 2:

         CPU只可以通过数据总线访问。

         用于CPU0/CPU1 双核高速互通数据,并发访问必须加互斥锁;

         作用:

           部分双核临时交换缓冲;

           RTC Fast 内存配套数据缓存;

           GDMA 本地临时缓冲区;

           系统底层预留内存,用户少量自定义静态缓冲区可放置此处。

     5. 0x3FD0_0000 ~ 0x3FEF_FFFF:Reserved 保留

     6. 0x3FF0_0000 ~ 0x3FF1_FFFF 128KB Internal memory(ROM1)

       总线:Data bus;

       内置 AES/SHA/CRC 加密算法、浮点库、底层硬件驱动,节省 Flash 固件体积。

     7. 0x3FF2_0000 ~ 0x3FFF_FFFF:Reserved 保留

   2、指令总线地址范围(0x40000000 ~ 0x4FFFFFFF)

     1. 0x4000_0000 ~ 0x4005_FFFF 384KB Internal memory(ROM0 ROM1)

       总线:Instruction bus,只读;

       芯片出厂固化一级引导、USB 底层、JTAG 固件、算法库,不可修改。

       0x4000_0000 0x4003_FFFF 256KB Internal ROM 0:

         芯片上电第一执行代码(一级 ROM Bootloader);

         初始化 CPU、时钟、SPI Flash、USB-JTAG 外设;

         读取分区表并加载二级 bootloader 到 IRAM;

         内置底层下载协议、安全启动基础逻辑。

       0x4004_0000 0x4005_FFFF 128KB Internal ROM 1:

         内置 AES/SHA/CRC、随机数、浮点运算、数学标准库、底层硬件驱动;

         用户代码可直接调用 ROM 接口,节省 Flash 固件空间;

         可通过数据总线镜像地址读取 ROM 内置常量表。

     2. 0x4006_0000 ~ 0x4036_FFFF:Reserved 保留

     3. 0x4037_0000 ~ 0x403D_FFFF 448KB Internal memory(SRAM0 SRAM1)

       总线:Instruction bus;

       IRAM_ATTR 中断函数、高频实时代码存放区,零等待高速运行;

       二级 bootloader 运行于此,引导完成后内存被应用覆盖。

       0x4037_0000 0x4037_7FFF 32KB Internal SRAM 0:

         中断向量表存放区、硬件紧急异常处理入口;

         二级 bootloader 启动代码优先占用此段,系统底层硬件中断调度专用。

       0x4037_8000 0x403D_FFFF 416KB Internal SRAM 1:

         存放 IRAM_ATTR 修饰的中断服务函数、高频实时循环代码;

         二级 bootloader 业务运行代码;

         CPU 零等待取指,避免 Flash 访问延迟卡顿。

     4. 0x403E_0000 ~ 0x41FF_FFFF:Reserved 保留

     5. 0x4200_0000 ~ 0x43FF_FFFF 32MB External memory(Flash 虚拟指令映射)

       总线:Instruction bus;

       普通业务函数、const常量字符串存放区,MMU 硬件自动映射 SPI Flash;

       不拷贝到 RAM,CPU 取指时实时读取 Flash,速度慢于 IRAM。

     6. 0x4400_0000 ~ 0x4FFFF_FFFF:Reserved 缓存预留区

   3、共享总线地址范围(0x50000000 ~ 0xFFFFFFFF)

     1. 0x5000_0000 ~ 0x5000_1FFF 8KB Internal memory (RTC SLOW Memory)

       ULP 超低功耗协处理器专属运行 / 数据内存,ULP 程序、传感器采集缓冲区存放于此;

       深度睡眠下不掉电,唤醒后数据保留,无需重新初始化;

       存放低功耗场景参数、唤醒计数、传感器阈值;

       主 CPU 正常运行时也可读写,读写速度低于 RTC Fast Memory。

     2. 0x5000_2000 ~ 0x5FFF_FFFF:Reserved 保留

     3. 0x6000_0000 ~ 0x600D_0FFF 836KB Peripherals 外设寄存器区

       总线:Data/Instruction bus;

       包含 GPIO、UART、SPI、USB Serial/JTAG (0x60090000)、I2S 等全部外设寄存器;

       GDMA 可直接操作本段地址,无需 CPU 中转。

     4. 0x600D_1000 ~ 0x600F_DFFF:Reserved 保留

     5. 0x600F_E000 ~ 0x600F_FFFF 8KB Internal memory (RTCFAST Memory)

       深度睡眠、休眠模式下持续供电,内存数据不丢失;

       主 CPU 高速读写,存放唤醒标志、运行计数、低功耗配置参数;

       ULP 协处理器无法访问,仅主 CPU 操作;

       适合存放少量关键状态标记,唤醒后直接读取无需重新初始化。

     6. 0x6010_0000 ~ 0xFFFFFFFF:全保留,禁止访问,触发硬件崩溃

三、功能分区详解

   1、PSRAM

     地址:0x3C00_0000~ 0x3DFF_FFFF

     大小:32MB

     类型:片外扩展 SPI RAM

     访问总线:Data bus(仅数据访问,不可跑代码)

     读写属性:可读可写

     核心作用:

       存放超大缓冲区、图片帧缓存、音视频数据、大数组;

       使用PSRAM_ATTR分配,缓解片内 DRAM 内存压力,需硬件焊接 PSRAM 并在 menuconfig 开启。

   2、Internal ROM 0

     地址:0x4000_0000~ 0x4003_FFFF

     大小:256KB

     类型:片内固化只读 ROM

     访问总线:Instruction bus(仅取指令执行)

     读写属性:只读(出厂固化,无法擦写)

     核心作用:

       芯片上电一级 ROM 引导程序;

       初始化 CPU、SPI Flash、USB-JTAG 外设;

       读取分区表、加载二级 bootloader;

       内置底层硬件基础驱动。

   3、Internal ROM 1

     地址:0x4004_0000~ 0x4005_FFFF

     大小:128KB

     类型:片内固化只读 ROM

     访问总线:Instruction bus;数据镜像地址 0x3FF0_8000~0x3FF1_FFFF(Data bus)

     读写属性:只读

     核心作用:

       内置 AES/SHA/CRC 加密算法、浮点运算库、标准数学函数;

       用户代码可直接调用,节省 Flash 固件存储空间。

   4、Internal SRAM 0 (DRAM 数据内存)

     地址:0x3FC8_8000~ 0x3FCF_FFFF

     大小:480KB

     类型:片内读写 SRAM

     访问总线:Data bus(仅数据,不能执行代码)

     读写属性:可读可写

     核心作用:

       程序核心数据内存;

       存放全局 / 静态变量、FreeRTOS 任务栈、系统堆、队列 / 信号量 / 事件组、函数局部栈;

       内存溢出、栈溢出、内存泄漏均发生在此区域。

   5、Internal SRAM 1 (IRAM 指令内存)

     地址:0x4037_0000~ 0x403D_FFFF

     大小:448KB

     类型:片内读写 SRAM

     访问总线:Instruction bus(仅取指令运行)

     读写属性:可读可写

     核心作用:

       IRAM_ATTR修饰的中断函数、高频实时循环代码;

       二级 bootloader 完整加载到此运行;

       零等待高速执行,避免 Flash 访问卡顿。

   6、Internal SRAM 2 (双核共享 RAM)

     地址:0x3FF0_0000~ 0x3FF0_7FFF

     大小:32KB

     类型:片内共享读写 SRAM

     访问总线:Data bus

     读写属性:可读可写

     核心作用:

       CPU0 与 CPU1 双核高速交互数据;

       并发读写必须搭配互斥锁 / 信号量,防止数据错乱。

   7、RTC FAST Memory

     地址:0x600F_E000~ 0x600F_FFFF

     大小:8KB

     类型:RTC 域不掉电 SRAM

     访问总线:Data/Instruction bus 双总线均可访问

     读写属性:可读可写

     核心作用:

       深度睡眠供电不丢失;

       主 CPU 高速读写,存放唤醒标志、计数、低功耗配置参数。

   8、RTC SLOW Memory

     地址:0x3FF0_8000~ 0x3FF1_FFFF

     大小:96KB

     类型:ROM1 数据镜像(ULP 可访问)

     访问总线:Data bus(ULP 协处理器可访问)

     读写属性:只读(物理为 ROM 镜像,禁止写入)

     核心作用:

       ULP 超低功耗协处理器读取内置常量;

       非用户可读写内存,仅底层硬件调用。

   9、Flash(虚拟指令映射区)

     地址:0x4200_0000~ 0x43FF_FFFF

     大小:32MB

     类型:片外 SPI Flash MMU 虚拟映射

     访问总线:Instruction bus

     读写属性:只读(仅 esptool/bootloader 可烧录写入)

     核心作用:

       存放普通业务函数、const常量、字符串字面量;

       CPU 取指时 MMU 自动转发 SPI 读取,不占用片内 IRAM/DRAM。

四、外设寄存器区

   地址区间:0x6000_0000 ~ 0x600D_0FFF,总大小 836KB,双总线(Data/Instruction bus)均可访问,可读可写。

相关推荐
星河单片机2 小时前
STM32驱动HS‑S37A水位传感器+OLED完整实验讲解
stm32·单片机·嵌入式硬件
糖糖单片机设计3 小时前
STM32水稻苗大棚环境监测系统
stm32·单片机·嵌入式硬件
star learning white4 小时前
STM32入门学习3
stm32·单片机·学习
jianqiang.xue4 小时前
审查技能库(上):内存安全四件套
stm32·单片机·物联网·架构·esp32
XiHongShi20165 小时前
cpuz分享,建议保存
单片机·学习
糖糖单片机设计6 小时前
STM32 老人跌倒监测报警系统
stm32·单片机·嵌入式硬件
智闲电子设计7 小时前
STM32 硬件 CRC 与 UID 实战:固件校验防变砖,UID 防抄板,这两个外设白用太可惜
stm32·单片机·嵌入式硬件
嵌入式阿蔡7 小时前
CoAP / LwM2M 轻量协议:受限设备为什么不用 MQTT
单片机·物联网·嵌入式
wuyk5558 小时前
107.FreeRTOS 链表深度解析:从原理到面试满分答案
c语言·开发语言·数据结构·stm32·单片机·链表·面试