Как сжечь загрузчик?

Мне было поручено «сжечь загрузчик» моему Arduino, чтобы исправить ошибку, которую я получал. Как я могу это сделать? (И что такое загрузчик?)

10 голосов | спросил The Guy with The Hat 27 FebruaryEurope/MoscowbThu, 27 Feb 2014 02:09:57 +0400000000amThu, 27 Feb 2014 02:09:57 +040014 2014, 02:09:57

2 ответа


11

Загрузочный загрузчик - небольшая программа, которая (почти) всегда находится на Arduino. Он управляет загрузкой и запуском эскизов, которые вы делаете, и мигает светодиодом 13 при каждом сбросе платы.


Чтобы записать загрузчик:

  1. Получите AVR ISP , USBtinyISP , ParallelProgrammer , или еще одна плата Arduino . Это будет ваш интернет-провайдер.
  2. Если не указано иное, подключите ISP к контактам ICSP на вашей плате.
  3. Подключите плату с помощью USB-кабеля или внешнего источника питания.
  4. Откройте среду разработки Arduino.
  5. Убедитесь, что вы выбрали правильную плату, которую вы записываете, в Tools ► Board ► в среде IDE. Дважды проверьте это, даже если вы можете загружать программы правильно; загрузка не всегда требует правильной платы.
  6. Выберите соответствующего программиста в Tools ► Programmer ►.
  7. Нажмите Tools ► Burn Bootloader и подождите. Это не должно занимать больше минуты и часто занимает всего несколько секунд.

Источники:

ответил The Guy with The Hat 27 FebruaryEurope/MoscowbThu, 27 Feb 2014 02:09:57 +0400000000amThu, 27 Feb 2014 02:09:57 +040014 2014, 02:09:57
5

Что такое загрузчик?

  

А что такое загрузчик?

Загрузочный загрузчик - это небольшой фрагмент кода, находящийся в «высокой» части памяти программы. Обычно он не стирается при загрузке новых эскизов. Его назначение следует активировать сразу после сброса (плавкие предохранители настроены на запуск кода на адрес загрузчика, а не на адрес 0x0000). Загрузчик будет ждать короткое время (например, одну секунду), чтобы увидеть, поступают ли данные «программирования» на последовательный порт.

  • Если это так, он считывает эти данные и декодирует их для перепрограммирования остальной флэш-памяти. Работая вместе с программой загрузки (обычно avrdude), новый эскиз отправляется через последовательный порт. Загрузчик стирает страницы флэш-памяти и заменяет их новым кодом. После этого он выполняет новый код.

  • Если инструкции не поступают, загрузчик переходит к адресу 0x0000 для выполнения существующего эскиза на плате.


Как заменить загрузчик

Альтернативным методом для программирования загрузчика является использование эскиза, который я написал некоторое время назад, который работает на:

  • Uno (или аналогичный, например, Duemilanove)
  • Леонардо
  • Mega2560

Плата «программирование» запускает эскиз, который имеет загрузочные загрузчики для большого количества плат, жестко закодированных в нем. Вы подключаете плату программирования к целевой плате (плата, требующую загрузчика) с помощью 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

ответил Nick Gammon 21 J000000Tuesday15 2015, 00:11:40

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

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

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