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

Ардуинщики всех стран - объединяйтесь! В этом форуме, конечно.
squirrel5
Родился
Сообщения: 8
Зарегистрирован: Ср дек 07, 2022 14:26:28

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

Сообщение squirrel5 »

Добрый день.

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

С уважением, буду рад разъяснению. :)
Реклама
OKF
Это не хвост, это антенна
Сообщения: 1405
Зарегистрирован: Вт июн 07, 2011 08:03:18

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

Сообщение OKF »

1) Нет. Инструменты - записать загрузчик.
2) Нет. Программатором.
Фьюзы нет, но частоту тактирования F_CPU может. Даже не загрузчиком.
Реклама
squirrel5
Родился
Сообщения: 8
Зарегистрирован: Ср дек 07, 2022 14:26:28

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

Сообщение squirrel5 »

Спасибо. :)

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

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

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

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

Может быть подскажете как правильно прошить МК через avr-dude и не запортить загрузчик?
С.Н.
Потрогал лапой паяльник
Сообщения: 307
Зарегистрирован: Пн окт 26, 2020 08:37:51
Откуда: г.Волгоград

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

Сообщение С.Н. »

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

Код: Выделить всё

....
.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 КБ) 98 скачиваний
ФУОЗ на платформе Ардуино: https://radiokot.ru/forum/viewtopic.php ... 6#p4366626
ВК - "ФУОЗ на микроконтроллере Atmega328P (МПСЗ)"
Реклама
Эиком - электронные компоненты и радиодетали
OKF
Это не хвост, это антенна
Сообщения: 1405
Зарегистрирован: Вт июн 07, 2011 08:03:18

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

Сообщение OKF »

[uquote="squirrel5",url="/forum/viewtopic.php?p=4332980#p4332980"]Спасибо. :)
Может быть подскажете как правильно прошить МК через avr-dude и не запортить загрузчик?[/uquote]
С помощью загрузчика. Как загрузить - зависит от самого загрузчика, его протокола.
Очень много вопросов... Читать ДШ, хотя бы.
Реклама
veso74
Поставщик валерьянки для Кота
Сообщения: 1916
Зарегистрирован: Сб май 05, 2012 20:24:52
Откуда: KN34PC, Болгария
Контактная информация:

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

Сообщение veso74 »

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, не разрешено читать из раздела загрузчика.)
Реклама
squirrel5
Родился
Сообщения: 8
Зарегистрирован: Ср дек 07, 2022 14:26:28

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

Сообщение squirrel5 »

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

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

Как загрузчик Arduino понимает что нужно делать: "записать код" или "исполнять код"?
OKF
Это не хвост, это антенна
Сообщения: 1405
Зарегистрирован: Вт июн 07, 2011 08:03:18

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

Сообщение OKF »

[uquote="squirrel5",url="/forum/viewtopic.php?p=4333181#p4333181"]Правильно ли я понимаю: при покупке нового МК он полностью чистый, без загрузчика?
Или в нём уже прошит "заводской" вариант?

Как загрузчик Arduino понимает что нужно делать: "записать код" или "исполнять код"?[/uquote]
Я поначалу не заметил, что тема в разделе Ардуино. Вы же спрашиваете про AVR, без конкретики. В самом новом МК загрузчика нет - есть на плате Ардуино. Загрузчик записывает код, а затем уже передаёт ему исполнение с 0-го адреса. Если, же команд от Ардуино IDE нет на загрузку, то просто запускает код с 0-го адреса.
veso74
Поставщик валерьянки для Кота
Сообщения: 1916
Зарегистрирован: Сб май 05, 2012 20:24:52
Откуда: KN34PC, Болгария
Контактная информация:

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

Сообщение veso74 »

[uquote="squirrel5",url="/forum/viewtopic.php?p=4333181#p4333181"]... Kак загрузчик Arduino понимает что нужно делать: "записать код" или "исполнять код"?[/uquote]
Один из вариантов:
Изображение
С.Н.
Потрогал лапой паяльник
Сообщения: 307
Зарегистрирован: Пн окт 26, 2020 08:37:51
Откуда: г.Волгоград

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

Сообщение С.Н. »

[uquote="veso74",url="/forum/viewtopic.php?p=4333228#p4333228"][/uquote]
Кстати, сейчас у Optiboot фишка прикольная (не знаю на сколько новая). После рестарта она проверяет его причину. Если причина включение питания, то сразу переход на прошивку минуя стадию ожидания новой прошивки. Немного удобнее стало с устройствами на основе Arduino.
ФУОЗ на платформе Ардуино: https://radiokot.ru/forum/viewtopic.php ... 6#p4366626
ВК - "ФУОЗ на микроконтроллере Atmega328P (МПСЗ)"
veso74
Поставщик валерьянки для Кота
Сообщения: 1916
Зарегистрирован: Сб май 05, 2012 20:24:52
Откуда: KN34PC, Болгария
Контактная информация:

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

Сообщение veso74 »

Бы предпочёл без бутлоадера (если устройство с МК для дома напр.) - не имеет значения загружать код программы через программатор или через usb/ttl конвертер. Но ради универсальности будем использовать некоторые ресурсы и для загрузчика. А в некоторых МК и их системах уствойство видно напр. в Win как внешний диск, хороший вариант для обновления напр.
squirrel5
Родился
Сообщения: 8
Зарегистрирован: Ср дек 07, 2022 14:26:28

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

