Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Локальные переменные и библиотечные функции
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Cредства разработки для МК > IAR
desh
Здравствуйте.

Есть проект в IAR AVR 5.50. Код на С. Контроллер ATmega644PA. В проекте активно используются библиотечные функции из библиотеки DLIB (опция Normal DLIB) в частности функции работы со временем. Проблема в том, что после вызова библиотечной функции localtime меняется значение локальной переменной вызывающей функции и размещенной в регистрах R24 и R25. Переменная не передается в функцию и ей не присваивается возвращаемое значение. При отладке было выяснено следующее: при вызове библиотечной функции происходит сохранение используемых регистров в стек, при этом регистр R25 оказывается на вершине стека. Во время выполнения функции происходит изменение вершины стека, а при выходе из функции значение регистра восстанавливается измененным значением.
Таких мест в коде несколько. Подозреваю, что подобная проблема возникает и с некоторыми другими функциями, поэтому в данный момент видится оптимальным вариант с перекомпиляцией библиотек. Останавливает отсутствие исходных текстов библиотеки, так как использую evaluation версию IAR.
Хотелось бы услышать Ваши мысли и советы по устранению данной проблемы. Может быть кто то может поделиться исходниками библиотек.

С уважением.
Сергей Борщ
Цитата(desh @ Sep 29 2010, 10:54) *
Во время выполнения функции происходит изменение вершины стека, а при выходе из функции значение регистра восстанавливается измененным значением.
А вершина стека случайно не налезает в этот момент на глобальные переменные? Стеков хватает? Их там два, попробуйте увеличить оба.
desh
Цитата(Сергей Борщ @ Sep 29 2010, 13:52) *
А вершина стека случайно не налезает в этот момент на глобальные переменные? Стеков хватает? Их там два, попробуйте увеличить оба.


Спасибо за совет. Помогло. Дело оказалось в стеке возвратов. В проекте используется freertos и переполнение стека отлавливается ее средствами, но, похоже, что не во всех случаях.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.