Ардуинщики всех стран - объединяйтесь! В этом форуме, конечно.
Ответить

Вопросы по загрузчику

Ср дек 07, 2022 14:39:01

Добрый день.

Ознакомился с документацией на Atmega 328, но остались вопросы:
1) Загружается ли код загрузчика при каждой прошивке МК? То есть, добавляется ли код загрузчика к коду проекта на этапе компиляции, линковки или как-то иначе?
2) Может ли код загрузчика при исполнении на МК изменить слова конфигурации (фьюзы, локи и т.п.)? Или это можно сделать только внешним прошиванием?

С уважением, буду рад разъяснению. :)

Re: Вопросы по загрузчику

Ср дек 07, 2022 19:28:38

1) Нет. Инструменты - записать загрузчик.
2) Нет. Программатором.
Фьюзы нет, но частоту тактирования F_CPU может. Даже не загрузчиком.

Re: Вопросы по загрузчику

Ср дек 07, 2022 21:40:12

Спасибо. :)

То есть, испортить загрузчик не так-то просто? У меня есть опасения касающиеся возможной порчи загрузчика при использовании Arduino без IDE. Но очень хочется освоить. :)

Я ещё поинтересуюсь: что такое RWW (Read-While-Write) и NRWW (No Read-While-Write) секции? Загрузчик, получается, всегда в NRWW секции?

F_CPU? Скорость ядра вроде бы выбирается в Low Fuse Byte - CKSEL?

Ещё интересует происходящее с таблицей векторов прерываний при исполнении кода загрузчика и кода приложения? У загрузчика свой IVT?

Может быть подскажете как правильно прошить МК через avr-dude и не запортить загрузчик?

Re: Вопросы по загрузчику

Чт дек 08, 2022 08:09:22

То есть, испортить загрузчик не так-то просто? У меня есть опасения касающиеся возможной порчи загрузчика при использовании Arduino без IDE. Но очень хочется освоить. :)

Если очень хочется, то нет преград! AVRStudio c внешним инструментом так и работает - есть в инете как настроить.
Сам с 2019 года перешел просто на командную строку в Far (https://farmanager.com/). Там встроенный редактор (F4) с подсветкой для асм.
Не одна Arduino не отказала во время многочисленных циклов перезаливки через её собственный загрузчик.
Программирую на асм. Папку старой версии проекта со всем утилитами для использования Arduino прилагаю. C.bat - компиляция проекта. W_COM4.bat - прошивка Arduino, подключенной по USB через COM4.
Ещё интересует происходящее с таблицей векторов прерываний при исполнении кода загрузчика и кода приложения? У загрузчика свой IVT?
Может быть подскажете как правильно прошить МК через avr-dude и не запортить загрузчик?

Вот так вектора прерываний забрать у загрузчика -
Код:
....
.def   A      = r16            
.def   B      = r17            
....
   in   A,MCUCR         
   mov   B,A
   sbr   A,1<<IVCE            ;Выполнения протокола переноса векторов прерываний в начало памяти  IVCE=1
   out   MCUCR,A
   cbr   B,1<<IVSEL            ;IVSEL=0
   out   MCUCR,B

Таблицу векторов естественно следует поместить куда надо - поглядите в core.inc

Вы правы, тактирование микропроцессора выбирается фьюзами, НО её можно еще уменьшить, программно включив делитель.
Вложения
командная строка.zip
(886.41 KiB) Скачиваний: 52

Re: Вопросы по загрузчику

Чт дек 08, 2022 09:24:38

Спасибо. :)
Может быть подскажете как правильно прошить МК через avr-dude и не запортить загрузчик?

С помощью загрузчика. Как загрузить - зависит от самого загрузчика, его протокола.
Очень много вопросов... Читать ДШ, хотя бы.

Re: Вопросы по загрузчику

Чт дек 08, 2022 09:31:52

