VD Net

24 сентября 2011, 06:31

Новые Arduino: апаратный USB в контроллере, ARM-архитектура и WiFi

Arduino уже давно становится всё популярнее и популярнее, хотя, например, среда разработки только сейчас дожила до версии 1.0, когда внесение чего-то нового будет остановлено. Поэтому продолжают появляться всё новые и новые устройства. Так, команда разработчиков Ардуино анонсировала на MakerFaire 2011 новые продукты: Arduino Leonardo, основанный на микроконтроллере ATMega32u4; Arduino DUE, первый Ардуино, основанный на чипе ARM (конкретно это Cortex-M3 ARM SAM3U4E); а также Arduino WiFi Shield для нового DUE. Подробнее об этом всём можно узнать по ссылке.
26 октября 2010, 15:02

Внимание! Optiboot неправильно работает на не-Uno-платах Arduino!

!!! Сообщение со старого блога !!!

Илья Данилов в своём блоге выяснил, что существуют некоторые проблемы с Optiboot на не-Uno-платах Arduino (отсюда):

Если загрузить скетч — он вполне нормально стартует. Но стоит отключить и снова включить питание, как optiboot зацикливается, реальных шансов снова увидеть работающий скетч — крайне мало. Кроме всего прочего, некоторые жалуются на проблемы при заливке больших скетчей. Собственно, после просмотра исходника optiboot возникает масса вопросов — например, как автор выбирал задержку для watchdog-а, или правильно ли используются улучшения от ladyada. У меня разборки неожиданно осложнились трапом линковщика при попытке пересобрать optiboot из исходников.
Так что пока радоваться рано. Лишних килобайтов для скетчей нет, проблемы со стартом скетчей и прочие неприятные вещи. Придётся ждать облагороженную версию Optiboot, а пока можно попробовать 1К-bootloader для увеличения пространства для загрузки скетчей, с ним проблем нет.
20 октября 2010, 12:49

Optiboot

!!! Сообщение со старого блога !!!

Optiboot — это новый бутлоадер для Arduino, который даёт несколько преимуществ, но об этом лучше писал Илья Данилов в своём блоге Arduino, MK-90 и другие (отсюда):

Теперь проект Arduino использует новый бутлоадер — Optiboot (исправлено, прим. VladDev). Во-первых, он умещается в минимальном предопределенном объеме для бутлоадера ATmega — ему нужно всего 512 байт! Иными словами, старинное решение +1К памяти уже не является рекордом. Попутно увеличена в два раза скорость загрузки — 115200. Пока это работает только с ATmega168 и ATmega328, но на подходе и ATmega8 — вот уж для него-то действительно актуально полтора килобайта свободной памяти (+25%).

Кстати, существующие платы Decimila/Duemilanova и совместимые клоны также можно проапгрейдить новым бутлоадером — однако, для этого понадобится ISP-программатор. И после этого надо обязательно выбрать в ArduinoIDE 0020 тип платы «Arduino Uno», иначе из-за разницы в скоростях у вашего open hardware и software не получится консенсуса ;)
А вот и информация, как же можно прошить Optiboot (отсюда):

Пока народ возмущается по поводу ахового качества первой партии плат Arduino Uno, а отцы-основатели оправдываются в своем блоге, что «ложка дегтя никак не портит бочку меда», я решил опробовать новый 512-байтный optiboot. По причине отсутствия под рукой оригинального Arduino Uno, все эксперименты проводил на Duemilanove.

Итак, придется скачать ArduinoIDE 0020 под Windows — даже если у вас, как и у меня — Linux (примечание: на момент написания статьи версии 0020 под Linux еще не было, но теперь уже можно качать 0021). В качестве альтернативы подойдет архив со страницы optiboot на google code. В обоих вариантах вы получаете готовые откомпилированные .hex-файлы для всех плат Arduino и совместимых с ней клонов, но учтите — по умолчанию ArduinoIDE 0020/0021 поддерживает только Arduino Uno с МК ATmega328P и тактовой частотой 16 МГц.

Понадобится также и ISP-программатор — подойдет любой, хотя бы даже и на резисторах и LPT-порту.

Простейший способ апгрейда: подключите программатор к разъему ISP6 вашего Arduino, запустите ArduinoIDE (0020 и выше), в меню Tools|Board выберите Arduino Uno, затем шейте через
Tools|Ваш программатор
Если вы не нашли программатор в списке, хотя точно знаете, что он поддерживается avrdude, попробуйте добавить его описание в файл
hardware/arduino/programmers.txt
Например, если у вас USBasp, допишите строчки:
usbasp.name=USBasp
usbasp.communication=usb
usbasp.protocol=usbasp
Если у вас все еще нет возможности пользоваться ArduinoIDE 0020/0021, не беда — копируйте каталог
hardware/arduino/bootloaders/optiboot
из нее в свою «старушку» версии 0019 и добавьте в файл
hardware/arduino/boards.txt
:
uno.name=Arduino Uno
uno.upload.protocol=stk500
uno.upload.maximum_size=32256
uno.upload.speed=115200
uno.bootloader.low_fuses=0xff
uno.bootloader.high_fuses=0xde
uno.bootloader.extended_fuses=0x05
uno.bootloader.path=optiboot
uno.bootloader.file=optiboot_atmega328.hex
uno.bootloader.unlock_bits=0x3F
uno.bootloader.lock_bits=0x0F
uno.build.mcu=atmega328p
uno.build.f_cpu=16000000L
uno.build.core=arduino
Наконец, для истинных поклонников кристалльной ясности (командной строки :), можно предложить все сделать парой команд (на примере AVRDoper):
avrdoper -c stk500v2 -P avrdoper -p m328p -e -u -U lock:w:0x3f:m -U efuse:w:0x05:m -U hfuse:w:0xde:m -U lfuse:w:0xff:m
avrdoper -c stk500v2 -P avrdoper -p m328p -U flash:w:optiboot_atmega328.hex -U lock:w:0x0f:m
Собственно, вот и всё — теперь у вас плата, программно совместимая по бутлоадеру с Arduino Uno, свободно 31,5 Кбайт памяти программ, скетчи заливаются со скоростью 115200.

Если же у вас плата с МК ATmega168 или не на тактовую частоту 16 МГц, но очень хочется задействовать optiboot — скачайте архив optiboot с google code, там вы найдете boards.txt с описаниями большей части существующих плат. Скопируйте нужную секцию в свою ArduinoIDE и прошивайте по вышеописанному методу.
Вот так вот можно заполучить преимущества Optiboot (а точнее сам Optiboot) себе на Arduino :)
Если возникнут какие-то вопросы, то прошу их задавать либо в комментариях к этой записи, либо в блоге Илья Данилова.
1
Копирование и использование материалов сайта разрешается только при указании активной прямой ссылки без rel=nofollow на страницу с копируемым материалом. Если какие-то условия не выполнены или не могут быть выполнены, то разрешение можно получить по электронной почте vladislav.kochemaev@gmail.com с указанием цели использования. При копировании материалов сайта вы автоматически соглашаетесь с этими условиями.