Потребление оперативной памяти
при использовании таймеров
Оперативная память, задействованная
для программных таймеров, складывается
из 3 составляющих:
1. Память, используемая задачей обслужива-
ния таймеров. Ее объем не зависит от ко-
личества таймеров в программе.
2. Память, используемая очередью команд
программных таймеров. Ее объем также
не зависит от количества таймеров.
3. Память, выделяемая для каждого вновь
создаваемого таймера. В ней размещается
структура управления таймером xTIMER.
Объем этой составляющей пропорциона-
лен числу созданных в программе тайме-
ров.
Рассчитаем объем памяти, который потре-
буется для добавления в программу 10 про-
граммных таймеров. В качестве платформы
выбран порт FreeRTOS для реального режи-
ма x86 процессора, который используется
в учебных программах в этом цикле статей.
Настройки ядра FreeRTOS идентичны на-
стройкам демонстрационного проекта, кото-
рый входит в дистрибутив FreeRTOS.
Память, используемая задачей обслужи-
вания таймеров, складывается из памяти,
занимаемой блоком управления задачей
tskTCB, — 70 байт и памяти стека, примем
его равным минимальному рекомендованно-
му configMINIMAL_STACK_SIZE = 256 слов
(16-битных), что равно 512 байт. В сумме по-
лучаем 70 + 512 = 582 байт.
Память, используемая очередью ко-
манд таймеров, складывается из памяти
для размещения блока управления очере-
дью xQUEUE — 58 байт и памяти, в которой
разместятся элементы очереди. Элемент оче-
реди команд представляет собой структуру
типа xTIMER_MESSAGE, размер которой
равен 8 байт. Пусть используется очередь
длиной 10 команд, тогда для размещения их
в памяти потребуется 810 = 80 байт. В сумме
получаем 58+80 = 138 байт.
Каждый таймер в программе обслужива-
ется с помощью структуры управления тай-
мером xTIMER, ее размер составляет 34 байт.
Так как таймеров в программе 10, то памяти
потребуется 3410 = 340 байт.
Итого при условиях, оговоренных выше,
для добавления в программу 10 програм-
мных таймеров потребуется 582+138+340 =
= 1060 байт оперативной памяти.
Достарыңызбен бөлісу: |