ESP8266 中 cache 和 iram 一点理解

本文介绍了ESP8266中iram和cache的使用,包括iram方式(需load,用于0x4010…地址)和cache方式(无需load,0x4020…地址)。iram中的代码由bootloader从flash加载,而cache则直接映射到内存。文章强调,操作flash的代码应置于iram中以避免crash。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前提阅读

指令载入方式

一. iram 方式(0x4010…, 需 load)

用户可通过 ld 文件中 iram1_0_seg 指定某个lib/某个段, 或者通过下面方式指定某个函数/某个变量, 将其放在 iram 中。

#define IRAM_ATTR	__attribute__((section(".text")))

在编译选项 -ffunction-sections 打开的情况下,函数的默认属性为 *.text*.text 属性的函数,将会被放到 .text.
如下 ld 所示,esp8266 sdk 默认将 iRAM 中 0x40100000 开始的 32KB 空间用作 iram,sdk 启动后, bootloader 将 flash 中代码 load 到 iram 中。

iram1_0_seg :   org = 0x40100000, len = 0x8000
二. cache 方式(0x4020…, 无需 load, 也被称为 flash 方式)

用户可通过 ld 文件中 irom0_0_seg 指定某个lib/某个段, 或者通过下面方式指定某个函数/某个变量, 将其放在 flash 中, 通过 cac

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值