Команда для загрузки шестнадцатеричного файла в 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 и работает, но когда я загрузить его, используя приведенная выше команда не работает, как ожидалось ). **

, 👍0

Обсуждение

в среде IDE arduino включите *подробный вывод во время загрузки* ... на панели состояния в среде IDE отобразится командная строка, @jsotola

У вас есть какие-нибудь сообщения от avrdude? Может быть, ошибки?, @gbg

@jsotola Хорошо, круто понял, я обновил его, пожалуйста, проверьте, @Ashish Jog

что-то загружается ... возможно, шестнадцатеричный файл из неправильного каталога ... получите командную строку avrdude из среды разработки arduino в качестве отправной точки, @jsotola

@jaotola , ни один шестнадцатеричный файл не является правильным., @Ashish Jog

Вы говорите "_... объектному файлу, а затем шестнадцатеричному файлу с помощью avr-objcopy_". Содержит ли ваш шестнадцатеричный файл правильно построенный двоичный файл? Не могли бы вы показать нам исходный код и точные командные строки, с помощью которых вы создаете шестнадцатеричный файл, пожалуйста?, @the busybee


1 ответ


0

Я использую такую команду для одного из своих проектов, который я скопировал из 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