1、标注「ICACHE_FLASH_ATTR」宏的函数存储在irom0里面(Flash里面),表示将其存放在Flash中,仅调用时才加载到cache 运行;
没有标注的会放在iram1里面,iram1大小只有32KB,IoT_Demo固件使用了大约27KB,还剩下5KB,而irom0最大支持768KB。所以如果自己用SDK开发,请尽量给函数都标注该宏,不然会出现内存不够用的错误信息:「.output/eagle/debug/image/eagle.app.v6.out section .text' will not fit in region
iram1_0_seg’」
2、不要在GPIO或UART中断处理函数中调用带有「ICACHE_FLASH_ATTR」宏的函数,否则可能会进入异常导致重启。
参考相关链接
https://blog.csdn.net/yannanxiu/article/details/51371798