【ESP32学习-2】esp32地址映射

  1. 本文始于esp32技术参考手册中的一段描述

    在这里插入图片描述

    1.3.2.4 Internal SRAM 1
    Internal SRAM 1 的容量为 128 KB,其既可以被两个 CPU 通过数据总线 0x3FFE_0000 ~ 0x3FFF_FFFF 读写,
    也可以被两个 CPU 通过指令总线 0x400A_0000 ~ 0x400B_FFFF 读写。
    指令总线地址和数据总线地址访问的 word 是逆序的。即地址:
    0x3FFE_0000 与 0x400B_FFFC 访问到相同的 word
    0x3FFE_0004 与 0x400B_FFF8 访问到相同的 word
    0x3FFE_0008 与 0x400B_FFF4 访问到相同的 word

    迷惑的是为什么inter SRAM 1 通过数据和指令总线访问不同地址,得到的是相同的内容?为什么这样设计?有什么好处?
    遍寻资料,终于找到了准确的解答:可以定制化调整IRAM和DRAM的大小。(同时也解答了,esp32内部ram是怎么划分使用的)

  2. ROM0为何需要Remap:

    1.3.2.1 Internal ROM 0
    Internal ROM 0 的容量为 384 KB,可以被两个 CPU 通过指令总线 0x4000_0000 ~ 0x4005_FFFF 读取。
    访问 ROM 0 的头 32 KB 的地址(0x4000_0000 ~ 0x4000_7FFF)可以被重新映射 到 Internal SRAM 1 中的一部
    分,这部分原本被地址 0x400B_0000 ~ 0x400B_7FFF 访问。重映射时,这 32 KB SRAM 不能再被地址
    0x400B_0000 ~ 0x400B_7FFF 访问,但是可以被数据总线 (0x3FFE_8000 ~ 0x3FFE_FFFF)访问。实现方式是
    分别为两个 CPU 配置一个寄存器,即为 PRO_CPU 置位 DPORT_PRO_BOOT_REMAP_CTRL_REG 寄存器的
    bit 0 或者为 APP_CPU 置位 DPORT_APP_BOOT_REMAP_CTRL_REG 寄存器的 bit 0。

    网上没有找到解释,我的理解:
    rom0作为指令空间一共有384KB(已经非常大了),所分配的地址空间不会全部使用,可以通过remap的方式,将rom的地址映射为ram的地址。这样可以加快一级引导程序的运行。

强烈建议的相关资料:
1 内存地址映射
2 Flash状态
在这里插入图片描述

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值