Перепрошивка arduino по сети в wifi радио.
Feb. 4th, 2014 12:40 amArduino можно перепрограммировать не вынимая из роутера, этого можно добиться двумя способами: используя avrdude + wget/winscp или ser2net + tibbo. Первый способ сложнее (надо искать hex файл), но зато второй глючный (arduino с tibbo сильно тормозит иногда).
Для обоих способов надо знать с какой скоростью прошивается и каким "программатором" прошивает avrdude эту arduino.
Сведения эти хранятся в файле c:\program files\arduino\hardware\arduino\boards.txt.
Скорость в переменной "<внутреннее имя платы>.upload.speed", а имя программатора в переменной "<внутреннее имя платы>.upload.protocol". Соответствие внутреннего имени платы внешнему задается строкой "<внутреннее имя платы>.name=отображаемое в меню "сервис->плата" имя платы".
Фрагмент этого файла.
diecimila.name=Arduino Diecimila or Duemilanove w/ ATmega168
diecimila.upload.protocol=arduino
diecimila.upload.maximum_size=14336
diecimila.upload.speed=19200
diecimila.bootloader.low_fuses=0xff
diecimila.bootloader.high_fuses=0xdd
.....
.....##############################################################
nano328.name=Arduino Nano w/ ATmega328
nano328.upload.protocol=arduino
nano328.upload.maximum_size=30720
nano328.upload.speed=57600
nano328.bootloader.low_fuses=0xFF
nano328.bootloader.high_fuses=0xDA
nano328.bootloader.extended_fuses=0x05
nano328.bootloader.path=atmega
nano328.bootloader.file=ATmegaBOOT_168_atmega328.hex
nano328.bootloader.unlock_bits=0x3F
nano328.bootloader.lock_bits=0x0F
nano328.build.mcu=atmega328p
nano328.build.f_cpu=16000000L
nano328.build.core=arduino
nano328.build.variant=eightanaloginputs
Программирование используя avrdude.
Предварительно надо установить avrdude на роутер: команда "opkg update; opkg install avrdude".
После этого каждый раз выполнять команды.
1. Закрыть все окна arduino.
2. Запустить проводник.
3. Набрать в проводнике "%temp%" и нажать <ввод>.

4. Удалить все каталоги "build<длинное десятеричное число>.tmp".

5. Запустить arduino с нужным проектом.
6. Скомпилировать проект командой <Ctrl>+R.
7. Обновить окно проводника из пунктов 2 и 3.
8. В окне проводника появится новая папка "build<длинное десятеричное число>.tmp". Эта папка будет использоваться для компиляции проекта все время, пока не закроете окно arduino. Перейти в нее.
9. Найти файл с именем совпадающем с названием проекта и двойным расширением "cpp.hex"

