Доброго дня.
Возникла следующая проблема.
При использовании параметров компиляции -ffunction-sections -fdata-sections и компоновки -Wl,--gc-sections в программе появляется ошибка. При сборке без данных параметров все работает.
Описание проблемы:
При старте программы происходит настройка периферии. PIT настраивается на период в 1 сек. По прошествии одной секунды происходит прерывание... Дальнейшее сокрыто мраком до перезагрузки проца WatchDog'om (через 16 сек).
Дополнительно:
- происходит именно прерывание от PIT, проверял путем выключением прерывания и увеличения периода (соответственно проц зависал на несколько секунд позже).
- в обработку прерывания PIT вставил команду сброса сторожевого таймера, сторожевой таймер не сбрасывается. Следовательно после прерывания проц переходит непонятно куда, либо не возвращается из прерывания.
- листинг функций конфигурации таймера и обработки прерываний для обоих режимов компиляции не отличается (за исключением начальных адресов функций). Листинг смотрел в объектном файле после линковки, то есть оптимизатор не выкидывает функции, как не нужные.
- единственное отличие, которое нашел, это то что функции располагаются в разных секциях. Что является само собой разумеющимся при использовании указанных параметров оптимизации.
- компилятор GNU GCC 4.2.2, binutils 2.18.
Буду рад услышать Ваши рекомендации по решению данной проблемы.
С уважением.