完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
1. ESP32 存储系统简介
ESP32 存储系统分为片上存储和片外存储。 其中片上存储包括:
2. 地址映射 ESP32 地址映射如下: 地址 0x4000_0000 以下的部分属于数据总线的地址范围; 地址 0x4000_0000~0x4FFF_FFFF 部分属于指令总线的地址范围; 地址 0x5000_0000 及以上的部分是数据总线和指令总线共用的地址范围。 3. SRAM 简析 静态随机存取存储器(Static Random-Access Memory,SRAM) SRAM 分为 IRAM 和 DRAM:
ESP-IDF 完全支持在应用程序中使用外部 RAM,在启动时初始化外部 RAM,提供了多种方式来配置处理外部 RAM。 Initialize SPI RAM when booting the ESP32,即在 ESP32 boot 时初始化 SPI RAM。 方式1、整合 RAM 到 ESP32 内存映射。这是一个外部 RAM 的基本选项。外部 RAM 指向地址空间 0x3F800000(字节访问)。外部 RAM 的区域大小是 SPI RAM 大小(最大 4 MB)。通过指针指向外部 RAM 来放置数据。 方式2、初始化 RAM 并将其添加到功能分配器。这就允许程序使用 heap_caps_malloc(size,MALLOC_CAP_SPIRAM) 专门分配一块外部 RAM。可以使用该内存,然后使用正常的 free() 来释放。映射到 0x3F800000. 方式3、初始化 RAM,将其添加到功能分配器,并将内存添加到可由 malloc() 返回的 RAM 池中。 这允许任何应用程序使用外部 RAM 而无需重写代码以使用 heap_caps_malloc。这是默认。 方式4、允许在外部 RAM 放置 BSS 段,这段地址空间起始于 0x3F800000,用于 lwip、net80211、libpp 和 bluedroid ESP-IDF 库存储初始化为零的数据( bss 段)。通过在静态声明中应用 EXT_RAM_ATTR 宏(未初始化为 0 值)从内部 BSS 段移到外部 RAM。这有效减少 BSS 段使用的内部静态内存。 5. SPI flash 的操作方法 在 ESP-IDF 中定义已经好了 SPI flash 相关的操作函数了,我们在使用时只要按照要求初始化就可以调用相关 API 操作 flash 了。 使用方法: void spi_flash_init();//flash 初始化在使用 spi-flash 之前需要调用此函数进行初始化。size_t spi_flash_get_chip_size();//获取当前 flash 的容量大小。/*按照扇区擦除 flash,sector 为扇区号*/esp_err_t spi_flash_erase_sector(size_t sector);/*按照地址擦除 flash,start_address 擦除的起始地址,size 是擦除大小,地址必须是 4 的倍数*/esp_err_t spi_flash_erase_range(size_t start_address, size_t size);/*将数据写入 flash,dest_addr flash 首地址,src 是要写入数据的首地址,size 是 src 数据的大小*/esp_err_t spi_flash_write(size_t dest_addr, const void *src, size_t size);/*从 flash 中读出数据,src_addr 是要 flash, dest 是接收数据的首地址,size 是读取的大小*/esp_err_t spi_flash_read(size_t src_addr, void *dest, size_t size); #include "esp_attr.h"void IRAM_ATTR gpio_isr_handler(void* arg){ // ...} void IRAM_ATTR gpio_isr_handler(void* arg){ const static DRAM_ATTR uint8_t INDEX_DATA[] = { 45, 33, 12, 0 }; const static char *MSG = DRAM_STR("I am a string stored in RAM");} ESP-IDF 工程使用分区表保存 SPI flash 各区信息,包括引导程序、各种应用程序二进制文件、数据及文件系统等。 分区表相关介绍参考 ESP32 分区表。 7. 非易失性存储库(NVS) 非易失性存储 (NVS) 库主要用于在 flash 中存储键值格式的数据。具体请参考 ESP32 非易失性存储库。 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
458 浏览 0 评论
2244 浏览 1 评论
synopsys 的design ware:DW_fpv_div,浮点数除法器,默认32位下,想提升覆盖率(TMAX),如果用功能case去提升覆盖率呢?
2955 浏览 1 评论
RK3588 GStreamer调试四路鱼眼摄像头四宫格显示报错
5730 浏览 1 评论
【飞凌嵌入式OK3576-C开发板体验】RKNN神经网络-YOLO图像识别
254 浏览 0 评论
浏览过的版块 |
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-4 02:17 , Processed in 0.510376 second(s), Total 41, Slave 34 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号