最近做了一个协议栈,需要烧写一批节点,突然发现节点ID号不能很方便的设置,查了contiki的相关的文章,试验成功,总结如下:
问题描述:
在contiki2.6操作系统下,sky平台,在不改变代码的情况下如何设置节点(node)的地址(or id)?
方法:
以contiki/examples/hello-world程序为例
首先需要修改应用程序的makefile文件
CONTIKI_PROJECT = hello-world
all: $(CONTIKI_PROJECT)
#UIP_CONF_IPV6=1
CFLAGS += -DNODEID=3
CONTIKI = ../..
include $(CONTIKI)/Makefile.include
然后需要修改在platform/sky的Contiki-sky-main.c中
main(int argc, char **argv)
{
/*
* Initalizehardware.
*/
msp430_cpu_init();
……
#if WITH_TINYOS_AUTO_IDS
node_id =TOS_NODE_ID;
#else /* WITH_TINYOS_AUTO_IDS */
/* Restore node id if such hasbeen stored in external mem */
node_id_restore();
/*will set node_id = 1*/
#endif /* WITH_TINYOS_AUTO_IDS */
/*chang node_id bymakefile*/
#if NODEID
Node_id=NODEID;
#endif
……
}
原先的程序可以通过外部烧写内存(node_id_restore())的方法来独立修改ID,通过对NODEID宏的判断可以在makefile中修改node id
zhuangxiu.ganji.com/ask/2587821.htm
zhuangxiu.ganji.com/ask/2587822.htm
zhuangxiu.ganji.com/ask/2587823.htm
http://zhuangxiu.ganji.com/ask/2587821.htm
http://zhuangxiu.ganji.com/ask/2587822.htm
http://zhuangxiu.ganji.com/ask/2587823.htm