Доброго времени суток народ :)
Столкнулся с проблемами в AVR Studio 5.
1. При отладке в дебаге на железе, в следующие процедуре
void main()
{
<операции инициализации>
for(;;)
{
<основной бесконечный цикл>
}
}
по идее программа должна крутится в бесконечном цикле оператора for. А она крутится то в main то в for.
2. Есть серия операций присвоения констант структуре в ходе выполнения программы.
E2.IDCode[0]=0xAF;
E2.IDCode[1]=0x5B;
E2.IDCode[2]=0x8D;
E2.IDCode[3]=0x5A;
E2.IDCode[4]=0x3D;
E2.IDCode[5]=0x91;
E2.IDCode[6]=0x00;
ассемблерный листинг от компиляции к компиляции может выкидывать инициализацию переменным с IDCode[2] по IDCode[6]
3. В проекте используются прерывания аппаратных модулей авр. Существует ситуация, когда при приходе прерывания в структуру данных, объявленную глобально, записывается некая информация - буквально байт. При приходе следующего прерывания этот байт самопроизвольно очищается, причем в теле обработчика прерываний эта область памяти не используется и операций с ней не проводится. Дебаггер показывает, что память портится именно в тот момент, когда приходит следующее прерывание.
ПыСы
Если тупо попытаться исключить ошибки дебаггера, и залить скомпиленую прошивку в авр, то глюки присутствуют -* авр не фурычит. А если идти по Ф11 по коду в процессе отладки то перечисленные баги 1 и 2 можно раза с третьего(с третьей компиляции) избежать, а вот третий баг вообще не поддается.
ПыСыСы
Проект портирован из IAR. И без ошибок компилится. Только вот неправильно :)
Поможите ! Может кто сталкивался с этими вещами ?