当前位置:网站首页>【ESP32学习-2】esp32地址映射
【ESP32学习-2】esp32地址映射
2022-07-06 09:16:00 【csdndulala】
本文始于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是怎么划分使用的)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的地址。这样可以加快一级引导程序的运行。
边栏推荐
- 4、安装部署Spark(Spark on Yarn模式)
- ESP8266通过arduino IED连接巴法云(TCP创客云)
- Selective sorting and bubble sorting [C language]
- [CDH] modify the default port 7180 of cloudera manager in cdh/cdp environment
- arduino UNO R3的寄存器写法(1)-----引脚电平状态变化
- 【CDH】CDH/CDP 环境修改 cloudera manager默认端口7180
- 分布式事务的实现方案
- 选择法排序与冒泡法排序【C语言】
- FTP file upload file implementation, regularly scan folders to upload files in the specified format to the server, C language to realize FTP file upload details and code case implementation
- 电商数据分析--用户行为分析
猜你喜欢
C language callback function [C language]
Redis interview questions
STM32型号与Contex m对应关系
分布式节点免密登录
PyTorch四种常用优化器测试
Comparaison des solutions pour la plate - forme mobile Qualcomm & MTK & Kirin USB 3.0
荣耀Magic 3Pro 充电架构分析
Detailed explanation of 5g working principle (explanation & illustration)
Principle and implementation of MySQL master-slave replication
小天才电话手表 Z3工作原理
随机推荐
Apprentissage automatique - - régression linéaire (sklearn)
Basic knowledge of lithium battery
小天才电话手表 Z3工作原理
Nodejs connect mysql
数据库面试常问的一些概念
关键字 inline (内联函数)用法解析【C语言】
Detailed explanation of Union [C language]
B tree and b+ tree of MySQL index implementation
Pytorch-温度预测
Oppo vooc fast charging circuit and protocol
C语言函数之可变参数原理:va_start、va_arg及va_end
Pytoch Foundation
ToggleButton实现一个开关灯的效果
SQL time injection
【Flink】CDH/CDP Flink on Yarn 日志配置
互聯網協議詳解
几个关于指针的声明【C语言】
Funny cartoon: Programmer's logic
STM32 how to locate the code segment that causes hard fault
[Flink] Flink learning