Ознакомился с документацией на Atmega 328, но остались вопросы: 1) Загружается ли код загрузчика при каждой прошивке МК? То есть, добавляется ли код загрузчика к коду проекта на этапе компиляции, линковки или как-то иначе? 2) Может ли код загрузчика при исполнении на МК изменить слова конфигурации (фьюзы, локи и т.п.)? Или это можно сделать только внешним прошиванием?
То есть, испортить загрузчик не так-то просто? У меня есть опасения касающиеся возможной порчи загрузчика при использовании Arduino без IDE. Но очень хочется освоить.
Я ещё поинтересуюсь: что такое RWW (Read-While-Write) и NRWW (No Read-While-Write) секции? Загрузчик, получается, всегда в NRWW секции?
F_CPU? Скорость ядра вроде бы выбирается в Low Fuse Byte - CKSEL?
Ещё интересует происходящее с таблицей векторов прерываний при исполнении кода загрузчика и кода приложения? У загрузчика свой IVT?
Может быть подскажете как правильно прошить МК через avr-dude и не запортить загрузчик?
То есть, испортить загрузчик не так-то просто? У меня есть опасения касающиеся возможной порчи загрузчика при использовании 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
Вы правы, тактирование микропроцессора выбирается фьюзами, НО её можно еще уменьшить, программно включив делитель.
Качественное и безопасное устройство, работающее от аккумулятора, должно учитывать его физические и химические свойства, профили заряда и разряда, их изменение во времени и под влиянием различных условий, таких как температура и ток нагрузки. Мы расскажем о литий-ионных аккумуляторных батареях EVE и нескольких решениях от различных китайских компаний, рекомендуемых для разработок приложений с использованием этих АКБ. Представленные в статье китайские аналоги помогут заменить продукцию западных брендов с оптимизацией цены без потери качества.
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
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, не разрешено читать из раздела загрузчика.)
Правильно ли я понимаю: при покупке нового МК он полностью чистый, без загрузчика? Или в нём уже прошит "заводской" вариант?
Как загрузчик Arduino понимает что нужно делать: "записать код" или "исполнять код"?
Я поначалу не заметил, что тема в разделе Ардуино. Вы же спрашиваете про AVR, без конкретики. В самом новом МК загрузчика нет - есть на плате Ардуино. Загрузчик записывает код, а затем уже передаёт ему исполнение с 0-го адреса. Если, же команд от Ардуино IDE нет на загрузку, то просто запускает код с 0-го адреса.
Кстати, сейчас у Optiboot фишка прикольная (не знаю на сколько новая). После рестарта она проверяет его причину. Если причина включение питания, то сразу переход на прошивку минуя стадию ожидания новой прошивки. Немного удобнее стало с устройствами на основе Arduino.
Бы предпочёл без бутлоадера (если устройство с МК для дома напр.) - не имеет значения загружать код программы через программатор или через usb/ttl конвертер. Но ради универсальности будем использовать некоторые ресурсы и для загрузчика. А в некоторых МК и их системах уствойство видно напр. в Win как внешний диск, хороший вариант для обновления напр.
Я посмотрел схему платы и понял так: Atmega16U - это не программатор, а просто мост USB->COM(TTL). Линия DTR используется для сброса МК со стороны ПК. После сброса загрузчик ждёт команды, если их нет, то стартует наше приложение.
Кстати, получается загрузить загрузчик на основной МК - Atmega328 напрямую не получится, а использовать плату Arduino в качестве программатора - это возможно. М-м, как-то сложно.
А какие программаторы Вы предпочитаете для AVR? Я слышал что AVR сейчас только лишь торговая марка Microchip. Получается, "родным" программатором будет PIC KIT?
Бы предпочёл без бутлоадера (если устройство с МК для дома напр.) - не имеет значения загружать код программы через программатор или через usb/ttl конвертер.
Конечно, через загрузчик удобнее, если Ардуино с USB - никаких программаторов, никаких кабелей.) И даже, если сидишь не в Ардуино среде, ничто не мешает грузить через Ардуино загрузчик.
ОФФ: На столе/или в ящике рядом со столом/ лежат все наверное необходимые устройства для записи, обслуживания (и возможной реанимации) всех исп. МК . Но для конкретного пользователя - конечно, должно быть проще: с буутлоудер ---
Напр. - USBasp - самодельной и китайской - Arduino as IP - к большинству доступных AVR есть вариант - PICkit2 - для AVR есть метод - AVR-доктор /или на Atmega8, или в последнее время собираю при необходимости с Arduino - прямо на бредборде/
При написании и настройке кода и демонстрационного устройства я стараюсь не отсоединять пины для программирования. С осторожностью не использовать выводы для другого. Но в большинстве тут без вариантов - либо резисторы, чтоб не мешали, либо с отключением для программирование или тест.. Получается а-ля "Ардуино" на бредборде или макетной плате.
получается загрузить загрузчик на основной МК - Atmega328 напрямую не получится
Как понять? Пины ICSP выведены на разъём, во многих платах даже на отдельный разъём... Программатор любой, тысячи их.) Преобразователь на FT232RL удобен - 2 в 1-м.
С осторожностью не использовать выводы для другого. Но в большинстве тут без вариантов - либо резисторы, чтоб не мешали, либо с отключением для программирование или тест..
Так нормальные программаторы переводят в третье состояние свои пины. Это совсем не сложно.)
Да, ну не тот случай - но частотомер (на PIC) бил на timer1 по внешнем кварце, но должно было быть без cap-нагрузок, а клеммы там программные ... Вариантов много, и единого решения нет.
Для записи как самой прожки, так и загрузчика и комплекта фузов может использоваться "лишняя" нанка переделанная в ардуионISP программатор. Только нужно соответствующие вкладки IDE для тех операций выбирать.
Для записи как самой прожки, так и загрузчика и комплекта фузов может использоваться "лишняя" нанка переделанная в ардуионISP программатор. Только нужно соответствующие вкладки IDE для тех операций выбирать.
Вот это уже интереснее. Наверняка такое решение уже где-то есть: записать в Arduino приложение-программатор, которое превратит Arduino в AVR-программатор. Тогда, наверное, можно будет прошивать не только 328-й МК?
Мне ещё интересно, avrasm2 - это из комплекта AVR Studio? Почему предпочитают этот транслятор, а не avr-gcc?
В самой ардуино IDE имеется соответствующее программное обеспечение для данного программатора. Но оно завязано на IDE, для "автономного" применения не годиться. Из "сторонних" достаточно много и программ-оболочек и самих схем программаторов под них. Среда разработки AVR studio имеет два компилятора - Для проектов под "читсым ассемблером" - avrasm2 и для работы под Си (GCC), в составе которого и имеется как дополнение avr-gcc. Собственно его используют "продвинутые пользователи" самого GCC.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 13
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения