Які альтернативи є завантажувачем Optiboot?


12

Майже всі сучасні плати Arduino використовують завантажувач Optiboot . Порівняно з раніше використовуваним ATmegaboot, цей показник менший у спалаху (приблизно на 1,5 КБ) та швидший у швидкості завантаження (115,2 КБ проти 57,6 Кб) і швидше запускає ваш ескіз (затримка, поки очікування після скидання коротше).

Чи є альтернативи завантажувача Optiboot? Зокрема, є якісь менші (у спалаху) завантажувачі? Які вони відмінності?

Відповіді:


8

Optiboot - це найменший доступний завантажувач.

Але є набагато більш потужний (із вбудованою консоллю для тестування обладнання, перевірки вмісту оперативної пам’яті та флеш-пам’яті тощо) завантажувач із більш розвиненим та надійним протоколом зв’язку stk500v2 між avrdude та завантажувачем AVR.

Я використовував його на ATmega2560 та ATmega1284p. Він працює як для 3-байтового, так і для 2-байтного лічильника MCU.

У мене на Sourceforge є версія завантажувача STK500v2 .

Цей завантажувач заснований на завантажувачі Peter Fleury STK500v2, оновленому Марком Спроулом. Я вніс зміни, щоб підтримувати його дошкою Goldilocks (ATmega1284p).

Основна особливість полягає у використанні протоколу STK500v2 для завантаження флеш-зображення в Arduino. Цей протокол є більш надійним і дає кращі можливості помилок, ніж протокол avr109 . Окрім того, у світі Arduino протокол avr109 називається "Arduino", оскільки він перемикає DTR (для скидання плати та автоматичного введення завантажувача), а протокол STK500v2 у світі Arduino називається "Проводка". причина.

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

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


Здається, це частина FreeRTOS, це завантажувач повністю незалежний від FreeRTOS?
jfpoilpret

1
Він абсолютно незалежний. Завантажувач використовується для запису спалаху з чим завгодно. FreeRTOS з'являється пізніше після запуску main (). Я просто зберігаю його в одному сховищі. Я цього не писав, просто змінив для своїх цілей.
feilipu

Це здається цікавим; було б корисно, якщо ви зможете підсумувати важливі особливості завантажувача у своїй відповіді: розмір у Flash, максимальна швидкість завантаження, Arduino boars, з якими він може працювати, та ще кілька деталей про тестування обладнання).
jfpoilpret

Це (заснований на) завантажувач Peter Fleury STK500v2, оновлений Mark Sproul. Я вніс зміни, щоб підтримувати його дошкою Goldilocks (ATmega1284p). Ключова особливість - використовувати протокол STK500v2 для завантаження флеш-зображення в Arduino. Цей протокол є більш надійним і дає кращі можливості помилок, ніж протокол avr109. Окрім того, у світі Arduino протокол avr109 називається "Arduino", оскільки він перемикає DTR (для скидання плати та автоматичного введення завантажувача), а протокол STK500v2 у світі Arduino називається "Проводка". причина.
feilipu

1
Дякую за інформацію, я оновив вашу публікацію, оскільки вважаю, що ця інформація повинна бути безпосередньо частиною вашої відповіді. Сміливо додайте більше інформації, якщо вважаєте за потрібне!
jfpoilpret

3

TinySafeBoot є альтернативою для пристроїв ATtiny та ATmega.

  • Сумісний з великою кількістю ATtinys та ATmegas (див. Нижче)

  • Читати / записувати доступ до Flash та EEPROM.

  • Усі IO, доступні для послідовного зв'язку

  • Одножильний, також з декількома AVR на одній лінії

  • Автоматичне передавання даних, ненадійний протокол.

  • Активовано Reset + Password (необов’язково)

  • Користувач може змінити пароль і час вичерпання в будь-який час.

  • "Аварійна стирання" для подолання втраченого пароля - вбиває всі дані, але завантажувач залишає недоторканим.

  • ATtinys: ~ 550 байт,

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

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

  • Вихідний код - безкоштовне програмне забезпечення (GPL)


хтось знає, як TSB порівнює з Optiboot? Останнє оновлення, здається, принаймні 2 роки тому ...
Джоні, чому

1

Чи є альтернативи завантажувача Optiboot?

Помилка ... не дуже. Насправді є [неофіційна] модифікація Optiboot, щоб зробити його швидшим під час завантаження .

Встановлення високих варіацій швидкості передачі…

  • Переконайтесь, що Ardeino IDE не працює
  • Завантажте 7-Zip архів за посиланням вище
  • Витягніть три файли в наступний каталог: {Arduino Installation Root}\hardware\arduino\bootloaders\optiboot\
  • Відкрийте файл Board.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 Зберегти та закрити файл Board.txt
  • За допомогою улюбленого програміста ISP встановіть новий завантажувач. Не забувайте: Переконайтесь, що вибрано плату Arduino Uno / Upload Fast (Інструменти / Дошка) , якщо необхідно, переконайтесь, що вибрано послідовний порт програміста (Інструменти / Послідовний порт) , Переконайтесь, що програміст обраний (Інструменти / Програміст) ) , Встановивши завантажувач, змініть послідовний порт на послідовний порт вашого Arduino Uno .

Текст вище змінено для сумісності із сайтом. Оригінальна публікація


Крім цього, і завантажувача ATmegaboot, ви не можете реально знайти альтернативу. Я б міг уявити, що якщо Ардуїно завантажує його на всі вироблені раніше Unos, це буде досить оптимізовано. Вищевказаний хак прискорює час завантаження, але це не зменшує розмір завантажувача. Ви також можете видалити час очікування завантажувача, щоб він мав швидший запуск.

Якщо ви стурбовані максимальним збільшенням спалаху, дивіться: Як реально зменшити ескіз, і ця відповідь [у в. Що я можу зробити, якщо у мене закінчиться Flash-пам'ять або SRAM? ].

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.