2015-06-03 3 views
0

Я пытаюсь создать порт для Contiki-os для LPC1347, и у меня вопрос о том, как именно память обрабатывается в Contiki. Прототипы не имеют стека и не используются «реальные потоки», поэтому все в основном находится в одном стеке, поэтому в основном это статическое распределение памяти. Я понимаю, как работают прототипы, но когда инициализируется новый процесс, как распределена память для него, а также, в случае события, имеющего данные, как управляется память для данных событий?Управление памятью в Contiki-OS

ответ

1

Вся необходимая память статически выделяется во время компиляции/связи. Его выполняет макрос PROCESS [1], который выделяет структуру, содержащую необходимую информацию [2]. Что касается событий, они также должны выделять свою собственную память [3].

Поэтому невозможно запустить один и тот же поток * или запланировать одно и то же событие дважды.

* На самом деле это, но не используя макрос PROCESS.

[1] https://github.com/contiki-os/contiki/blob/5bede26b/core/sys/process.h#L301-311

[2] https://github.com/contiki-os/contiki/blob/5bede26b/core/sys/process.h#L315-326

[3] https://github.com/contiki-os/contiki/blob/5bede26b/core/sys/process.c#L62-66

+0

Еще раз спасибо! Однако у меня есть еще один вопрос: поскольку переменные являются глобальными, для события они не могут обновляться до завершения процесса события. – DarthSpeedious

+0

Не вижу вопроса, но, наверное, да. – morty

+0

Знаете ли вы, где я могу найти справочное руководство для Contiki 2.7? Я получаю ошибки, когда пытаюсь сделать это с помощью doxygen. – DarthSpeedious