Ассемблер (ASM) для AVR в вопросах и ответах

Обсуждаем контроллеры компании Atmel.
Ответить
Друг Кота
Аватара пользователя
Сообщения: 15778
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

С тем GNUассемблером (для АВР) чаще встречаются те, что под GCC для АВРок работают.
Или кому надобно вставки для ардуино (и/или других семейств, поддерживаемых GNU Си) на ассемблере делать.
8)
Реклама
Друг Кота
Аватара пользователя
Сообщения: 25862
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Сообщение КРАМ »

Внезапно вопрос. Имею некое изделие чужого САНКЦИОНИРОВАННОГО авторства, которое нужно реанимировать (повторить изготовление) на ATmega165P. Проект написан в Студии на avrasm2. Я его пересобрал для MPLABX, благо с Божьей помощью и посредством PICkit4 через JTAG можно спокойно дебажить код.
Но есть нюанс. Я не обнаружил (видимо херово искал) в документации синтаксис инициализации ЕЕПРОМ в АСМ коде.
Потому и вопрос.
ЗЫ. Заодно может кто знает как и фьюзы включить в проект? А то MPLABX типа генерит код фьюзов для avrasm2, но с каким то странным файлом в инклюде - pega165p.inc и синтаксисом неизвестного генезиса.
Реклама
Друг Кота
Аватара пользователя
Сообщения: 20117
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

Сообщение Gudd-Head »

Так а в чём вопрос-то?

З.Ы.: я в Студии фьюзы прошивал вручную, выставляя нужные галочки.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Друг Кота
Аватара пользователя
Сообщения: 25862
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Сообщение КРАМ »

Вопрос в том, как прошить еепром. У меня из инструментов есть только ПИККИТ4, то есть я могу работать только с МПЛАБ. МПЛАБ генерирует для еепрома отдельный файл в формате хекса - .eep (я понял как ЕЕПРОМ инициализировать в исходнике - в секции .eseg). Но я не вижу в среде как этот файл залить в чип.
Про фьюзы
Как прошить фьюзы в ручном режиме я знаю. Но это неудобно. Обнаружив, что МПЛАБ генерит код для фьюзов, я решил спросить кто-что об этом знает.
Реклама
Эиком - электронные компоненты и радиодетали
Друг Кота
Аватара пользователя
Сообщения: 20117
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

Сообщение Gudd-Head »

В студии была отдельная кнопка для выбора файла и заливки данных в ЕЕПРОМ.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Реклама
Друг Кота
Аватара пользователя
Сообщения: 15778
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

У АВРок в отличии от ПИКов нет прямого доступа к фузам из файла исходника, аналогичного тому, что есть в шапке ПИКовых...
Прошивку с еепром из софт-оболочек "любительских" программаторов делать можно - там и окно кода и окно еепром и окошко фузов.
Систему комплектной прошивки делает ардуиноIDE при загрузке бутлоадера (для выбранной "платформы" и установленных в окне настроек/опций параметрах) - но как там все "обустроено" надо в самой IDE (и настройках используемой софтинки -аврдуде) копаться.
:roll:
Реклама
Друг Кота
Аватара пользователя
Сообщения: 25862
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Сообщение КРАМ »

[uquote="BOB51",url="/forum/viewtopic.php?p=4487421#p4487421"]У АВРок в отличии от ПИКов нет прямого доступа к фузам из файла исходника, аналогичного тому, что есть в шапке ПИКовых...[/uquote]
Есть все у АВР. Просто Атмел зачем то создал такую ситуацию в ПО. А поскольку ПО теперь пишет Микрочип, то и расклады стали другими. Иначе МПЛАБ не генерил бы код для фьюзов, а в настройках четвертого ПИККИТа возможность прошивки фьюзов управляема.

