OSA : Статистика используемой ядром памяти

Данная статистика приведена для оценки используемых под OSA ресурсов, чтобы пользователь мог наиболее оптимально выбрать контроллер под свою задачу.

Компилятор min, ROM/RAM normal, ROM/RAM full, ROM/RAM Байт на задачу*, RAM

PIC10 (PIC12)
Hi-tech PICC 153 / 11 250 / 14 363 / 14 2

PIC16 (PIC12)
HT-PICC STD 152 / 8 258 / 11 396 / 13 3
microC PRO 180 / 14 307 / 17 474 / 17 3
CCS PICC 254 / .. 399 / .. 573 / .. 3

PIC18
HT-PICC18 STD 336 / 7 548 / 10 982 / 16 3
MPLAB C18 598 / 7 862 / 10 1214 / 16 4
microC PRO 426 / 11 746 / 16 1136 / 17 3
CCS PICC 436 / .. 696 / .. 1046 / .. 3

PIC24 (dsPIC)
MPLAB C30 846 / 10 1065 / 16 1305 / 16 20

AVR
WinAVR 602 / 8 1030 / 13 1348 / 15 10
IAR 550 / 8 958 / 13 1108 / 15 5

STM8
Cosmic 462 / 8 729 / 13 974 / 15 5
IAR 664 / 8 1053 / 13 1388 / 15 13
Raisonance 434 / 8 709 / 13 918 / 15 5

* см. примечания ниже

Расшифровка режимов тестирования:

  1. min (минимальный нобор сервисов)
    • приоритеты отключены
    • доступны бинарные семафоры, сообщения, флаги
  2. normal (наиболее часто используемый набор сервисов)
    • приоритеты включены
    • таймер задач
    • доступны бинарные семафоры, сообщения, флаги
    • доступны ожидания событий с выходом по таймауту
  3. full (полный набор сервисов, за исключением пользовательских таймеров)
    • приоритеты включены
    • таймеры задач
    • доступны бинарные и счетные семафоры, сообщения, флаги, очереди сообщений
    • доступны ожидания событий с выходом по таймауту
    • доступны критические секции

(Во всех трех режимах доступны сервисы переключения контекста, ожидания событий, управения задачами, установки/запрета прерываний)

Примечания:

  1. параметр ROM:
    • для PIC10, PIC12 и PIC16 память ROM отображается в словах, для всех остальных - в байтах;
    • для MCC18 параметр ROM включает в себя сектор инициализации;
    • для MCC30 параметр ROM включает в себя сектор инициализации;
  2. все программы собирались с максимально доступной оптимизацией;
  3. дополнительно в RAM выделяется память под OS_TASKS дескрипторов задач
  4. в таблице приведен базовый размер дескриптора задач. Он может увеличиться:
    • при наличии таймера задач (OS_ENABLE_TTIMERS) - на количество байт, занимаемых таймером (по умолчанию 2);
    • для контроллеров с ROM >64K - на 2 байта (для хранения старший байтов адреса)
    • при использовании режима OS_PRIORITY_EXTENDED - на 2 байта
  5. Варьируя параметры системной конфигурации (osacfg.h), можно выбрать наиболее оптимальный режим. Например, изменив размерность таймера, можно сократить используемую RAM и ROM. Можно в полном режиме отключить приоритеты, получив выигрыш в ROM и скорости. И т.д.