Arduino компилировать в temp папку "с загрузчиком". Но bootloader-часть защищена от перезаписи (и доступа программ).
Напр. в UNO: Lock bits: 0xCF -> [BLB12 BLB11] = [00] -> SPM is not allowed to write to the Boot Loader section, and LPM executing from the Application section is not allowed to read from the Boot Loader section. (SPM не разрешено записывать в раздел загрузчика, а LPM, выполняющемуся из раздела Application, не разрешено читать из раздела загрузчика.)

Re: Вопросы по загрузчику

Чт дек 08, 2022 10:38:42

Большое спасибо!!! :) ДШ потихоньку осваиваю...

Правильно ли я понимаю: при покупке нового МК он полностью чистый, без загрузчика?
Или в нём уже прошит "заводской" вариант?

Как загрузчик Arduino понимает что нужно делать: "записать код" или "исполнять код"?

Re: Вопросы по загрузчику

Чт дек 08, 2022 10:50:41

Правильно ли я понимаю: при покупке нового МК он полностью чистый, без загрузчика?
Или в нём уже прошит "заводской" вариант?

Как загрузчик Arduino понимает что нужно делать: "записать код" или "исполнять код"?

Я поначалу не заметил, что тема в разделе Ардуино. Вы же спрашиваете про AVR, без конкретики. В самом новом МК загрузчика нет - есть на плате Ардуино. Загрузчик записывает код, а затем уже передаёт ему исполнение с 0-го адреса. Если, же команд от Ардуино IDE нет на загрузку, то просто запускает код с 0-го адреса.

Re: Вопросы по загрузчику

Чт дек 08, 2022 12:10:29

... Kак загрузчик Arduino понимает что нужно делать: "записать код" или "исполнять код"?

Один из вариантов:
Изображение

Re: Вопросы по загрузчику

Чт дек 08, 2022 14:11:31


Кстати, сейчас у Optiboot фишка прикольная (не знаю на сколько новая). После рестарта она проверяет его причину. Если причина включение питания, то сразу переход на прошивку минуя стадию ожидания новой прошивки. Немного удобнее стало с устройствами на основе Arduino.

Re: Вопросы по загрузчику

Чт дек 08, 2022 14:24:18

Бы предпочёл без бутлоадера (если устройство с МК для дома напр.) - не имеет значения загружать код программы через программатор или через usb/ttl конвертер. Но ради универсальности будем использовать некоторые ресурсы и для загрузчика. А в некоторых МК и их системах уствойство видно напр. в Win как внешний диск, хороший вариант для обновления напр.

Re: Вопросы по загрузчику

Чт дек 08, 2022 14:39:58

Потихоньку проясняется. ))

Я посмотрел схему платы и понял так: Atmega16U - это не программатор, а просто мост USB->COM(TTL). Линия DTR используется для сброса МК со стороны ПК. После сброса загрузчик ждёт команды, если их нет, то стартует наше приложение.

Кстати, получается загрузить загрузчик на основной МК - Atmega328 напрямую не получится, а использовать плату Arduino в качестве программатора - это возможно. М-м, как-то сложно.

А какие программаторы Вы предпочитаете для AVR? Я слышал что AVR сейчас только лишь торговая марка Microchip. Получается, "родным" программатором будет PIC KIT?

Re: Вопросы по загрузчику

Чт дек 08, 2022 15:02:45

Бы предпочёл без бутлоадера (если устройство с МК для дома напр.) - не имеет значения загружать код программы через программатор или через usb/ttl конвертер.

Конечно, через загрузчик удобнее, если Ардуино с USB - никаких программаторов, никаких кабелей.) И даже, если сидишь не в Ардуино среде, ничто не мешает грузить через Ардуино загрузчик.

Re: Вопросы по загрузчику

Чт дек 08, 2022 15:09:38

ОФФ: На столе/или в ящике рядом со столом/ лежат все наверное необходимые устройства для записи, обслуживания (и возможной реанимации) всех исп. МК :). Но для конкретного пользователя - конечно, должно быть проще: с буутлоудер
---
... А какие программаторы ...

