При расширении задач контроллера растет потребность в использовании ОЗУ контроллера, и когда объем необходимого ОЗУ становиться больше, чем 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 кБ в пользовательском проекте.
- Если используется объем flash памяти меньше 64 кБ и используется меньше 255 байт ОЗУ: Stack Short (mods0)
- Если используется объем flash памяти меньше 64 кБ и используется все доступное ОЗУ: Stack Long (modsl0)
- Если используется объем flash памяти больше 64 кБ и используется меньше 255 байт ОЗУ: Stack Short (mods)
- Если используется объем flash памяти больше 64 кБ и используется все доступное ОЗУ: Stack Long (modsl)
Настройка проекта в IDE STVD. Для контроллера STM8S105K6 объемом 32 кБ и 2 кБ ОЗУ выбираем модель памяти Stack Long (modsl0)
После этого проект компилируется без ошибок.
Выбор различных моделей памяти позволяет оптимизировать код по-размеру и скорости выполнения за счет использования при компиляции более коротких и быстрых команд
Комментарии (0) | Я собрал (0) | Подписаться
Для добавления Вашей сборки необходима регистрация