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)均可访问,可读可写。

相关推荐
小李不想当小白17 分钟前
USART串口数据包(STM32标准库学习笔记)
经验分享·笔记·stm32·单片机·嵌入式硬件·学习
硅基手札1 小时前
【Linux 内核专栏 18】进程间通信 IPC(下)— Socket·Netlink·fd 三件套·futex·线程同步
linux·运维·驱动开发·单片机·嵌入式硬件·mcu·架构
无敌贵点大王16 小时前
嵌入式软件面试经(自用)
c语言·stm32·单片机·学习·mongodb·面试·职场和发展
我是海飞17 小时前
使用杰理 AC7925B 实现 Windows电脑 USB 副屏
windows·单片机·电脑·嵌入式·杰理
我是海飞17 小时前
杰理 JL703N SDK 实现 AI 自动化调试:自动进入下载模式、下载、重启与日志抓取
人工智能·单片机·自动化·音视频·杰理
Zwawa17 小时前
PID 的三个参数之外:位置式、增量式和反馈控制
c语言·单片机·嵌入式
创界工坊工作室17 小时前
29-基于单片机的万年历设计
stm32·单片机·嵌入式硬件·proteus
木由里予18 小时前
NAND 这门生意
运维·服务器·网络·单片机
沐欣工作室_lvyiyi18 小时前
基于STM32的社区养老控制系统设计(论文+源码)
stm32·单片机·嵌入式硬件·社区养老控制系统·保定理工学院·华德学院·淮南师范学院
snow@li19 小时前
单片机:全景梳理核心原理与体系深度分析
单片机·嵌入式硬件