Contiki‐NG的配置系统

Contiki-NG具有大量的配置选项,可根据任何给定项目和平台的需求定制系统。 大多数配置是通过.h文件完成的。 某些配置(netstack配置,包含模块)是通过项目Makefile完成的。

模组

项目可以通过Makefile变量MODULES包含自己的模块,即顶层os的子目录。 例如,MODULES = os/net/app-layer/coap包含CoAP协议。 要了解包含Makefile的顺序,请参阅文档:构建系统

网络堆栈具有两个主要层:MAC(介质访问控制)层和NET(网络)层。 也可以从项目Makefile中配置它们,如下所述。

注意:通常,每当添加或修改模块,网络堆栈或编辑Makefile时,请不要忘记使用make distclean来清理构建工件。

网络协议栈:MAC层

要选择MAC层,请使用以下值之一设置Make变量MAKE_MAC

  • MAKE_MAC_NULLMAC:不执行任何操作的MAC层。 没有数据包发送或接收。
  • MAKE_MAC_CSMA(默认):IEEE 802.15.4非信标启用模式,该模式在始终开启的无线电上使用CSMA。
  • MAKE_MAC_TSCH:IEEE 802.15.4 TSCH(时隙跳跃)模式。 这是一个全局同步的,计划的,跳频的MAC(请参阅doc:6tisch)
  • MAKE_MAC_BLE:具有BLE无线电的设备的实验性MAC层。 可用于启用BLE上的IPv6。 当前仅适用于CC2650设备。 请参阅examples/platform-specific/cc26xx/ble-ipv6/下的相应示例。
  • MAKE_MAC_OTHER:非上述中的类型。 用于指定其他自定义MAC是很有用。

无论上面的标志如何,都可以在.h文件中通过标志NETSTACK_CONF_MAC指定其自己的MAC实现。 这可以使用NullMAC、CSMA或TSCH的替代实现。 如果在Makefile中设置MAKE_MAC变量的值为MAKE_MAC_OTHER时,必须在.h文件中指定NETSTACK_CONF_MAC

网络协议栈:网络层

要选择一个NET层,请使用以下值之一设置Make变量MAKE_NET

  • MAKE_NET_NULLNET:不执行任何操作的NET层。 数据包在上/下中继,未经修改。 参见doc:nullnet
  • MAKE_NET_IPV6(默认):具有6LoWPAN和RPL的uIP低功耗IPv6堆栈。 默认情况下,启用RPL,更具体地说是RPL-lite版本。 下一部分将详细介绍路由协议配置。
  • MAKE_NET_OTHER:以上都不是。 用于指定其他自定义网络层很有用。

无论上面的标志如何,都可以在.h文件中通过标志NETSTACK_CONF_NETWORK指定自己的网络层实现。 这将启用NullNet或IPv6的替代实现。 设如果在Makefile中设置MAKE_NET变量的值为MAKE_NET_OTHER时,必须在.h文件中指定NETSTACK_CONF_NETWORK

路由协议

在IPv6情况下,可以通过将MAKE_ROUTING设置为以下三个路由配置之一:

  • MAKE_ROUTING_NULLROUTING:无路由协议。
  • MAKE_ROUTING_RPL_LITE(默认):RPL的RPL-Lite实现(请参阅doc:rpl)。
  • MAKE_ROUTING_RPL_CLASSIC:RPL的RPL-Classic实现(请参阅doc:rpl)。

系统配置

所有其他配置参数均从.h文件设置。 要设置特定于项目的配置,请在项目目录中创建一个project-conf.h文件。 例如,要启用TCP,请设置#define UIP_CONF_TCP 1。在os/contiki-default-conf.h中显示了常用的配置标志列表。 添加project-conf.h之后,请确保使用make distclean清除所有构建目标后,再重新编译。