10. При помощи winscp перенести его на роутер.
11. На роуторе выполнить команду "avrdude -p <тип микросхемы> -P <последовательный порт, если используется встроенный в роутер, то /dev/ttyATH0, а если встроенный в arduino то/dev/ttyUSB0> -c <тип программатора из переменной "<внутреннее имя платы>.upload.protocol", чаще всего это будет arduino> -b <скорость связи из переменной "<внутреннее имя платы>.upload.speed"> -C /etc/avrdude.conf -U flash:w:<путь к hex файлу>".
В моем случае платы arduino nano эта команда будет такая: "avrdude -p m328p -P /dev/ttyUSB0 -c arduino -b 57600 -C /etc/avrdude.conf -U flash:w:./output.cpp.hex".
Таблица параметров arduino полученная из boards.
| Название платы | параметр -p | параметр -с | -b |
| Uno | m328p | arduino | 115200 |
| Duemilanove w/ ATmega328 | m328p | arduino | 57600 |
| Diecimila or Duemilanove w/ ATmega168 | m168 | arduino | 19200 |
| Nano w/ ATmega328 | m328p | arduino | 57600 |
| Nano w/ ATmega168 | m168 | arduino | 19200 |
| Mega 2560 or Mega ADK | m2560 | wiring | 115200 |
| Mega (ATmega1280) | m1280 | arduino | 57600 |
| Leonardo | m32u4 | avr109 | 57600 |
| Esplora | m32u4 | avr109 | 57600 |
| Micro | m32u4 | avr109 | 57600 |
| Mini w/ ATmega328 | m328p | arduino | 115200 |
| Mini w/ ATmega168 | m168 | arduino | 19200 |
| Ethernet | m328p | arduino | 115200 |
| Fio | m328p | arduino | 57600 |
| BT w/ ATmega328 | m328p | arduino | 19200 |
| BT w/ ATmega168 | m168 | arduino | 19200 |
| LilyPad Arduino USB | m32u4 | avr109 | 57600 |
| LilyPad Arduino w/ ATmega328 | m328p | arduino | 57600 |
| LilyPad Arduino w/ ATmega168 | m168 | arduino | 19200 |
| Pro or Pro Mini (5V, 16 MHz) w/ ATmega328 | m328p | arduino | 57600 |
| Pro or Pro Mini (5V, 16 MHz) w/ ATmega168 | m168 | arduino | 19200 |
| Pro or Pro Mini (3.3V, 8 MHz) w/ ATmega328 | m328p | arduino | 57600 |
| Pro or Pro Mini (3.3V, 8 MHz) w/ ATmega168 | m168 | arduino | 19200 |
| NG or older w/ ATmega168 | m168 | arduino | 19200 |
| NG or older w/ ATmega8 | m8 | arduino | 19200 |
| Robot Control | m32u4 | avr109 | 57600 |
| Robot Motor | m32u4 | avr109 | 57600 |
12. Когда на плате arduino загорится лампочка "TX" - нажать кнопку сброса.Вывод команды avrdude.
root@'mr3020':~/test# avrdude -p m328p -P /dev/ttyUSB0 -c arduino -b 57600 -C /e
tc/avrdude.conf -U flash:w:./output.cpp.hex
avrdude: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.00s
avrdude: Device signature = 0x1e950f
avrdude: NOTE: FLASH memory has been specified, an erase cycle will be performed
To disable this feature, specify the -D option.
avrdude: erasing chip
avrdude: reading input file "./output.cpp.hex"
avrdude: input file ./output.cpp.hex auto detected as Intel Hex
avrdude: writing flash (1920 bytes):
Writing | ################################################## | 100% 0.54s
avrdude: 1920 bytes of flash written
avrdude: verifying flash memory against ./output.cpp.hex:
avrdude: load data flash data from input file ./output.cpp.hex:
avrdude: input file ./output.cpp.hex auto detected as Intel Hex
avrdude: input file ./output.cpp.hex contains 1920 bytes
avrdude: reading on-chip flash data:
Reading | ################################################## | 100% 0.39s
avrdude: verifying ...
avrdude: 1920 bytes of flash verified
avrdude: safemode: Fuses OK
avrdude done. Thank you.
root@'mr3020':~/test#Программирование используя ser2net.
1. Установка на маршрутизатор ser2net: выполнить команду opkg update; opkg install ser2net. Этот пакет служит для организации удаленного доступа к последовательному порту.
2. В файле /etc/ser2net.conf маршрутизатора закомментировать все строки начинающиеся на 1001. 2001 и 3001 (добавить символ "#" в начало каждой строки) и добавить строку "2001:raw:0:<имя последовательного порта>:<скорость записи из файла boards> NONE 1STOPBIT 8DATABITS -XONXOFF -RTSCTS". В моем случае платы Nano w/ ATmega328 получится строка "2001:raw:0:/dev/ttyUSB0:57600 NONE 1STOPBIT 8DATABITS -XONXOFF -RTSCTS".
3. Установить на компьютере tibbo vsp manager.
BANNER:banner3:this is ser2net TCP port \p device \d serial parms \s\r\n
TRACEFILE:tw1:/tmp/tw-\p-\Y-\M-\D-\H:\i:\s.\U
TRACEFILE:tr1:/tmp/tr-\p-\Y-\M-\D-\H:\i:\s.\U
#1001:raw:0:/dev/ttyUSB0:9600 NONE 1STOPBIT 8DATABITS XONXOFF LOCAL -RTSCTS
2001:raw:0:/dev/ttyUSB0:57600 NONE 1STOPBIT 8DATABITS -XONXOFF -RTSCTS
#3001:raw:0:/dev/ttyUSB0:115200 NONE 1STOPBIT 8DATABITS XONXOFF LOCAL -RTSCTS
#2001:raw:600:/dev/ttyS0:9600 NONE 1STOPBIT 8DATABITS XONXOFF LOCAL -RTSCTS
#2002:raw:600:/dev/ttyS1:9600 NONE 1STOPBIT 8DATABITS XONXOFF LOCAL -RTSCTS
#2003:raw:5:/dev/ttyS2:9600
#2004:raw:5:/dev/ttyS3:115200
#2005:raw:5:/dev/ttyS4:9600
4. Добавить в него порт с настройками из скриншотов, только заменив в них "baud rate (bps)" на значение из boards.


5. После этого можно программировать arduino по сети из компьютера, выставив в нем последовательный порт tibbo. Только когда в окне arduino появится надпись "Размер скетча в двоичном коде: XXXX байт (из 30 720 байт максимум)" - нажать кнопку сброса на плате arduino.

no subject
Date: 2016-10-23 05:45 pm (UTC)плюс удобнее бы было сетевой диск поднять, чтоб аврдюд сразу прошивку на компе подбирал. но там, кмк, без доп.флешки точно не хватит места.
no subject
Date: 2016-10-24 11:19 pm (UTC)no subject
Date: 2016-10-24 11:27 pm (UTC)no subject
Date: 2016-10-25 01:25 pm (UTC)Если убрать графический интерфейс, то должно уместиться.