Команда для загрузки шестнадцатеричного файла в Arduino UNO без использования среды IDE или внешнего графического интерфейса?
Операционной системы я использую Windows 10, и я уже установил с avr-gcc и AVR-микроконтроллеров-чувак, с немного поиска в Интернете я нашел команды, чтобы преобразовать мою программу на C (написана для микроконтроллера ATmega328-п), к объектному файлу, а затем в шестнадцатеричный файл с помощью микроконтроллеров AVR-objcopy, но теперь я хочу знать команду, чтобы сжечь этот hex файл через командную строку. Я использовал
avrdude -v -V -patmega328p -carduino -PCOM* -b115200 -D -Uflash:w:hexfilename.hex
эта команда в ответ я получил следующее:-
C:\Users\AshishHJog\Desktop\Arduino\Bare Metal\Try>avrdude -v -V -patmega328p -carduino -PCOM6 -b115200 -D -Uflash:w:myhex.hex
avrdude: Version 5.11-Patch#7610, compiled on Aug 31 2011 at 08:02:19
Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
Copyright (c) 2007-2009 Joerg Wunsch
System wide configuration file is "C:\Users\AshishHJog\Desktop\Arduino\Bare Metal\avrdude-5.11-Patch7610-win32\avrdude.conf"
Using Port : COM6
Using Programmer : arduino
Overriding Baud Rate : 115200
AVR Part : ATMEGA328P
Chip Erase delay : 9000 us
PAGEL : PD7
BS2 : PC2
RESET disposition : dedicated
RETRY pulse : SCK
serial program mode : yes
parallel program mode : yes
Timeout : 200
StabDelay : 100
CmdexeDelay : 25
SyncLoops : 32
ByteDelay : 0
PollIndex : 3
PollValue : 0x53
Memory Detail :
Block Poll Page Polled
Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBack
----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
eeprom 65 20 4 0 no 1024 4 0 3600 3600 0xff 0xff
flash 65 6 128 0 yes 32768 128 256 4500 4500 0xff 0xff
lfuse 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00
hfuse 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00
efuse 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00
lock 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00
calibration 0 0 0 0 no 1 0 0 0 0 0x00 0x00
signature 0 0 0 0 no 3 0 0 0 0 0x00 0x00
Programmer Type : Arduino
Description : Arduino
Hardware Version: 3
Firmware Version: 4.4
Vtarget : 0.3 V
Varef : 0.3 V
Oscillator : 28.800 kHz
SCK period : 3.3 us
avrdude: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.01s
avrdude: Device signature = 0x1e950f
avrdude: safemode: lfuse reads as 0
avrdude: safemode: hfuse reads as 0
avrdude: safemode: efuse reads as 0
avrdude: reading input file "myhex.hex"
avrdude: input file myhex.hex auto detected as Intel Hex
avrdude: writing flash (124 bytes):
Writing | ################################################## | 100% 0.03s
avrdude: 124 bytes of flash written
avrdude: safemode: lfuse reads as 0
avrdude: safemode: hfuse reads as 0
avrdude: safemode: efuse reads as 0
avrdude: safemode: Fuses OK
avrdude done. Thank you.
**Кажется, шестнадцатеричный передается из ответа, но я не получаю ожидаемый результат, (ожидаемый результат:- я написал очень простую программу на C, чтобы мигать светодиод на цифровой вывод 3 и тот же код при загрузке через микрочип студии или Arduino IDE и работает, но когда я загрузить его, используя приведенная выше команда не работает, как ожидалось ). **
@Ashish Jog, 👍0
Обсуждение1 ответ
Я использую такую команду для одного из своих проектов, который я скопировал из IDE. Самое первое, что я бы сделал, - это использовал IDE для загрузки вашего шестнадцатеричного файла и сделал копию/копию команды, которую он использовал (именно так я сделал свою). Это должен быть самый быстрый путь к рабочей команде.
В противном случае, вот различия, которые я вижу между моей командой и вашей. Обратите внимание, что используйте macOS, и будут некоторые различия в формате для эквивалентной команды Windows:
//Заявки На Ардуино.приложение/содержание оборудования/Ява//инструменты/АВР/ОГРН/avrdude В -С/приложений/Ардуино.приложение/содержание оборудования/Ява//инструменты/АВР файл/etc/avrdude в.конф-в-patmega328p -carduino -Р в/dev/КР.usbserial-A703BVIL -b115200 -Д -Uflash:W: время$1:я
Различия, которые я вижу между нашими двумя командами, заключаются в следующем:
- Переключатель-C предоставляет путь к файлу конфигурации avrdude по умолчанию. Я не вижу его в вашей команде, и я не знаю, где находится файл конфигурации под Windows, но, возможно, это поможет вам узнать, что искать.
- Переключатель-V сообщает avrdude о необходимости проверки после загрузки. Отказ от этого, вероятно, не вызывает никаких проблем.
- -У моей переключатель имеет четыре аргумента; наши первые три те же: "flash" имена на память, которые будут использоваться, 'ж' указывает пишу это, третий аргумент-это путь hex файл, чтобы загрузить (команда является более общим и берет свое значение из первого аргумента командной файл, а мои жестко закодированные). Ничто из этого не должно быть проблемой. Четвертый аргумент-необязательный аргумент формата, "я" в моем случае, не указан в вашем. Это мое первое предположение о проблеме. Я нашел не больше документации, чем предоставляет панель использования ('avrdude --help'), поэтому я не знаю, для чего используется аргумент формата или какие варианты - моя команда была скопирована/вставлена прямо из IDE.
Первое, что я бы попробовал (потому что это самое простое! :-) будет добавлять ":i" к вашему переключателю-U. Если это не решит проблему, я бы поискал, где avrdude хранит свой файл конфигурации под Windows, и вставил-U<конфигурация/файл/путь><конфигурация/файл/путь>
в вашей команде.
Надеюсь, это поможет!
отличается ли команда в ответе от команды в вопросе? вы прочитали вопрос до конца?, @Juraj
- Ошибка компиляции кода для Arduino/Genuino Uno
- Поддерживают ли чипы ATMega 328/2560 JTAG-программатор и аппаратный отладчик?
- Запуск С для ардуино
- AVRdude неправильно считывает значения байтов предохранителя
- Не удается загрузить код на плату Arduino на Mac
- Понимание процесса компиляции/связывания/загрузки (поэтому мне не нужно использовать IDE)
- неопределенная ссылка на `PPMintIn::PPMintIn(int)'
- Как преобразовать строку в шестнадцатеричный массив
в среде IDE arduino включите *подробный вывод во время загрузки* ... на панели состояния в среде IDE отобразится командная строка, @jsotola
У вас есть какие-нибудь сообщения от avrdude? Может быть, ошибки?, @gbg
@jsotola Хорошо, круто понял, я обновил его, пожалуйста, проверьте, @Ashish Jog
что-то загружается ... возможно, шестнадцатеричный файл из неправильного каталога ... получите командную строку avrdude из среды разработки arduino в качестве отправной точки, @jsotola
@jaotola , ни один шестнадцатеричный файл не является правильным., @Ashish Jog
Вы говорите "_... объектному файлу, а затем шестнадцатеричному файлу с помощью avr-objcopy_". Содержит ли ваш шестнадцатеричный файл правильно построенный двоичный файл? Не могли бы вы показать нам исходный код и точные командные строки, с помощью которых вы создаете шестнадцатеричный файл, пожалуйста?, @the busybee