Добавлено after 3 minutes 8 seconds:
[uquote="BOB51",url="/forum/viewtopic.php?p=4487421#p4487421"]Прошивку с еепром из софт-оболочек "любительских" программаторов делать можно[/uquote]
Мне не нужны любительские программаторы. У меня вообще работа идет через JTAG. Это позволяет иметь нормальную внутрисхемную отладку. Поэтому я произвольно меняю фьюзы и контроллер никогда не лочится.
Потрогал лапой паяльник
Сообщения: 314
Зарегистрирован: Пн окт 26, 2020 08:37:51
Откуда: г.Волгоград

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

[uquote="BOB51",url="/forum/viewtopic.php?p=4487421#p4487421"]....надо в самой IDE (и настройках используемой софтинки -аврдуде) копаться. :roll:[/uquote]
У меня получилось из программы на Lazarus шить и фьюзы и bootloader и прошивку с помощью скрытого запуска avrdude. Думаю и с EEPROM все также выйдет.
Если кому надо, могу скинуть строки командные. Только аккуратнее со фюьзами - "кирпичил" уже контроллер.
ФУОЗ на платформе Ардуино: https://radiokot.ru/forum/viewtopic.php ... 6#p4366626
ВК - "ФУОЗ на микроконтроллере Atmega328P (МПСЗ)"
Друг Кота
Аватара пользователя
Сообщения: 25862
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Сообщение КРАМ »

[uquote="С.Н.",url="/forum/viewtopic.php?p=4487448#p4487448"]Только аккуратнее со фюьзами - "кирпичил" уже контроллер.[/uquote]
Поэтому нужно работать с нормальными программаторами. Чтобы не кирпичить имущество. ПИККИТ4 позволяет сохранять доступ к чипу при любом раскладе.

Добавлено after 4 minutes 43 seconds:
[uquote="С.Н.",url="/forum/viewtopic.php?p=4487448#p4487448"]Думаю и с EEPROM все также выйдет.[/uquote]
На самом деле у меня есть простой выход. Можно на входе в код затестить ЕЕПРОМ на предмет "virginity" и принять решение по поводу его инициализации из кода дефолтными значениями.
Потрогал лапой паяльник
Сообщения: 314
Зарегистрирован: Пн окт 26, 2020 08:37:51
Откуда: г.Волгоград

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

[uquote="КРАМ",url="/forum/viewtopic.php?p=4487459#p4487459"]... ПИККИТ4 позволяет сохранять доступ к чипу при любом ....[/uquote]
Так ведь речь шла про AVR. Не понял я.
ФУОЗ на платформе Ардуино: https://radiokot.ru/forum/viewtopic.php ... 6#p4366626
ВК - "ФУОЗ на микроконтроллере Atmega328P (МПСЗ)"
Друг Кота
Аватара пользователя
Сообщения: 25862
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Сообщение КРАМ »

Просто вы не в курсе, что пиккит4 яаляется штатным программатором отладчиком для АВР. Ведь АВР сейчас является Микрочипом...
Потрогал лапой паяльник
Сообщения: 314
Зарегистрирован: Пн окт 26, 2020 08:37:51
Откуда: г.Волгоград

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

[uquote="КРАМ",url="/forum/viewtopic.php?p=4487474#p4487474"]Просто вы не в курсе, что пиккит4 яаляется штатным программатором отладчиком для АВР. Ведь АВР сейчас является Микрочипом...[/uquote]
Надо отметить, что на сайте продавца https://www.chipdip.ru/product/mplab-pi ... t-debugger нет упоминая ядра atmega, про которую шла речь. Ну хорошо, что у Вас есть такой PICKat.
ФУОЗ на платформе Ардуино: https://radiokot.ru/forum/viewtopic.php ... 6#p4366626
ВК - "ФУОЗ на микроконтроллере Atmega328P (МПСЗ)"
Друг Кота
Аватара пользователя
Сообщения: 15778
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

Пиккит4 поддерживает новые семейства АВРок - но там и протокол обмена другой. Да и достать их заметно заморочнее.
А вот касательно "старых" - там вполне любительские версии с прошивкой справлялись.
Другое дело, ежли использование "внутрисхемной отладки" жестко необходимо... Но то уж "на любителя" и полный конфликт с "импортозамещением".
8)
Друг Кота
Аватара пользователя
Сообщения: 25862
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Сообщение КРАМ »

