发布时间:2016-01-05 17:23:03
摘要: 本文讲述了Rime协议栈缓冲区管理,先是结合示意图理清各变量间关系,接着给出函数API描述,并详细剖析各个函数,最后分析了发出和接收的数据包存放方式不同的原因。一、概述及相关变量 Rime缓冲区管理比较简单,将发出和收到的数据包(包括应用程序数据和数据.........【阅读全文】
发布时间:2016-01-05 17:22:49
摘要: Rime 协议栈所有通信都是通过通道channel标识的,本文介绍通道channel结构体及相关函数,包括channel_init、channel_open、channel_close、channel_lookup、channel_set_attributes。PS:channel有通道、信道、渠道、频道等含义,本文将其翻译为通道,理由是Rime中channel是.........【阅读全文】
发布时间:2016-01-05 17:22:40
摘要 : 本文讲述了 Rime 协议栈 rimeaddr_t 相关细节,包括地址格式、地址相关操作 rimeaddr_copy 和 rimeaddr_cmp; 两个全局变量 rimeaddr_node_addr 和 rimeaddr_null。一、概述 无论哪个协议栈,都得解决一个根本问题,如何标识不同的设备,即编址。如计算机.........【阅读全文】
发布时间:2016-01-05 17:21:29
在程序调试时,我们经常需要输出一些调试信息,当调试完毕后,就不再需要使用了。那怎么快速的在调试状态和发布状态切换呢?通常我们使用预编译加宏定义来处理这个问题,例如:#ifdef DEBUG调试代码#endif如果我们使用printf来显示一些调试信息,那么每个地方都加上#ifdef和#endif就很麻烦了。我们可以定义一个DbgPrintf的函数来专门处理这些事情,只在DbgPrintf函数内放上#ifdef和#endif就行了。但是这样代码在运行时,还是有调用一次函数的,浪费了时间。那么可不可以利用宏定义,实现完全没有编译代码产生的宏呢?可以尝试下面的宏代码: #ifdef DEBUG#......【阅读全文】
发布时间:2016-01-05 17:21:16
本文整理了网上一些对J-Link、J-Trace、Open JTAG区别的讨论,同时也加入一些自己的理解。......【阅读全文】