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,(这些都是从编译好的el…
问:ESP8266_NONOS_SDK中ICACHE_FLASH_ATTR宏的用途是什么?我看到它取决于ICACHE_FLASH,但我不知道何时应该定义该符号.什么时候需要包括它?答:对于ESP8266_NONOS_SDK,用ICACHE_FLASH_ATTR编译的函数编译到IROM部分; 对于这些功能,CPU执行指令高速缓存中的代码.相反,系统启动时没有ICACHE_FLASH_ATTR的函数加载到IRAM中.因此,使用ICACHE_FLASH_ATTR有助于降低IRAM要求.不要在中断处理程…
转自:http://blog.sina.com.cn/s/blog_6929134b0100tdn8.html 自旋锁与互斥锁有点类似,只是自旋锁不会引起调用者睡眠,如果自旋锁已经被别的执行单元保持,调用者就一直循环在那里看是否该自旋锁的保持者已经释放了锁,"自旋"一词就是因此而得名. 由于自旋锁使用者一般保持锁时间非常短,因此选择自旋而不是睡眠是非常必要的,自旋锁的效率远高于互斥锁. 信号量和读写信号量适合于保持时间较长的情况,它们会导致调用者睡眠,因此只能在进程上下文使用(_try…
Linux中的EAGAIN含义   在Linux环境下开发经常会碰到很多错误(设置errno),其中EAGAIN是其中比较常见的一个错误(比如用在非阻塞操作中). linux下使用write\send发送数据报 EAGAIN : Resource temporarily unavailable 错 首先是我把套接字设置为异步的了,然后在使用write发送数据时采取的方式是循环发送大量的数据:由于是异步的,write\send将要发送的数据提交到发送缓冲区后是立即返回的,并不需要对端确认数据已接收…
1.字符类[直接量] . (点号,小数点) 匹配任意单个字符,但是行结束符除外\d 匹配一个0-9之间的阿拉伯数字.等价于[0-9]\D    匹配任意一个不是0-9之间阿拉伯数字的字符.等价于[^0-9]. \w    匹配任意一个字母.数字或下划线的字符.等价于 [A-Za-z0-9_]. \W    匹配任意一个不是字母.数字或下划线的字符.等价于 [^A-Za-z0-9_]. \s 匹配一个空白符,包括空格.制表符.换页符.换行符和其他 Unicode 空格.\S    匹配一个非空白符…
   手把手叫你玩转网络编程系列之三    完毕port(Completion Port)具体解释                                                              ----- By PiggyXP(小猪) 前 言 本系列里完毕port的代码在两年前就已经写好了,可是因为许久没有写东西了,不知该怎样提笔,所以这篇文档总是在酝酿之中--酝酿了两年之后,最终决定開始动笔了,但愿还不算晚-.. 这篇文档我很具体而且图文并茂的介绍了关于网络编程模型…
一.概况 1.存储 ESP8266 带有 160 KB 的 RAM,其中 64 KB 为 iRAM,96 KB 为 dRAM.iRAM 进一步 分成两块:32 KB iRAM 块运行标有 IRAM_ATTR 的代码,另一个 32 KB 块用作 cache,运行标有 ICACHE_FLASH_ATTR 的代码. RAM 和 flash 访问必须是 4 字对齐的,请勿直接进行指针转换.请使用 os_memcpy 或 其他 API 进行内存操作. 二.代码结构 1.void user_init(voi…
在XCODE开发过程中,经常会遇到引用头文件,引用库路径的问题,如果不是直接的源码引入,则需要在工程中增加设置.虽然现在有了Pod这类集合管理工具,但有时为了一个很小的lib引入Pod这尊大神还是有点杀鸡用牛刀.在这里讨论下怎么使用XCODE中的几个宏在调整路径.$(SRCROOT),这个宏的含义是指工程的XCODEPROJ文件所在的路径,后面的所有目录都以该路径为参照 设置头文件搜索路径. 关于路径的定位,有个简单的方法,在终端里用ls查看,起始目录是xcodeproj所在目录,只要能ls到你…
Python中:self和__init__的含义 + 为何要有self和__init__ 背景 回复: 我写的一些Python教程,需要的可以看看 中SongShouJiong的提问: Python中的self,__init__的含义是啥? 为何要有self,__init这些东西? 解释之前,先说几句 1.到目前为止,我虽然也已写了不算很少的python的代码,但是,还真的没有太多接触self和__init__这两个东西. 只能算是大概了解. 2.为了搞懂其含义,现学现卖,去看了些资料,然后整理…
在学习C语言的时候,我们曾经遇到过一个宏的概念.宏的作用机理本质上是宏的展开,C语言中的宏的用法也有很多种(水其实很深...),不过从感觉上来讲,人们大致上会在以下的场景中,利用宏来解决一些窘境:一是为了避免重复书写同样性质代码时,会使用到宏:二是为了定义一些常量参数时,会使用到宏.另外,宏的意义也在于,当我们修改某个宏的定义时,便修改了所有引用宏的地方所展开的代码,这无疑节省了我们修改代码的工作量以及代码修改的灵活性. 在Visual Studio中进行C++工程属性的配置时,同样也会遇到与写…