const uint8 MyArr[1024] ICACHE_RODATA_ATTR = {0}; void MyFun() ICACHE_FLASH_ATTR { } 

这种 ICACHE 开头的宏作的用就是因为esp8266的ram有限,所以在启动的时候就不可能把所有的数据都载入ram,只能是先载入必要的数据,其他数据保留在Flash中,在需要的时候读取。esp8266的固件有5个有效段,分别是:.data,.rodata,.bss,.text,.irom0.text,(这些都是从编译好的elf文件中提取的)其中 .data,.rodata,.bss,.text 这四个段在启动的时候被载入内存,.irom0.text 则通过内存映射的方式访问,不会占用宝贵的ram。所以不是必要的数据都可以装入 .irom0.text 这个段中以节省ram占用。另外需要注意的是,任何中断函数都不可以存放在 .irom0.text 中,会crash!!!

#define ICACHE_FLASH_ATTR __attribute__((section(".irom0.text")))
#define ICACHE_RODATA_ATTR __attribute__((section(".irom.text"))) 

这两个宏就是告诉编译器数据的保存位置。变量用 ICACHE_RODATA_ATTR ,(切记变量必须是 const 类型的),函数用 ICACHE_FLASH_ATTR 。

转载于:https://www.cnblogs.com/CodeWorkerLiMing/p/11256391.html

ESP8266—“ICACHE_FLASH_ATTR”宏——解释含义相关推荐

  1. ESP8266—“ICACHE_FLASH_ATTR”宏

    问: ESP8266_NONOS_SDK中ICACHE_FLASH_ATTR宏的用途是什么?我看到它取决于ICACHE_FLASH,但我不知道何时应该定义该符号. 什么时候需要包括它? 答: 对于ES ...

  2. VC/MFC中常用宏的含义

    VC/MFC中常用宏的含义 Visual C++ MFC 中常用宏的含义(转载)     AND_CATCHAND_CATCH AND_CATCH(exception_class,exception ...

  3. 由AFX_IDW_PANE_FIRST宏的含义分析界面库XTP的一个bug

    Codejock的界面库Xtreme Toolkit Pro(XTP)是当前MFC开发中发展得比较成熟,应用也颇为广泛的几个界面库之一,其强大的界面美化功能以及简便的使用步骤深受不少MFC程序员的青睐 ...

  4. VxWorks启动过程描述及主要宏开关含义

    1 三种不同的VxWorks映象比较 VxWorks是一种灵活的.可裁剪的嵌入式实时操作系统.用户可以根据需要创建自己的VxWorks映象,由它来引导目标系统,而后下载并运行应用程序. 根据应用场合的 ...

  5. AHK取色宏解释(不断更新内容)

    AHK取色宏的原理是获取屏幕固定点的坐标(包含横坐标.纵坐标,颜色值) 如果横坐标 + 纵坐标 获取的颜色值=之前的颜色值则可以输出相应的功能~ 具体看下面的解释和例子: #IfWinActive a ...

  6. Linux下EAGAIN宏的含义

    在Linux环境下开发经常会碰到很多错误(设置errno),其中EAGAIN是其中比较常见的一个错误(比如用在非阻塞操作中).在man手册关于read的解释如下: RETURN VALUE     O ...

  7. __iLINE__和__FILE__等内置宏的含义

    编译器内置宏: 先介绍几个编译器内置的宏定义,这些宏定义不仅可以帮助我们完成跨平台的源码编写,灵活使用也可以巧妙地帮我们输出非常有用的调试信息. ANSI C标准中有几个标准预定义宏(也是常用的): ...

  8. VC中Windows中一些宏的含义

    https://www.cnblogs.com/zhcncn/archive/2013/05/21/3091052.html 1. _WIN32_WINDOWS,_WIN32_WINNT,WINVER ...

  9. WINVER和_WIN32_IE等宏的含义

    它们是用于定义windows和Internet Explorer版本号的,用于区分不用版本的函数和参数. 在你编译程序时会根据不同的版本系统号,链接不同的函数和参数. Minimum System R ...

  10. 关于select中fd_set变量的一些通俗宏解释

    FD_ZERO(fd_set*fdset)        将fd_set变量的所有位初始化为0: FD_SET(int fd,fd_set*fdset)     在参数fdset指向的变量中注册文件描 ...

最新文章

  1. Android开发中libs包下面的mips、armeabi、armeabi-v7a和x86
  2. 【约束布局】ConstraintLayout 13 种相对定位属性组合 ( 属性组合 | 用法说明 )
  3. QT教程2:QT5的体系构架
  4. 系统服务及shell编程
  5. 《leetcode》search-insert-position
  6. bp神经网络预测python代码_机器学习之多层神经网络(附Python代码和数据)
  7. 2021 最新 IDEA集成Gitee、Gitee迁移GitHub【图文讲解】
  8. 三维坐标转经纬度_Three.js 地理坐标和三维空间坐标的转换
  9. 读取设置config.ini配置
  10. 8266不通过usb供电_HomePod mini?电源线同样不可拆卸:但或能用USB-C移动电源供电...
  11. 荣耀V40屏幕素质得到“认证”:120Hz高刷屏没跑了
  12. android 底部去除list渐变,layer-list渐变色的处理
  13. linux文档采集前五行,Linux 学习-Shell筛选top前五行信息
  14. Java 中判断char 是否为空格 和空
  15. 皮尔森相关系数与方差膨胀因子介绍及关系 附python代码
  16. C# WinForm中NotifyICon控件的用法
  17. dev、test和prod是什么意思?
  18. 计算机初学者学习编程语言C#和Java哪个更有前途?
  19. 邮箱服务器满了foxmail,foxmail邮箱的容量满了,应该怎样删除-上海腾讯企业邮箱[foxmail]...
  20. MATLAB学习笔记(五)——MATLAB绘图

热门文章

  1. 面试了57位程序员,我发现混得好的人都有这个特质!
  2. Redis 低成本、高可用设计,牛逼!
  3. 面试热身:5 亿整数的大文件,排个序 ?
  4. 毕业三五年,怎么拿到百万年薪?
  5. 与其纠结,不如放弃!
  6. 如果你没去 GDD,那可真是一种遗憾!
  7. 你知道 Google X 神秘实验室创始人的故事么?
  8. 未来五年最具前景的一门编程语言是什么?
  9. 殷人昆数据结构第二版_从入门到拿offer,必须看的数据结构与算法书籍推荐,不好不推荐...
  10. 想成长为一名年薪50万+的实战型架构师?必掌握这7大实战技能经验