不同的.h文件的包含顺序如下:

  • module-macros.h:对于构建中包含的每个模块,首先包含一组宏。 这些宏用于定义常量值而不是配置其他Contiki-NG模块参数。
  • project-conf.h:项目特定的配置。 用于配置各种Contiki-NG模块。
  • contiki-conf.h:这是特定于平台的配置文件。 通常会包括特定于CPU的.h文件。 设置许多与项目所需相匹配的特定于平台的标志。
  • contiki-default-conf.h:这定义了许多Contiki-NG参数的默认值。 这对于公用配置标志的参考也很有用。
  • Module-specific.h:这些文件(例如uip.h)排在最后,即它们为上述任何文件中未定义的参数设置默认值。

有时很容易忘记设置或未设置哪些标志。 要检查当前配置,请尝试make目标viewconf,例如:

make TARGET=zoul viewconf
----------------- Make variables: --------------
##### "TARGET": ________________________________ zoul
##### "BOARD": _________________________________ remote-revb
##### "MAKE_MAC": ______________________________ MAKE_MAC_CSMA
##### "MAKE_NET": ______________________________ MAKE_NET_IPV6
##### "MAKE_ROUTING": __________________________ MAKE_ROUTING_RPL_LITE
----------------- C variables: -----------------
##### "PROJECT_CONF_PATH": _____________________ ><
##### "CONTIKI_VERSION_STRING": ________________ == "Contiki-NG-release/v4.2"
##### "FRAME802154_CONF_VERSION":_______________ == (0x01)
##### "IEEE802154_CONF_PANID":__________________ == 0xabcd
##### "IEEE802154_CONF_DEFAULT_CHANNEL": _______ == 26
##### "QUEUEBUF_CONF_NUM": _____________________ == 8
##### "NBR_TABLE_CONF_MAX_NEIGHBORS": __________ == 16
##### "NETSTACK_MAX_ROUTE_ENTRIES": ____________ == 16
##### "UIP_CONF_BUFFER_SIZE": __________________ == 1280
##### "UIP_CONF_UDP": __________________________ == 1
##### "UIP_CONF_UDP_CONNS": ____________________ == 8
##### "UIP_CONF_TCP": __________________________ == 0
##### "UIP_CONF_TCP_CONNS": ____________________ == 0
##### "UIP_CONF_ND6_SEND_RA": __________________ == 0
##### "UIP_CONF_ND6_SEND_NS": __________________ == 0
##### "UIP_CONF_ND6_SEND_NA": __________________ == 1
##### "UIP_CONF_ND6_AUTOFILL_NBR_CACHE": _______ == 1
##### "SICSLOWPAN_CONF_FRAG": __________________ == 1
##### "SICSLOWPAN_CONF_COMPRESSION": ___________ == SICSLOWPAN_COMPRESSION_IPHC
##### "ENERGEST_CONF_ON": ______________________ == 0
##### "LOG_CONF_LEVEL_RPL": ____________________ == 0
##### "LOG_CONF_LEVEL_TCPIP": __________________ == 0
##### "LOG_CONF_LEVEL_IPV6": ___________________ == 0
##### "LOG_CONF_LEVEL_6LOWPAN": ________________ == 0
##### "LOG_CONF_LEVEL_NULLNET": ________________ == 0
##### "LOG_CONF_LEVEL_MAC": ____________________ == 0
##### "LOG_CONF_LEVEL_FRAMER": _________________ == 0
##### "LOG_CONF_LEVEL_6TOP": ___________________ == 0
##### "LOG_CONF_LEVEL_COAP": ___________________ == 0
##### "LOG_CONF_LEVEL_LWM2M": __________________ == 0
##### "LOG_CONF_LEVEL_MAIN": ___________________ == 3
------------------------------------------------
'==' Means the flag is set to a given a value
'->' Means the flag is unset, but will default to a given value
'><' Means the flag is unset and has no default value
To view more Make variables, edit ../../Makefile.include, rule 'viewconf'
To view more C variables, edit ../../tools/viewconf/viewconf.c
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容