Сообщение squirrel5 »

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

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

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

А какие программаторы Вы предпочитаете для AVR? Я слышал что AVR сейчас только лишь торговая марка Microchip. Получается, "родным" программатором будет PIC KIT?
OKF
Это не хвост, это антенна
Сообщения: 1405
Зарегистрирован: Вт июн 07, 2011 08:03:18

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

Сообщение OKF »

[uquote="veso74",url="/forum/viewtopic.php?p=4333303#p4333303"]Бы предпочёл без бутлоадера (если устройство с МК для дома напр.) - не имеет значения загружать код программы через программатор или через usb/ttl конвертер.[/uquote]
Конечно, через загрузчик удобнее, если Ардуино с USB - никаких программаторов, никаких кабелей.) И даже, если сидишь не в Ардуино среде, ничто не мешает грузить через Ардуино загрузчик.
veso74
Поставщик валерьянки для Кота
Сообщения: 1916
Зарегистрирован: Сб май 05, 2012 20:24:52
Откуда: KN34PC, Болгария
Контактная информация:

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

Сообщение veso74 »

ОФФ: На столе/или в ящике рядом со столом/ лежат все наверное необходимые устройства для записи, обслуживания (и возможной реанимации) всех исп. МК :). Но для конкретного пользователя - конечно, должно быть проще: с буутлоудер
---
[uquote="squirrel5",url="/forum/viewtopic.php?p=4333316#p4333316"]... А какие программаторы ...[/uquote]
Напр.
- USBasp - самодельной и китайской
- Arduino as IP - к большинству доступных AVR есть вариант
- PICkit2 - для AVR есть метод
- AVR-доктор /или на Atmega8, или в последнее время собираю при необходимости с Arduino - прямо на бредборде/

При написании и настройке кода и демонстрационного устройства я стараюсь не отсоединять пины для программирования. С осторожностью не использовать выводы для другого. Но в большинстве тут без вариантов - либо резисторы, чтоб не мешали, либо с отключением для программирование или тест.. Получается а-ля "Ардуино" на бредборде или макетной плате.
OKF
Это не хвост, это антенна
Сообщения: 1405
Зарегистрирован: Вт июн 07, 2011 08:03:18

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

Сообщение OKF »

[uquote="squirrel5",url="/forum/viewtopic.php?p=4333316#p4333316"]получается загрузить загрузчик на основной МК - Atmega328 напрямую не получится[/uquote]
Как понять? Пины ICSP выведены на разъём, во многих платах даже на отдельный разъём...
Программатор любой, тысячи их.) Преобразователь на FT232RL удобен - 2 в 1-м.

Добавлено after 4 minutes 24 seconds:
[uquote="veso74",url="/forum/viewtopic.php?p=4333333#p4333333"]С осторожностью не использовать выводы для другого. Но в большинстве тут без вариантов - либо резисторы, чтоб не мешали, либо с отключением для программирование или тест..[/uquote] Так нормальные программаторы переводят в третье состояние свои пины. Это совсем не сложно.)
veso74
Поставщик валерьянки для Кота
Сообщения: 1916
Зарегистрирован: Сб май 05, 2012 20:24:52
Откуда: KN34PC, Болгария
Контактная информация:

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

Сообщение veso74 »

Да, ну не тот случай - но частотомер (на PIC) бил на timer1 по внешнем кварце, но должно было быть без cap-нагрузок, а клеммы там программные ...
Вариантов много, и единого решения нет.
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15585
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

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

Сообщение BOB51 »

Для записи как самой прожки, так и загрузчика и комплекта фузов может использоваться "лишняя" нанка переделанная в ардуионISP программатор. Только нужно соответствующие вкладки IDE для тех операций выбирать.
8)
squirrel5
Родился
Сообщения: 8
Зарегистрирован: Ср дек 07, 2022 14:26:28

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

Сообщение squirrel5 »

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

Мне ещё интересно, avrasm2 - это из комплекта AVR Studio? Почему предпочитают этот транслятор, а не avr-gcc?
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15585
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

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

Сообщение BOB51 »

В самой ардуино IDE имеется соответствующее программное обеспечение для данного программатора.
Но оно завязано на IDE, для "автономного" применения не годиться.
Из "сторонних" достаточно много и программ-оболочек и самих схем программаторов под них.
Среда разработки AVR studio имеет два компилятора -
Для проектов под "читсым ассемблером" - avrasm2
и для работы под Си (GCC), в составе которого и имеется как дополнение avr-gcc.
Собственно его используют "продвинутые пользователи" самого GCC.
8)
veso74
Поставщик валерьянки для Кота
Сообщения: 1916
Зарегистрирован: Сб май 05, 2012 20:24:52
Откуда: KN34PC, Болгария
Контактная информация:

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

Сообщение veso74 »

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 КБ) 86 скачиваний
Последний раз редактировалось veso74 Чт дек 08, 2022 17:30:05, всего редактировалось 2 раза.
Ответить

Вернуться в «Arduino»