Напр.
- USBasp - самодельной и китайской
- Arduino as IP - к большинству доступных AVR есть вариант
- PICkit2 - для AVR есть метод
- AVR-доктор /или на Atmega8, или в последнее время собираю при необходимости с Arduino - прямо на бредборде/

При написании и настройке кода и демонстрационного устройства я стараюсь не отсоединять пины для программирования. С осторожностью не использовать выводы для другого. Но в большинстве тут без вариантов - либо резисторы, чтоб не мешали, либо с отключением для программирование или тест.. Получается а-ля "Ардуино" на бредборде или макетной плате.

Re: Вопросы по загрузчику

Чт дек 08, 2022 15:24:17

получается загрузить загрузчик на основной МК - Atmega328 напрямую не получится

Как понять? Пины ICSP выведены на разъём, во многих платах даже на отдельный разъём...
Программатор любой, тысячи их.) Преобразователь на FT232RL удобен - 2 в 1-м.

Добавлено after 4 minutes 24 seconds:
С осторожностью не использовать выводы для другого. Но в большинстве тут без вариантов - либо резисторы, чтоб не мешали, либо с отключением для программирование или тест..
Так нормальные программаторы переводят в третье состояние свои пины. Это совсем не сложно.)

Re: Вопросы по загрузчику

Чт дек 08, 2022 15:28:55

Да, ну не тот случай - но частотомер (на PIC) бил на timer1 по внешнем кварце, но должно было быть без cap-нагрузок, а клеммы там программные ...
Вариантов много, и единого решения нет.

Re: Вопросы по загрузчику

Чт дек 08, 2022 15:32:50

Для записи как самой прожки, так и загрузчика и комплекта фузов может использоваться "лишняя" нанка переделанная в ардуионISP программатор. Только нужно соответствующие вкладки IDE для тех операций выбирать.
8)

Re: Вопросы по загрузчику

Чт дек 08, 2022 16:07:43

BOB51 писал(а):Для записи как самой прожки, так и загрузчика и комплекта фузов может использоваться "лишняя" нанка переделанная в ардуионISP программатор. Только нужно соответствующие вкладки IDE для тех операций выбирать.
8)

Вот это уже интереснее. :) Наверняка такое решение уже где-то есть: записать в Arduino приложение-программатор, которое превратит Arduino в AVR-программатор. Тогда, наверное, можно будет прошивать не только 328-й МК?

Мне ещё интересно, avrasm2 - это из комплекта AVR Studio? Почему предпочитают этот транслятор, а не avr-gcc?

Re: Вопросы по загрузчику

Чт дек 08, 2022 16:29:23

В самой ардуино IDE имеется соответствующее программное обеспечение для данного программатора.
Но оно завязано на IDE, для "автономного" применения не годиться.
Из "сторонних" достаточно много и программ-оболочек и самих схем программаторов под них.
Среда разработки AVR studio имеет два компилятора -
Для проектов под "читсым ассемблером" - avrasm2
и для работы под Си (GCC), в составе которого и имеется как дополнение avr-gcc.
Собственно его используют "продвинутые пользователи" самого GCC.
8)

Re: Вопросы по загрузчику

Чт дек 08, 2022 17:26:14

1. Arduino Nano/UNO -> Arduino IDE -> Примеры -> ArduinoISP
2. AVRDUDESS - A GUI for AVRDUDE: https://blog.zakkemble.net/avrdudess-a- ... nt-page-5/
(для winXP -> 2.13!, дял других: v2.14)

Копия екрана: для моего друга для ATtiny13A, но для всех AVR то же самое.
(При необходимости отрегулируйте скорость).

И Arduino UNO/Nano становится программатором для AVR - читает и пишет из flash, eeprom и фюзы.
Вложения
Untitled-2.jpg
(238.13 KiB) Скачиваний: 47
Последний раз редактировалось veso74 Чт дек 08, 2022 17:30:05, всего редактировалось 2 раз(а).
Ответить