Прикольно обсуждать неимпортнозамещенный чип и рвать на себе волосы по поводу происхождения программатора...
Вообще фиолетово.
Кстати, цена в чипедипе не является референсной. Так то он на Директе 60 баксов.
akl
Друг Кота
Сообщения: 4470
Зарегистрирован: Пт мар 07, 2008 06:54:43
Откуда: Ижевск

Сообщение akl »

[uquote="КРАМ",url="/forum/viewtopic.php?p=4487344#p4487344"]...не обнаружил в документации синтаксис инициализации ЕЕПРОМ в АСМ коде...[/uquote] Директивой .ESEG типа

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

.ESEG
.DB 'П','р','о','б','а'
КРАМ писал(а):...Можно на входе в код затестить ЕЕПРОМ на предмет "virginity" и принять решение по поводу его инициализации из кода дефолтными значениями.
Имея дефолтные значения, можно пожертвовать 1 из минимум 100'000 циклов записи и запрограммировать fuse_bit EESAVE, чтобы каждый раз при стирании не давать программатору трогать еепром.
Друг Кота
Аватара пользователя
Сообщения: 25862
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Сообщение КРАМ »

[uquote="akl",url="/forum/viewtopic.php?p=4487626#p4487626"].ESEG[/uquote]
Это я уже обнаружил. Проблема переместилась в другую плоскость. .eseg транслируется не в .hex, а в .eep. И этот самый .eep непонятно куда девать в MPLABX. Автоматически он чип не прошивает. Инструмента для Студии у меня нет и неудобно переключаться между двумя тулчейнами только для EEPROM-а. Поэтому пока не разберусь, напишу проверку чистого EEPROM-а и его инициализацию в начале кода...
Ну и заодно переделал объявления переменных из .equ в нормальные

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

.dseg
   .org  0x0100
var: .byte 1
Теперь они видны в Watch при дебаге.

[uquote="С.Н.",url="/forum/viewtopic.php?p=4487475#p4487475"]Надо отметить, что на сайте продавца .... нет упоминая ядра atmega, про которую шла речь.[/uquote]
Это не самый лучший стиль - смотреть ТТХ товара у продавца на сайте.
https://cdn.sparkfun.com/assets/e/b/a/7/b/DS-15797.pdf
Изображение
Друг Кота
Аватара пользователя
Сообщения: 25862
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Сообщение КРАМ »

Милостивые государи и милостивые государыни! Спешу известить вас о том, что не без помощи технического сообщества обнаружил заветные два числа, которые являются адресным смещением еепрома и фьюзов.
Поэтому нативный доступ к eeprom-у и к фьюзам осуществляется в самом конце программного сегмента (cseg) посредством прибивания гвоздями директивы:

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

; инициализация EEPROM
   .org 0x810000
.db ..... байты последовательно по адресам EEPROM от нулевого адреса .....
; инициализация фьюзов
   .org 0x820000
.db ..... байты последовательно в порядке определенном inc-файлом примененного МК для фьюзов .....
Друг Кота
Аватара пользователя
Сообщения: 20117
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

Сообщение Gudd-Head »

Т.е. за один раз можно зашить память программ и фьюзы?
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Друг Кота
Аватара пользователя
Сообщения: 25862
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Сообщение КРАМ »

Да, можно.
Но есть один нюанс.
С одним org-ом по этим адресам нужно писать не более двух байт. Иначе линкер глючит.
Ну и ассемблер вываливает варнинги, что типа пытаешься определить область вне флеша. Но на это не нужно обращать внимание.
Модератор
Аватара пользователя
Сообщения: 19100
Зарегистрирован: Сб авг 14, 2010 15:05:51
Откуда: г. Озерск, Челябинская обл.

Сообщение Starichok51 »

КРАМ, это для каких МК такие длинные адреса?
например, в АТмега8 я не могу задать трехбайтовый адрес.
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Ответить

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