Contiki-NG具有大量的配置選項,可根據(jù)任何給定項目和平臺的需求定制系統(tǒng)。 大多數(shù)配置是通過.h文件完成的。 某些配置(netstack配置,包含模塊)是通過項目Makefile完成的。
模組
項目可以通過Makefile變量MODULES包含自己的模塊,即頂層os的子目錄。 例如,MODULES = os/net/app-layer/coap包含CoAP協(xié)議。 要了解包含Makefile的順序,請參閱文檔:構(gòu)建系統(tǒng)。
網(wǎng)絡(luò)堆棧具有兩個主要層:MAC(介質(zhì)訪問控制)層和NET(網(wǎng)絡(luò))層。 也可以從項目Makefile中配置它們,如下所述。
注意:通常,每當(dāng)添加或修改模塊,網(wǎng)絡(luò)堆?;蚓庉婱akefile時,請不要忘記使用make distclean來清理構(gòu)建工件。
網(wǎng)絡(luò)協(xié)議棧:MAC層
要選擇MAC層,請使用以下值之一設(shè)置Make變量MAKE_MAC:
-
MAKE_MAC_NULLMAC:不執(zhí)行任何操作的MAC層。 沒有數(shù)據(jù)包發(fā)送或接收。 -
MAKE_MAC_CSMA(默認(rèn)):IEEE 802.15.4非信標(biāo)啟用模式,該模式在始終開啟的無線電上使用CSMA。 -
MAKE_MAC_TSCH:IEEE 802.15.4 TSCH(時隙跳躍)模式。 這是一個全局同步的,計劃的,跳頻的MAC(請參閱doc:6tisch) -
MAKE_MAC_BLE:具有BLE無線電的設(shè)備的實驗性MAC層。 可用于啟用BLE上的IPv6。 當(dāng)前僅適用于CC2650設(shè)備。 請參閱examples/platform-specific/cc26xx/ble-ipv6/下的相應(yīng)示例。 -
MAKE_MAC_OTHER:非上述中的類型。 用于指定其他自定義MAC是很有用。
無論上面的標(biāo)志如何,都可以在.h文件中通過標(biāo)志NETSTACK_CONF_MAC指定其自己的MAC實現(xiàn)。 這可以使用NullMAC、CSMA或TSCH的替代實現(xiàn)。 如果在Makefile中設(shè)置MAKE_MAC變量的值為MAKE_MAC_OTHER時,必須在.h文件中指定NETSTACK_CONF_MAC。
網(wǎng)絡(luò)協(xié)議棧:網(wǎng)絡(luò)層
要選擇一個NET層,請使用以下值之一設(shè)置Make變量MAKE_NET:
-
MAKE_NET_NULLNET:不執(zhí)行任何操作的NET層。 數(shù)據(jù)包在上/下中繼,未經(jīng)修改。 參見doc:nullnet -
MAKE_NET_IPV6(默認(rèn)):具有6LoWPAN和RPL的uIP低功耗IPv6堆棧。 默認(rèn)情況下,啟用RPL,更具體地說是RPL-lite版本。 下一部分將詳細(xì)介紹路由協(xié)議配置。 -
MAKE_NET_OTHER:以上都不是。 用于指定其他自定義網(wǎng)絡(luò)層很有用。
無論上面的標(biāo)志如何,都可以在.h文件中通過標(biāo)志NETSTACK_CONF_NETWORK指定自己的網(wǎng)絡(luò)層實現(xiàn)。 這將啟用NullNet或IPv6的替代實現(xiàn)。 設(shè)如果在Makefile中設(shè)置MAKE_NET變量的值為MAKE_NET_OTHER時,必須在.h文件中指定NETSTACK_CONF_NETWORK。
路由協(xié)議
在IPv6情況下,可以通過將MAKE_ROUTING設(shè)置為以下三個路由配置之一:
-
MAKE_ROUTING_NULLROUTING:無路由協(xié)議。 -
MAKE_ROUTING_RPL_LITE(默認(rèn)):RPL的RPL-Lite實現(xiàn)(請參閱doc:rpl)。 -
MAKE_ROUTING_RPL_CLASSIC:RPL的RPL-Classic實現(xiàn)(請參閱doc:rpl)。
系統(tǒng)配置
所有其他配置參數(shù)均從.h文件設(shè)置。 要設(shè)置特定于項目的配置,請在項目目錄中創(chuàng)建一個project-conf.h文件。 例如,要啟用TCP,請設(shè)置#define UIP_CONF_TCP 1。在os/contiki-default-conf.h中顯示了常用的配置標(biāo)志列表。 添加project-conf.h之后,請確保使用make distclean清除所有構(gòu)建目標(biāo)后,再重新編譯。
不同的.h文件的包含順序如下:
-
module-macros.h:對于構(gòu)建中包含的每個模塊,首先包含一組宏。 這些宏用于定義常量值而不是配置其他Contiki-NG模塊參數(shù)。 -
project-conf.h:項目特定的配置。 用于配置各種Contiki-NG模塊。 -
contiki-conf.h:這是特定于平臺的配置文件。 通常會包括特定于CPU的.h文件。 設(shè)置許多與項目所需相匹配的特定于平臺的標(biāo)志。 -
contiki-default-conf.h:這定義了許多Contiki-NG參數(shù)的默認(rèn)值。 這對于公用配置標(biāo)志的參考也很有用。 -
Module-specific.h:這些文件(例如uip.h)排在最后,即它們?yōu)樯鲜鋈魏挝募形炊x的參數(shù)設(shè)置默認(rèn)值。
有時很容易忘記設(shè)置或未設(shè)置哪些標(biāo)志。 要檢查當(dāng)前配置,請嘗試make目標(biāo)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