Если вам нужно сэкономить ОЗУ, вы можете подумать о сокращении:
QUEUEBUF_CONF_NUM: количество пакетов в очереди канального уровня. 4, вероятно, является нижней границей для разумной работы. По мере увеличения нагрузки на транспорт, например, более частый трафик или большие дейтаграммы, вам нужно будет увеличить этот параметр.
NBR_TABLE_CONF_MAX_NEIGHBORS: количество записей в соседней таблице. Значение, превышающее максимальную плотность сети, является безопасным. Также будет работать значение ниже этого, поскольку таблица соседей будет автоматически фокусироваться на соответствующих соседях. Но слишком низкие значения приведут к снижению производительности.
NETSTACK_MAX_ROUTE_ENTRIES: количество записей маршрутизации, т. Е. В режиме без сохранения RPL, количество ссылок в графе маршрутизации и в режиме хранения, количество элементов таблицы маршрутизации. В корне сети это должно быть установлено на максимальный размер сети. В режиме без хранения другие узлы могут установить этот параметр равным 0. В режиме хранения рекомендуется, чтобы все узлы также предоставляли достаточное количество записей для каждого узла в сети.
UIP_CONF_BUFFER_SIZE: размер буфера IPv6. Минимальное значение для функциональной совместимости составляет 1280. В закрытых системах, где не используются большие датаграммы, понижаем это значение, например, до. 140 может быть разумным.
SICSLOWPAN_CONF_FRAG: Включает / отключает фрагментацию 6LoWPAN. Отключите это, если весь ваш трафик соответствует одному пакету канального уровня. Обратите внимание, что это также сохранит некоторые важные ПЗУ.
Если вам нужно сохранить ROM, вы можете рассмотреть следующие вопросы:
UIP_CONF_TCP: включает / отключает TCP. Убедитесь, что это отключено, когда TCP не используется.
UIP_CONF_UDP: включает / отключает UDP. Убедитесь, что это отключено, когда UDP не используется.
SICSLOWPAN_CONF_FRAG: как упомянуто выше. Отключить, если фрагментация не требуется.
LOG_CONF_LEVEL_ *: журналы занимают большое количество ПЗУ. Уменьшите уровни журнала, чтобы сохранить еще немного.
Существует много других параметров, которые влияют на использование ОЗУ / ПЗУ. Вы можете проверить os / contiki-default-conf.h, а также специфичные для платформы файлы contiki-conf.h для вдохновения. Или используйте .flashprof и .ramprof для определения горячих точек.
* Ответ на вики Contiki в Tutorial: использование RAM и ROM
Георг Ойконому