сравнить два шестнадцатеричных файла
Мне нужно проверить, совпадает ли код, записанный на какой-нибудь плате Arduino, с моим. Я знаю, как получить hex-файл из Arduino. Мой вопрос: что влияет на hex-код? Тип платы? Тип микропроцессора? Версия avrdude? Что-нибудь еще?
@Ditza, 👍0
1 ответ
Лучший ответ:
Строки в типичном шестнадцатеричном файле включают VLI (индикатор переменной длины). Выходные шестнадцатеричные файлы из IDE могут иметь другую длину, чем те, которые создает avrdude. Вот простой пример:
Файл 1:
03ABC
03DEF
Файл 2:
06ABCDEF
Эти файлы будут по-разному сравниваться друг с другом, но передавать одну и ту же информацию, по-разному разделенную между строками.
Чтобы провести подлинное сравнение, вам придется это учитывать.
Тип платы?
Разные платы, но с одинаковым процессором, могут иметь идентичные файлы.
Тип микропроцессора?
Разные процессоры почти наверняка будут иметь разные шестнадцатеричные файлы.
версия avrdude?
Вероятно, нет, однако см. мои комментарии выше о VLI.
что-нибудь еще?
Как я уже сказал, компилятор может генерировать строки с (скажем) 16 байтами на строку, но avrdude может считывать строки с 32 байтами на строку. Таким образом, они будут выглядеть по-разному, но передавать те же шестнадцатеричные коды, если вы это разрешите.
- Невозможно загрузить скетчс помощью Platformio (но Arduino IDE работает)
- "avrdude: stk500_getsync(): not in sync: resp=0x00", или некто по имени Avr не позволяет мне загрузить мою программу
- Есть ли какой-нибудь способ загрузить скетч с ардуино?
- avrdude ser_open() can't set com-state
- Загрузка Arduino Nano дает ошибку: avrdude: stk500_recv(): programmer is not responding
- При использовании Arduino Uno в качестве ISP: "Yikes! Invalid device signature" - плохое соединение, неверную конфигурацию или неверную версию avrdude?
- Асинхронные вызовы функций в скетче ардуино
- Не удается снова загрузиться после смены платы