Непонятно как распределяется память. Вот например, сейчас у меня ПЛК100.К-М. Согласно руководству, у него:
- 8 МБ оперативки
- 4 МБ энергонезависимой для хранения ядра Кодесис, программ и архивов
- 4 кБ Retain (настраивается до 16 кБ)
А вот скрин распределения памяти, в настройках целевой платформы, по умолчанию (таргет стоит 2.10 или 2.11, не помню, никогда не менял):
1.png
В руководстве к Кодесис, традиционно, всё предельно лаконично и потому нихрена не понятно. Для наглядности, hex-значения я перевёл в dec (дописано красным). Сразу возникают вопросы:
1) Почему оперативной памяти для данных доступно всего 128 кБ (те самые 131072 байт, что обозначены как "Глобальные")? Можно подумать, что это только память под глобальные переменные, но нет, все локальные переменные также её занимают. Понятно, что часть оперативной памяти отводится под код (ровно 1 МБ, если верить этим настройкам), и возможно что-то ещё, но всё равно должны быть мегабайты! Причём значение невозможно редактировать...
2) Что такое просто "Память", которой ровно 1000 байт?
3) Что такое "Общий размер памяти" (которой 32768 байт)?
Особенно волнует первый вопрос, это значение памяти указывается в сообщении после компиляции, и, если насоздавать в проекте массивов и переменных, переполняющих этот объём памяти, проект не компилируется.