Какие существуют альтернативы загрузчику Optiboot?

Почти все современные платы Arduino используют загрузчик Optiboot . По сравнению с используемым ранее ATmegaboot, это меньше в условиях флэш-памяти (примерно на 1,5 КБ) и быстрее в скорости загрузки (115,2 к против 57,6 тыс.) И быстрее запускает ваш эскиз (задержка, ожидая после сброса короче).

Есть ли альтернативы загрузчику Optiboot? В частности, существуют ли меньшие (в условиях флеш-памяти) загрузчики? Какие у них есть различия?

9 голосов | спросил Cybergibbons 16 MarpmSun, 16 Mar 2014 15:31:29 +04002014-03-16T15:31:29+04:0003 2014, 15:31:29

3 ответа


7

Optiboot - это самый маленький загрузочный загрузчик.

Но есть гораздо более мощный (со встроенной консолью для тестирования оборудования, проверки содержимого ОЗУ и Flash и т. д.) с более развитым и надежным протоколом связи stk500v2 между avrdude и загрузчиком AVR.

Я использовал его на ATmega2560 и ATmega1284p. Он работает как для 3-байтного, так и для 2-байтового счетчика программ MCU.

У меня есть версия загрузчика STK500v2 на Sourceforge .

Этот загрузчик основан на загрузчике Peter Fleury STK500v2, обновленном Mark Sproul. Я сделал изменения, чтобы поддерживать его с помощью платы Goldilocks (ATmega1284p).

Ключевой особенностью является использование протокола STK500v2 для загрузки изображения Flash в Arduino. Этот протокол более надежный и дает лучшие возможности ошибок, чем протокол avr109 . В стороне протокол avr109 называется «Arduino» в мире Arduino, потому что он переключает DTR (для сброса платы и автоматического входа в загрузчик), а протокол STK500v2 называется «Wiring» в мире Arduino, из-за того же причина.

Загрузочный загрузчик Fleury /Sproul STK500v2 предназначен для работы с ATmega2560 с 3-байтным программным регистром из-за большего размера Flash. Но он также поддерживает обычные 2 байтовые платы (все остальное действительно).

Для плат с большим количеством Flash (например, Goldilocks 1284p) существует аппаратный монитор , который может использоваться для запроса Flash, SRAM и аппаратного обеспечения; вы можете проверить соединения без дополнительного кода и проверить фактическое содержимое Flash и EEPROM. Поскольку 1284p поддерживает 2 USART, я добавил возможность отладки USART1 , так что процесс загрузки через USART0 не нарушен.

ответил feilipu 28 MaramFri, 28 Mar 2014 09:41:17 +04002014-03-28T09:41:17+04:0009 2014, 09:41:17
2

TinySafeBoot является альтернативой устройствам ATtiny и ATmega.

  • Совместимость с большим количеством ATtinys и ATmegas (см. ниже)

  • Доступ к чтению /записи для Flash и EEPROM.

  • Все IO, доступные для последовательной связи

  • Однопроводный, также с несколькими AVR на одной строке

  • Протокол, защищенный протоколом.

  • Активируется с помощью Reset + Password (необязательно)

  • Пароль и тайм-аут могут быть изменены пользователем в любое время.

  • «Emergency Erase» для преодоления потерянного пароля - убивает все данные, но оставляет загрузчик неповрежденным.

  • ATtinys: ~ 550 байт,

  • ATmegas: <512 байт (!)

  • TSB для ATtiny может обновить себя.

  • Исходный код - это бесплатное программное обеспечение (GPL)

ответил Ashlyn Black 11 FriEurope/Moscow2015-12-11T21:43:38+03:00Europe/Moscow12bEurope/MoscowFri, 11 Dec 2015 21:43:38 +0300 2015, 21:43:38
0
  

Есть ли альтернативы загрузчику Optiboot?

Err ... не совсем. Существует фактически [неофициальный] модификация Optiboot, чтобы ускорить ее при загрузке .

  

Чтобы установить высокие скорости передачи в бодах ...

     
  • Убедитесь, что среда разработки Arduino не запущена.
  •   
  • Загрузите 7-Zip-архив, используя ссылку выше
  •   
  • Извлеките три файла в следующий каталог: {Arduino Installation Root}\hardware\arduino\bootloaders\optiboot\
  •   
  • Откройте файл boards.txt, расположенный в следующем каталоге: {Arduino Installation Root}\hardware\arduino\
  •   

Найти этот раздел внутри него:

uno.name=Arduino Uno
uno.upload.protocol=arduino
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
uno.build.variant=standard
     

Добавьте следующий раздел:

uno_uf.name=Arduino Uno / Upload Fast
uno_uf.upload.protocol=arduino
uno_uf.upload.maximum_size=32256
uno_uf.upload.speed=250000
uno_uf.bootloader.low_fuses=0xff
uno_uf.bootloader.high_fuses=0xde
uno_uf.bootloader.extended_fuses=0x05
uno_uf.bootloader.path=optiboot
uno_uf.bootloader.file=optiboot_atmega328_250000.hex
uno_uf.bootloader.unlock_bits=0x3F
uno_uf.bootloader.lock_bits=0x0F
uno_uf.build.mcu=atmega328p
uno_uf.build.f_cpu=16000000L
uno_uf.build.core=arduino
uno_uf.build.variant=standard
     
  • Измените два выделенных значения на скорость передачи, которую вы планируете использовать: 250000, 500000 или 1000000. Сохраните и закройте файл boards.txt.
  •   
  • Используя своего любимого программиста, установите новый загрузчик. Не забывайте: убедитесь, что выбрана плата Arduino Uno /Upload Fast (Инструменты /Совет) , При необходимости убедитесь, что последовательный порт   выбран ваш программист (Инструменты /Последовательный порт) , Обеспечьте   программист (Tools /Programmer) , После установки   загрузчик, измените последовательный порт на последовательный порт вашего Arduino   Uno .
  •   

Текст, слегка измененный для совместимости с сайтом. Оригинальный пост


Кроме того, и загрузчик ATmegaboot, вы не можете найти какую-либо альтернативу. Я бы предположил, что если Arduino загрузит его на все Unos, которые когда-либо производились, он довольно оптимизирован. Вышеупомянутый взлом ускоряет загрузку, но не уменьшает размер загрузчика. Вы также можете удалить время ожидания на загрузчике , чтобы он имеет более быстрый запуск.

Если вы обеспокоены максимизацией вспышки, см. ниже: Как чтобы действительно сжать эскиз и этот ответ [on on Что я могу сделать, если я закончились Flash-память или SRAM? ].

ответил Anonymous Penguin 18 MarpmTue, 18 Mar 2014 23:01:17 +04002014-03-18T23:01:17+04:0011 2014, 23:01:17

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132