Например TDA7294

Форум РадиоКот :: Просмотр темы - Дизассемблирование hex-файла в AVR Studio
Форум РадиоКот
https://radiokot.ru/forum/

Дизассемблирование hex-файла в AVR Studio
https://radiokot.ru/forum/viewtopic.php?f=57&t=81796
Страница 1 из 1

Автор:  feodorsumkin [ Сб дек 08, 2012 01:37:03 ]
Заголовок сообщения:  Дизассемблирование hex-файла в AVR Studio

Здравствуйте уважаемые форумчане!

Подскажите, можно ли в AVRStudio открыть hex-файл (созданный например в CodeVisionAVR для микроконтроллера ATmega8) и протрассировать его. А также попытаться дизассемблировать.

Я так понимаю - если реальный микроконтроллер hex-файл выполняет, то и симулятор должен выполнить.

Автор:  m.ix [ Сб дек 08, 2012 03:31:44 ]
Заголовок сообщения:  Re: Дизассемблирование hex-файла в AVR Studio

сырцы исходники должны быть
а кекс, уже готовый

попробуй пирожное наоборот преобразовать на компоненты.

Автор:  uk8amk [ Сб дек 08, 2012 09:16:15 ]
Заголовок сообщения:  Re: Дизассемблирование hex-файла в AVR Studio

feodorsumkin писал(а):
Подскажите, можно ли в AVRStudio открыть hex-файл

Можно. В качестве платформы в настройках проекта выберете AVR simulator.

Автор:  zero648 [ Сб дек 08, 2012 13:43:38 ]
Заголовок сообщения:  Re: Дизассемблирование hex-файла в AVR Studio

feodorsumkin писал(а):
Подскажите, можно ли в AVRStudio открыть hex-файл (созданный например в CodeVisionAVR для микроконтроллера ATmega8) и протрассировать его. А также попытаться дизассемблировать.

Не важно в чем он создан, дизассемблировать можно любой НЕХ, но только в ассемблер.

Автор:  feodorsumkin [ Вс дек 09, 2012 03:51:17 ]
Заголовок сообщения:  Re: Дизассемблирование hex-файла в AVR Studio

Ну да, естественно hex в ассемблер, а мне большего и не надо...

Ребята, а можно поподробней, как импортировать hex-файл в AvrStudio?

Типа создаю новый проект, указываю Atmel AVR Assembler, указываю AVR Simulator, указываю тип кристалла ATmega8, открываю файл .hex ... и у меня какая-то runtime ошибка вылезает.

У меня avrstudio 4.13. Что делать?

Автор:  uk8amk [ Вс дек 09, 2012 08:46:42 ]
Заголовок сообщения:  Re: Дизассемблирование hex-файла в AVR Studio

Попросить у Атмеля что-то посвежее. У меня стоит студия 4.19, работает без вопросов.

File->Open File-> ваш_файл hex -> имя_проекта aps -> выбор платформы: симулятор, мега8 ->Finish.

Да, еще русские имена в пути лучше избегать.

Вложения:
disasm.PNG [66.57 KiB]
Скачиваний: 4072

Автор:  borys [ Вс дек 09, 2012 13:50:31 ]
Заголовок сообщения:  Re: Дизассемблирование hex-файла в AVR Studio

Еще можно воспользоваться для этого программой AVR Simulator.

Автор:  feodorsumkin [ Вс дек 09, 2012 21:44:05 ]
Заголовок сообщения:  Re: Дизассемблирование hex-файла в AVR Studio

Да, действительно, поставил новую Avr Studio, переложил hex-файл в папку без русских символов и все нормально открылось и автоматически дизассемблировалось. Спасибо, уважаемые радиокоты, очень помогли!!!

Автор:  grayrat [ Вт июл 29, 2025 20:21:32 ]
Заголовок сообщения:  Re: Дизассемблирование hex-файла в AVR Studio

Понимаю, что я опоздал на 13 лет, но может кому-то ещё пригодится.
Значит так. Открыть HEX файл как было описано выше, получилось только в версии 4.19. Пятая и выше уже не подходит. Да. Дизассемблировало. Работает симулятор. Но, скажу я вам, по сравнению с тем, как диззассемблирует IDA Pro, это лютый мрак. А исследовать код в таком виде, когда нет комментариев, подсветки синтаксиса, вместо мнемоник хекскоды, это чистое шайтанство. Поэтому предлагаю немного другой путь. Нужно сначала дизассемблировать прошивку в ИДЕ, потом скопипастить её в текстовый файл. Теперь файл нужно обработать утилиткой, чтобы закомментировать позиции вида seg0000:0000 в начале строки. Затем создать новый проект с ассемблером в Atmel Studio (тут уже можно и последнюю версию. У меня 7). В этот пустой исходник скопировать содержимое нашего файла. Скомпилить. И можно исследовать симулятором как белый человек. Ну, почти. Ассемблер ведь...
Прилагаю код утилиты.
Спойлер
Код:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

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 *f = fopen( argv[1], "rt" );
  if( !f )
    return printf( "Can't open file %s\n", argv[1] );

  const int N=127;
  char buf[ N+1 ];
  strcpy( buf, argv[1] );
  strcat( buf, ".asm" );
 
  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 и т.д. там уже определены. Поэтому эти строчки нужно спрятать.

Автор:  alexvas2004 [ Сб авг 30, 2025 14:22:08 ]
Заголовок сообщения:  Re: Дизассемблирование hex-файла в AVR Studio

Понимаю, что я опоздал на 13 лет, но может кому-то ещё пригодится.
Значит так. Открыть HEX файл как было описано выше, получилось только в версии 4.19. Пятая и выше уже не подходит. Да. Дизассемблировало. Работает симулятор. Но, скажу я вам, по сравнению с тем, как диззассемблирует IDA Pro, это лютый мрак. А исследовать код в таком виде, когда нет комментариев, подсветки синтаксиса, вместо мнемоник хекскоды, это чистое шайтанство. Поэтому предлагаю немного другой путь. Нужно сначала дизассемблировать прошивку в ИДЕ, потом скопипастить её в текстовый файл. Теперь файл нужно обработать утилиткой, чтобы закомментировать позиции вида seg0000:0000 в начале строки. Затем создать новый проект с ассемблером в Atmel Studio (тут уже можно и последнюю версию. У меня 7). В этот пустой исходник скопировать содержимое нашего файла. Скомпилить. И можно исследовать симулятором как белый человек. Ну, почти. Ассемблер ведь...
Прилагаю код утилиты.
Спойлер
Код:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

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 *f = fopen( argv[1], "rt" );
  if( !f )
    return printf( "Can't open file %s\n", argv[1] );

  const int N=127;
  char buf[ N+1 ];
  strcpy( buf, argv[1] );
  strcat( buf, ".asm" );
 
  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 и т.д. там уже определены. Поэтому эти строчки нужно спрятать.


Видео урок бы.

Автор:  OKF [ Сб авг 30, 2025 15:18:00 ]
Заголовок сообщения:  Re: Дизассемблирование hex-файла в AVR Studio

Понимаю, что я опоздал на 13 лет...

А что редактором этого не сделать? А ещё есть sed, если хочется автоматизации.

Автор:  grayrat [ Вт ноя 11, 2025 22:14:49 ]
Заголовок сообщения:  Re: Дизассемблирование hex-файла в AVR Studio

А ещё есть sed, если хочется автоматизации.

Может и можно. Но я не из тех, кто сверлит текстолит когтями.

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/