网站建设的经济可行性,瑞丽住建局网站,网络服务包括,html5网站正在建设中问#xff1a;ESP8266_NONOS_SDK中ICACHE_FLASH_ATTR宏的用途是什么#xff1f;我看到它取决于ICACHE_FLASH#xff0c;但我不知道何时应该定义该符号。什么时候需要包括它#xff1f;答#xff1a;对于ESP8266_NONOS_SDK#xff0c;用ICACHE_FLASH_ATTR编译的函数编译到… 问ESP8266_NONOS_SDK中ICACHE_FLASH_ATTR宏的用途是什么我看到它取决于ICACHE_FLASH但我不知道何时应该定义该符号。什么时候需要包括它答对于ESP8266_NONOS_SDK用ICACHE_FLASH_ATTR编译的函数编译到IROM部分; 对于这些功能CPU执行指令高速缓存中的代码。相反系统启动时没有ICACHE_FLASH_ATTR的函数加载到IRAM中。因此使用ICACHE_FLASH_ATTR有助于降低IRAM要求。不要在中断处理程序中使用ICACHE_FLASH_ATTR函数因为它可能与闪存R / W操作冲突。对于ESP8266_RTOS_SDK在此SDK中我们已将I-cache的执行作为默认模式。因此只有需要从IRAM运行的函数才能用IRAM_ATTR进行修饰。换句话说要从I-cache执行的函数不需要用ICACHE_FLASH_ATTR进行修饰。它们默认继承这个特性除非它们用IRAM_ATTR修饰。问为什么ESP8266_NONOS_SDK中有的函数前面添加了“ICACHE_FLASH_ATTR”宏我们应该如何使用它呢答对于ESP8266_NONOS_SDK添加了“ICACHE_FLASH_ATTR”宏的函数将存放在IROM中CPU仅在调用到它们的时候将它们读到缓存中运行; 没有添加“ICACHE_FLASH_ATTR”宏的函数将在一开始上电运行时就加载到IRAM中运行; 由于空间有限我们无法将所有代码都一次性加载到IRAM中运行因此在大部分函数前添加“ICACHE_FLASH_ATTR”宏放在IROM中。请注意不要在中断处理函数中调用带有对于ESP8266_RTOS_SDK函数默认存放在IROM中无需再添加“ICACHE_FLASH_ATTR”宏。中断处理函数也可以定义在IROM中。如果开发者需要将一些频繁调用的函数定义在IRAM中在函数前添加“IRAM_ATTR”宏即可。 转载于:https://www.cnblogs.com/CodeWorkerLiMing/p/11256375.html