VD Net

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 :)
Если возникнут какие-то вопросы, то прошу их задавать либо в комментариях к этой записи, либо в блоге Илья Данилова.
VD42
Копирование и использование материалов сайта разрешается только при указании активной прямой ссылки без rel=nofollow на страницу с копируемым материалом. Если какие-то условия не выполнены или не могут быть выполнены, то разрешение можно получить по электронной почте vladislav.kochemaev@gmail.com с указанием цели использования. При копировании материалов сайта вы автоматически соглашаетесь с этими условиями.