STM8. Урок 7. Вибір та налаштування моделі пам'яті

При розширенні задач контролера зростає потреба в використанні ОЗУ контролера, і коли обсяг необхідного ОЗУ стає більшим, ніж 255 байт при стандартних налаштуваннях компілятора cosmic, виникає помилка:

#error clnk Debug\info.lkf:1 segment .ubsct size overflow (99)

де в дужках вказується, на скільки використання ОЗУ необхідно зменшити. І компілятору все одно, що в контролері 2 кБ ОЗУ.

Рішення даної проблеми можна прочитати на сторінці 39 документа STM8 Cross Compiler User's Guide.pdf 

Для вирішення даної проблеми, а також якщо ваша програма на контролері стала займати обсяг більш ніж 64 кБ, необхідно змінити модель пам'яті.

В залежності від обсягу flash пам'яті (менше 64 кБ чи більше) та використовуваної пам'яті ОЗУ є 4 моделі. За замовчуванням використовується перша модель, тому підтримується тільки 255 байт ОЗУ і максимальний обсяг коду в 64 кБ у користувацькому проекті.

  1. Якщо використовується обсяг flash пам'яті менше 64 кБ і використовується менше 255 байт ОЗУ: Stack Short (mods0)
  2. Якщо використовується обсяг flash пам'яті менше 64 кБ і використовується все доступне ОЗУ: Stack Long (modsl0)
  3. Якщо використовується обсяг flash пам'яті більше 64 кБ і використовується менше 255 байт ОЗУ: Stack Short (mods)
  4. Якщо використовується обсяг flash пам'яті більше 64 кБ і використовується все доступне ОЗУ: Stack Long (modsl)

Налаштування проекту в IDE STVD. Для контролера STM8S105K6 обсягом 32 кБ і 2 кБ ОЗУ вибираємо модель пам'яті Stack Long (modsl0)

 

Після цього проект компілюється без помилок.

Вибір різних моделей пам'яті дозволяє оптимізувати код за розміром і швидкістю виконання за рахунок використання при компіляції більш коротких і швидких команд

Top