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