ESP8266 基础篇:内存分布

esp8266 在物理上有 64KB 的 iRAM,96KB 的 dRAM。

iRAM

instruction RAM,用来存放指令,位于 0x40100000 开始的 64KB 空间。通过文件 eagle.app.v6.ld 我们可以查看到如下信息:

iram1_0_seg :   org = 0x40100000, len = 0x8000

指定了 iRAM 的起始地址,以及长度。由于部分 iRAM 空间会被用作 cache,因此这里长度为 32 KB。

dRAM

data RAM,用来存放数据,位于 0x3FFE8000 开始的空间。通过文件eagle.app.v6.ld 我们可以查看到如下信息:

dram0_0_seg :   org = 0x3FFE8000, len = 0x18000

指定了 dRAM 的起始地址,以及长度。

cache

esp8266 sdk 默认将 iRAM 中 0x40108000 开始的 32KB 空间用作 cache,sdk 启动后会将对应的 spi flash 空间映射到 cache 空间。

esp8266 支持多种 cache 映射机制,当前默认的使用的是 1MB + 1MB 的方式。即将 spi flash 中的 0x000000~0x0FFFFF 映射到 0x402000000x402FFFFF,0x1000000x1FFFFF 映射到 0x40200000~0x402FFFFF。

在 esp8266 sdk 中,支持若干种 flash map 方式,有 256KB + 256KB、512KB + 512KB、1024KB + 1024KB。

在 256KB + 256KB 和 512KB + 512KB 两种 map 方式中,user1.bin 和 user2.bin 均在第一个 1MB 空间,因此映射到同一个 1MB 空间:

256KB + 256KB

ld 目录查看文件:

  • eagle.app.v6.new.512.app1.ld
  • eagle.app.v6.new.512.app2.ld
irom0_0_seg :   org = 0x40201010, len = 0x2B000
irom0_0_seg :   org = 0x40241010, len = 0x2B000

512KB + 512KB

ld 目录查看文件:

  • eagle.app.v6.new.1024.app1.ld
  • eagle.app.v6.new.1024.app2.ld
irom0_0_seg :   org = 0x40201010, len = 0x6B000
irom0_0_seg :   org = 0x40281010, len = 0x6B000

在 1024KB + 1024KB 的 map 方式中,user1.bin 和 user2.bin 位于两个 1MB 空间内,采用相同的映射:

1024KB + 1024KB

ld 目录查看文件:

  • eagle.app.v6.new.2048.ld
irom0_0_seg :   org = 0x40201010, len = 0xE0000
  • 13
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值