Подскажите, можно ли в AVRStudio открыть hex-файл (созданный например в CodeVisionAVR для микроконтроллера ATmega8) и протрассировать его. А также попытаться дизассемблировать.
Я так понимаю - если реальный микроконтроллер hex-файл выполняет, то и симулятор должен выполнить.
Подскажите, можно ли в AVRStudio открыть hex-файл (созданный например в CodeVisionAVR для микроконтроллера ATmega8) и протрассировать его. А также попытаться дизассемблировать.
Не важно в чем он создан, дизассемблировать можно любой НЕХ, но только в ассемблер.
Ну да, естественно hex в ассемблер, а мне большего и не надо...
Ребята, а можно поподробней, как импортировать hex-файл в AvrStudio?
Типа создаю новый проект, указываю Atmel AVR Assembler, указываю AVR Simulator, указываю тип кристалла ATmega8, открываю файл .hex ... и у меня какая-то runtime ошибка вылезает.
Да, действительно, поставил новую Avr Studio, переложил hex-файл в папку без русских символов и все нормально открылось и автоматически дизассемблировалось. Спасибо, уважаемые радиокоты, очень помогли!!!
Понимаю, что я опоздал на 13 лет, но может кому-то ещё пригодится. Значит так. Открыть HEX файл как было описано выше, получилось только в версии 4.19. Пятая и выше уже не подходит. Да. Дизассемблировало. Работает симулятор. Но, скажу я вам, по сравнению с тем, как диззассемблирует IDA Pro, это лютый мрак. А исследовать код в таком виде, когда нет комментариев, подсветки синтаксиса, вместо мнемоник хекскоды, это чистое шайтанство. Поэтому предлагаю немного другой путь. Нужно сначала дизассемблировать прошивку в ИДЕ, потом скопипастить её в текстовый файл. Теперь файл нужно обработать утилиткой, чтобы закомментировать позиции вида seg0000:0000 в начале строки. Затем создать новый проект с ассемблером в Atmel Studio (тут уже можно и последнюю версию. У меня 7). В этот пустой исходник скопировать содержимое нашего файла. Скомпилить. И можно исследовать симулятором как белый человек. Ну, почти. Ассемблер ведь... Прилагаю код утилиты. Спойлер
int main( int argc, char *argv[] ) { if( argc!=2 ) return printf( "usage: mkcom file.ext\n" " file[.ext] - is a copy-paste from IDA Pro disassemble\n" );
FILE *o = fopen( buf, "wt" ); if( !o ) { fclose( f ); return printf( "Can't open file %s for writing\n", buf ); }
int n=0; strcpy( buf, "/*" ); while( fgets( buf+4, N, f ) ) { strncpy( buf+2, buf+4, 11 ); memcpy( (void*)(buf+13), (const void *)"*/", 2 ); fputs( buf, o ); n++; }
fclose( f ); fclose( o ); printf( "copied. %d lines in files\n", n ); }
Да, ещё с чем столкнулся. IDA в начале определяла мнемоники вида .equ XL, 26 и т.д. (МК Atmega8). Компилятору это жутко не понравилось, потому что XL и т.д. там уже определены. Поэтому эти строчки нужно спрятать.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 17
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения