Как загрузить шестнадцатеричный файл в arduino uno?
У меня есть Rostock Max 3d с Arduino Uno в качестве контроллера. У OEM-производителя есть версия прошивки, которую я хотел бы загрузить, но она находится в шестнадцатеричном формате.
Я просмотрел всю Arduino IDE, но не нашел способа загрузить шестнадцатеричный файл в Arduino. Я попытался использовать AVRDUDE, но Arduino взаимодействует с моим ПК только тогда, когда я устанавливаю "Программатор" на AVRISP. Я загрузил другие коды для blink и hello_world, но не смог скомпилировать источник прошивки. Я надеялся, что смогу просто использовать шестнадцатеричный файл, включенный в пакет прошивки.
Моя ОС - Linux.
@j0h, 👍3
Обсуждение4 ответа
Я рекомендую посмотреть файлы IDE arduino, расположенные по адресу "(путь установки)/hardware/arduino/avr/" (в любом случае, в Windows я должен предположить то же самое в Linux).
Я не уверен, что следующие файлы имеют расширение .txt, но если нет, используйте только имя файла.
Открой и загляни внутрь ". boards.txt-и найдите соответствующие записи, начинающиеся с "uno".
Следующее открытие "platform.txt" ищу записи "tools.avrdude" (часть avrdude взята из boards.txt Запись "uno.upload.tool") и скопируйте в новый текстовый редактор значение "tools.avrdude.upload.pattern", которое вы можете заполнить позже.
С помощью скопированной команды замените следующее:
от platform.txt
- "{cmd.path}" = "tools.avrdude.cmd.path"
- "{config.path}" = "tools.avrdude.config.path"
- "{upload.verbose}" = "tools.avrdude.upload.params.verbose"
- "{upload.verify} = "tools.avrdude.upload.verify"
теперь из boards.txt
- "{build.mcu}" = "uno.build.mcu"
- "{upload.protocol} = "uno.upload.protocol
- "{{serial.port}" = Ваш последовательный порт (согласно исследованию что-то вроде /dev/ttyS0)
- "{upload.speed}" = "uno.upload.speed"
- "{build.path}" и "{build.project_name} = путь к файлу, который вы пытаетесь загрузить
Итак, с учетом вышеизложенного, чтобы загрузить программу в Arduino uno, я бы использовал что-то вроде следующего в Windows:
предполагая, что путь установки был "C:\Arduino\"
"C:\Arduino\hardware\tools\avr\bin\avrdude.exe" "-CC:\Arduino\hardware\tools\avr\etc\avrdude.conf" -v -patmega328p -carduino "-PCOM1" -b115200 -D "-Uflash:w:C:\MyArduinoProject\build.hex:i"
для linux это может быть (я действительно не уверен):
предполагая, что путь установки был "/opt/Arduino/".
"/opt/Arduino/hardware/tools/avr/bin/avrdude" "-C/opt/Arduino/hardware/tools/avr/etc/avrdude.conf" -v -patmega328p -carduino "-P/dev/ttyS0" -b115200 -D "-Uflash:w:/usr/MyArduinoProject/build.hex:i"
Вышесказанное должно сработать для вас, я ранее написал свою собственную программу для загрузки шестнадцатеричного файла в Arduino, используя вышеуказанные команды и avrdude.
Я использую автономный программатор, который загружает шестнадцатеричный файл с SD-карты через интерфейс ICSP.
Я думаю, что вы можете использовать это программное обеспечение http://www.mediafire.com/file/tx2l85gsdkpf5d4/HEXtoArduino_V1.0.0.zip/file
Я нашел окончательный ответ на этот вопрос.
- Запуск Arduino IDE
- К файлу...Предпочтения...
- Включите отображение подробного вывода во время загрузки: [X] (изображение 1 ниже)
- Загрузите скетч на Arduino Uno
- Я использовал образец скетча мигания и увидел следующее (изображение 2 ниже):
AVRDude: используется для загрузки
Вы хотите, чтобы эта первая строка была показана белым цветом-когда вы развернете ее, вы увидите, что это вся строка кода, которая используется для загрузки шестнадцатеричного файла вашей программы в Uno.
Вся команда на компьютере выглядит следующим образом:
C:\Users\<username>\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino17/bin/avrdude -CC:\Users\<username>\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino17/etc/avrdude.conf -v -patmega328p -carduino -PCOM3 -b115200 -D -Uflash:w:C:\Users\<username>\dev\arduino\STK2UPDI\build\blink.ino.hex:i
Я собираюсь разбить это на несколько строк:
Во-первых, это полный путь к avrdude exe.
Затем он передает аргумент-C с полным путем к файлу avrdude.conf
c:\longpath\avrdude -С C:\avrdude.conf
Затем куча параметров для правильной настройки avrdude:
-v -patmega328p -carduino -PCOM3 -b115200 -D -Uflash:w:
И, наконец, полный путь к шестнадцатеричному файлу, который вы хотите загрузить
c:\longpath\blink.ino.hex:i
Все, что вам нужно сделать
Все, что вам нужно сделать, это взять эту чрезвычайно длинную строку и заменить полный путь к шестнадцатеричному файлу на целевой шестнадцатеричный файл, а затем запустить всю команду, и вы увидите что-то вроде того, что показано на рисунке 3 ниже.
Изображение 1
Изображение 2
Изображение 3
отлично, я это проверю. какую версию вы используете?, @j0h
использование Arduino IDE 1.8.15 , @raddevus
- Как создать проект ардуино с несколькими исходными файлами?
- Можем ли мы записать загрузчик Arduino в любой чип микроконтроллера?
- Программирование ATMega328P без платы Arduino всегда возвращает ошибку: avrdude: stk500_recv(): programmer is not responding
- Программирование Uno Wifi Rev2 через Uno R3 Arduino Sp
- "avrdude: stk500_getsync(): not in sync: resp=0x00", или некто по имени Avr не позволяет мне загрузить мою программу
- Как объявить массив переменного размера (глобально)
- Программирование Arduino с использованием Python, а не C/C ++
- avrdude ser_open() can't set com-state
Вы можете включить "Подробный вывод" в разделе Файл -> Настройки для загрузки кода. Arduino IDE также использует avrdude для загрузки своих скетчей - вы можете "украсть" команду, которую он использует, из этого подробного вывода. После этого просто отредактируйте команду, используемую IDE для указания на ваш шестнадцатеричный файл ., @towe
Я использую Xloader. http://www.hobbytronics.co.uk/arduino-xloader, @Martynas