У меня: IAR for AVR v6.11, XMega128A1, JTAG ICE mkII, WinXP SP3
Загружаю прошивку в контроллер с помощью IAR С-SPY Debugger:
Нажмите для просмотра прикрепленного файла
__ low_level_init указывает куда надо.
Далее в процессе отладки останавливаюсь на одном брейкпойнте, перекомпилирую и перезапускаю C-SPY, прошивка перезаливается, и:
Нажмите для просмотра прикрепленного файла
Теперь вместо __low_level_init появилось 0x1DC06. Т.е. осуществляется вызов процедуры по какому-то левому адресу. Программа в Xmege после этого не работает.
После этого не помогают никакие перекомиляции, ни ReBuild All, ни перезапуск отладчика, ни вкл/выкл питания процессора.
Помогает только одно: Меняю тип выходного файла на Ubrof 8 и загружаю его с помощью AVR Studio. В студии все нормально:
Нажмите для просмотра прикрепленного файла
После этого снова меняю формат на Debug info for C-SPY и начинаю отлаживаться с помощью C-SPY. И __low_level_init снова указывает куда надо, до тех пор пока не остановишься на первом же брейкпойнте.
Подскажите, из-за чего может быть такая проблема?
Вообще непонятно, как AVR Studio может влиять на результат работы линкера.
PS: В AVR Studio такого глюка никогда не наблюдалось, но в ней отлаживаться не хочу, так в ней менее удобно работать с Watch-ами.