Як записати завантажувач?


15

Мені доручили "спалити завантажувач" моєму Arduino, щоб виправити помилку, яку я отримував. Як я можу це зробити? (А який саме завантажувач?)


Записати завантажувач у arduino досить просто, якщо ви дотримуєтесь правильних кроків. Це відео може допомогти вам: YouTube - Як записати завантажувач на ATMEGA328P-AU (SMD) | Домашнє ARDUINO MINI
Sandesh HS

Відповіді:


15

Завантажувач - це невелика програма, яка (майже) завжди є на Arduino. Він керує завантаженням і запуском ескізів, які ви робите, і блимає 13-контактним світлодіодним штифтом щоразу, коли плата скидається.


Щоб записати завантажувач:

  1. Отримайте AVR ISP , USBtinyISP , ParallelProgrammer або іншу плату Arduino . Це буде ваш провайдер.
  2. Якщо не вказано інше, підключіть провайдера до штифтів ICSP на вашій платі.
  3. Підключіть плату за допомогою USB-кабелю або зовнішнього джерела живлення.
  4. Відкрийте Arduino IDE.
  5. Переконайтесь, що ви вибрали правильну дошку, на яку ви записуєте Tools ► Board ►в IDE. Двічі перевірте це, навіть якщо ви могли правильно завантажити програми; для завантаження не завжди потрібна потрібна дошка.
  6. Виберіть відповідного програміста на Tools ► Programmer ►.
  7. Клацніть Tools ► Burn Bootloaderі чекайте. Це не повинно зайняти більше хвилини, а часто займає лише кілька секунд.

Джерела:


1
На даний момент AVRISP майже EOL (до кінця життя). Як мінімум, ви хочете AVRISPmk2. Існує також багато інших, більш вигадливих інструментів (наприклад, AVR One!). Вам, мабуть, варто просто сказати{line 1} or other dedicated ISP programmer.
Вонор Коннор,

На дошках, як Arduino Yun, кожен раз, коли ви "завантажуєтесь через wifi", ви записуєте завантажувач, злитий із вашим ескізом. Це завдяки тому, що процесор Linux підключений до AVR MCU через SPI, так що ви можете імітувати ISP за допомогою програмного забезпечення.
Федеріко Фіссоре

@FedericoFissore - це чому це займає так довго?
TheDoctor

Так, це і той факт, що бітбінг GPIO відбувається повільніше. Постійні зусилля для його прискорення.
Федеріко Фіссоре

8

Що таке завантажувач?

А який саме завантажувач?

Завантажувач - це невеликий фрагмент коду, що знаходиться у "високій" частині пам'яті програми. Зазвичай він не стирається під час завантаження нових ескізів. Її мета - активувати його відразу після скидання (запобіжники налаштовані для початку коду за адресою завантажувача, а не адреси 0x0000). Завантажувач завантаження зачекає недовго (наприклад, одну секунду), щоб побачити, чи надходять "програмуючі" дані на послідовний порт.

  • Якщо так, він зчитує ці дані та розшифровує їх для перепрограмування решти флеш-пам'яті. Працюючи спільно з програмою завантаження (зазвичай avrdude), новий ескіз надсилається через послідовний порт. Завантажувач видаляє сторінки флеш-пам'яті та замінює їх новим кодом. Після цього він виконує новий код.

  • Якщо ніяких інструкцій не надійде, завантажувач скаче на адресу 0x0000, щоб виконати існуючий ескіз на дошці.


Як замінити завантажувач

Альтернативний метод програмування завантажувача - це використовувати ескіз, про який я писав деякий час тому, який працює на:

  • Uno (або подібне, наприклад, Duemilanove)
  • Леонардо
  • Мега2560

Дошка "програмування" виконує ескіз, який містить завантажувачі для ряду дощок, жорстко закодованих у нього. Ви підключаєте плату програмування до цільової плати (дошки, що бажає завантажувача) за допомогою 6 проводів підключення, як показано.

Програміст завантажувача для Uno

Ця конкретна фотографія ілюструє одну програмування Uno, іншу.

Ви запускаєте ескіз (працюючи через послідовний монітор, щоб давати йому команди). Спочатку він визначає цільовий чіп:

Atmega chip programmer.
Written by Nick Gammon.
Entered programming mode OK.
Signature = 0x1E 0x95 0x0F 
Processor = ATmega328P
Flash memory size = 32768 bytes.
LFuse = 0xFF 
HFuse = 0xDE 
EFuse = 0xFD 
Lock byte = 0xCF 
Bootloader address = 0x7E00
Bootloader length = 512 bytes.
Type 'L' to use Lilypad (8 MHz) loader, or 'U' for Uno (16 MHz) loader ...
Type 'G' to program the chip with the bootloader ...

Ви натискаєте G, щоб запрограмувати його.

Erasing chip ...
Writing bootloader ...
Committing page starting at 0x7E00
Committing page starting at 0x7E80
Committing page starting at 0x7F00
Committing page starting at 0x7F80
Written.
Verifying ...
No errors found.
Writing fuses ...
LFuse = 0xFF 
HFuse = 0xDE 
EFuse = 0xFD 
Lock byte = 0xCF 
Done.
Type 'C' when ready to continue with another chip ...

Для Uno це займає одну секунду. Для програмування Mega2560 потрібно 3 секунди.

Детальні інструкції у програміста завантажувача Atmega

Код можна завантажити з Github: nickgammon / arduino_sketches


Чи потрібно вибрати тип мікросхеми, яку ви записуєте (Інструменти-> Дошка ..)? Яку дошку я вибираю, коли горяю завантажувач автономного чіпа?
Каміло

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