Обсуждаем контроллеры компании Atmel.
Ответить

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

Ср окт 25, 2023 14:16:19

AQ29, В случае нормальной IDE вообще не нужно держать отдельную программу для программатора.
И прямо из IDE жмется одна кнопка и в МК улетает все, и фьюзы, и еепром, и прошивка.
И не нужно отдельно настраивать и сохранять в файл.
Просто одно нажатие прямо из IDE.
И как раз для таких случаев и придумана трансляция адресов в разные типы памяти МК.

Очень незначительное и даже сомнительное преимущество.
Для программирования первой платы кликнуть мышкой один раз или вначале запустить программу – это мелочь. А для программирования остальных плат тоже достаточно одного клика мышки.
Кстати, вариант с запуском программы в плане защиты от неправильных действий вроде как лучше.
Как я понял, в вашем случае, если будет подключено не то, что нужно, а кто-то согласно упомянутому закону Мерфи неудачно ткнёт мышкой, можно стереть что-нибудь ценное. Предварительный запуск программы защищает от этого.
Например, стирание файлов тоже не делается одним кликом мышки, вначале появляется предупредительное сообщение.
Фьюзы и прочее в любом случае придётся аккуратно прописывать, а запомнить в файл – это мелочь.

В плане этого разговора, наверно, у программатора можно сделать два режима.
Один для настройщиков, когда на экран выведен минимум необходимой информации: кнопка программирования, путь к файлу настройки, тип программируемой платы и т.д.
Другой для разработчиков, где вывести всё по полной, а там много всего по отладочной информации.

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

Ср окт 25, 2023 14:31:53

В случае нормальной IDE вообще не нужно держать отдельную программу для программатора.
И прямо из IDE жмется одна кнопка и в МК улетает все, и фьюзы, и еепром, и прошивка.

И не обязательно из IDE. Основное время при написании проводится где? В редакторе! Вот там то и нажал кнопку make program и всё оттранслировалось и записалось в МК.
А скакать между окнами, как многие предпочитают, мне лень.

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

Ср окт 25, 2023 15:02:03

OKF, Мне тоже скакать между окнами лень.
А так же лень иметь отдельно редактор, отдельно отладчик, отдельно компилятор. Проще "всё в одном" - и это называется IDE.
В той же Атоллик Студии, к примеру. Создала проект, выбрала камень.
Написала программу. F11 - программа уже в МК. Всё.
В зависимости от настроек - далее либо идет отладка, либо программа просто рабоает в МК.

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

Ср окт 25, 2023 15:05:17

Более того: можно создать рабочую область, а в ней несколько общих проектов, документацию и т. д. Работать сегодня не в IDE - это просто мазохизм.

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

Ср окт 25, 2023 22:08:40

Работать сегодня не в IDE - это просто мазохизм.
Да не мазохизм это, а отсутствие IDE. Или нужных возможностей в существующей IDE, так что приходится переключаться между окнами и прыгать в другие программы. Когда я работал в RSX-11M, так ещё и слова IDE не было. Нет, оно тогда уже было, только означало совсем другое (а именно параллельный интерфейс винчестера :kill: для IBM-PC/AT). Зато редактор К52 оставлял не только предыдущую версию текстового файла, но и пред-предыдущую, и пред-пред-, и так далее, пока не кончится место на диске, :-) что позволяло легко откатиться назад, если вдруг напортачил чего-нибудь в исходниках. А современные редакторы не все умеют сохранять хотя бы одну бэк-версию редактируемого текста. А в IDE такое, как правило, и вовсе не встречается. Поэтому приходится рулить бэкапами вручную, прыгая между окнами. И есть ещё другие вкусные функции, которых тоже нет в некой конкретной IDE под некий конкретный проц (но это не AVR): работа с прямоугольными фрагментами текста, поиск по всему проекту (или по нескольким проектам), и т.д., и т.п., для чего приходится постоянно держать под рукой Far, в котором всё это есть, в нём же и бэкапить. Так что это запросто может быть не "просто мазохизм", а именно отсутствие нормальной IDE.

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

Чт окт 26, 2023 07:37:37

Так себе разговор про IDE в теме про ассемблер... Но современные IDE не только много бекапов могут делать, но и вести учет версий по типу GIT и даже показывать разницу между исходниками сегодня и позавчера (к примеру)...

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

Чт окт 26, 2023 09:02:15

Но современные IDE...

IDE разные бывают. Возьми Ардуино, например. Тоска... Вот и приходится изгаляться.

Добавлено after 1 hour 7 minutes 21 second:
Да не мазохизм это, а отсутствие IDE. Или нужных возможностей в существующей IDE, так что приходится переключаться между окнами и прыгать в другие программы. Когда я работал в RSX-11M, так ещё и слова IDE не было...Так что это запросто может быть не "просто мазохизм", а именно отсутствие нормальной IDE.

"За неимением горничной имеют дворника".) Поддерживаю.

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

Чт окт 26, 2023 11:33:59

... нужных возможностей ... работа с прямоугольными фрагментами текста, поиск по всему проекту (или по нескольким проектам), и т.д., и т.п., для чего приходится постоянно держать под рукой Far, в котором всё это есть.

Я бы заменил в этом высказывании Far на vim.
Да, порог вхождения высоковат, но оно того стоит.

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

Чт окт 26, 2023 13:09:58

vi/vim ндауж, основное его преимущество сейчас это какраз высокий порог вхождения :))) emacs еще можно притащить из полеолита

ide для себя можно смастерить из чего угодно, пользовались же люди борландом а через ide диски подключали, это был практически полноценный ide в современном понимании ... c некоторыми ограничениями связанными с тогдашним уровнем технологий и осознания концепции. теперь есть опенсорсный joe с борлондовскими хоткиями ...
и он и nano и mcedit c низкими порогами входа) и функционалом vim и оконные менеджеры в которых можно запустить все что нужно и связать как угодно, хоть файлами/пайпами/сигналами хоть через dbus ... и gitlab и автодеплой :)

и наконец есть редакторы ориентированные специально на создание ide сред, ну скажем bluefish, atom, geany
и что мешает avr-gcc+qemu+gdb+avrdude ой сори avra+simavr настроить строчки в проджект и дайлог ну или взять уже чейто готовый конфиг для них ?)

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

Чт ноя 02, 2023 18:49:55

OKF, Мне тоже скакать между окнами лень.
А так же лень иметь отдельно редактор, отдельно отладчик, отдельно компилятор. Проще "всё в одном" - и это называется IDE.
В той же Атоллик Студии, к примеру. Создала проект, выбрала камень.
Написала программу. F11 - программа уже в МК. Всё.
В зависимости от настроек - далее либо идет отладка, либо программа просто рабоает в МК.

Один раз нажать на кнопку или два – это мелочь, да и, скорее всего, появится в редакторе кнопка, когда всё за один раз.

Как проводится отладка в этой студии?
Какой размер переменных, какая у них видимость?
Можно ли переменные объявлять в областях памяти RON и SRAM?

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

Чт ноя 02, 2023 22:00:53

Вообще то изначально разговор был о способах доступа к битам конфигурации/защиты из исходного текста для компилятора ассемблера.
Вроде как определенная область адресов ПЗУ позволяет сие сделать.
Я просмотрел документацию на имеющиеся у меня образцы АВРок и нигде намека на адрес байта конфигурации не заметил. Хоть для режима параллельного программирования, хоть для ISP.
Для того есть набор команд, которые внутренний автомат МК интерпретирует для доступа к области конфигурации/защиты.
Именно команды и/или комбинация служебных бит используется, но никак не прямое указание адреса.
Ибо... Такой способ доступа (прямая адресация бит конфигурации и бит защиты) противоречит принципу защиты прошивки от доступа (плагиата или несанкционированной аварийной ситуации).
В принципе понятно, что набор бит расположен в каких-то ячейках, но доступом к ним управляет внутренний автомат МК, а уж никак не софт оболочка в компе или в железе программатора.
Обход вполне вероятно возможен, но это также показывает и путь для взлома и/или случайного доступа который может привести к аварийному отказу устройства.
:roll:

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

Пт ноя 03, 2023 08:47:31

Для того есть набор команд, которые внутренний автомат МК интерпретирует для доступа к области конфигурации/защиты.

А есть хоть какая то разница? :)
"Набор команд" с маской можно интерпретировать как старший адрес байта. По сути он таковым и является.
Ибо... Такой способ доступа (прямая адресация бит конфигурации и бит защиты) противоречит принципу защиты прошивки от доступа (плагиата или несанкционированной аварийной ситуации).

Это, мягко говоря, не так. Сейчас практически все МК имеют общее адресное поле для абсолютно всей памяти, включая EEPROM и фьюзы.
Мало того, фьюзы отлично программируются из кода точно так же, как и остальной программный флеш. И никакого отношения все это не имеет к "принципу защиты".
Все дело в том, что любой участок флеша, включая фьюзы, программируются НУЛЯМИ, а единицы получаются в результате стирания. То есть для защиты кода в соответствующих битах пишутся нули, а стирание этих бит объединено со стиранием всего флеша. Вот и вся "хитрость". :)
Более того, в современных МК битов защиты локально не существует. Это раскиданные по всем страницам памяти слова защиты, которые работают как логический И. То есть невозможно стереть одно слово локов даже если вскрыть корпус и стирать УФ через маску.

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

Пт ноя 03, 2023 12:31:46

Если бы не было "разницы" между спецкодом команды и адресом ячейки, то вполне можно было бы использовать команды LPM/SPM с прямым указанием адреса ячейки.
У АВРок в данной ситуации не совсем так...
Даже относительно байт с сигнатурой кристалла и калибровочными ячейками - адреса то у них совпадают с соответствующими адресами ПЗУ...
Скорее всего там таки какой-то "внутрисхемный автомат" доступом заведует под управлением кодов соответствующих команд.
Иначе было бы неплохо - спецмакрос с LPM/SPM на последней странице, где при запуске программы записыаются заданные фузы и затем участок "самозатирается".
При том, что такой макрос просто записывается в тело исходника обычными средствами компилятора.
:roll:
Вполне возможно, что новых семействах производитель будет унифицировать размещение ресурсов.
Но пока что "старые" для команд LPM/SPM имеют только функционал чтения бит конфигурации.
Да и в более навороченных МК функция оперативного реконфигурирования по ходу исполнения программы и "базовой" конфигурации часто разделена.
8)

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

Пт ноя 03, 2023 13:40:54

BOB51, речь шла не о "оперативного реконфигурирования по ходу исполнения программы".
как я понял КРАМа, софт или "железо" транслируют прямые адреса в соответствующие команды "внутрисхемного автомата" чтения и записи фьюзов.
а из самой прошивки такое абсолютно невозможно.

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

Пт ноя 03, 2023 16:30:06

Если бы не было "разницы"

Вы копаете не в ту сторону.
Я выше приводил "спецкоманды" для записи во флеш, фьюзы и локи. Эти "спецкоманды" - это просто первый байт последовательности прошивки одного байта в ЛЮБОЕ МЕСТО МК.
Поэтому маска положенная на "спецкоманду" дает ни что иное, как старший байт ЕДИНОГО АДРЕСА для всех областей флеша. И совершенно безразлично как там внутри работает автомат. Суть абстрагируется в программаторе. Любой виртуальный адрес в хексе может быть интерпретирован программатором в любую "спецкоманду", а по факту определенную маску старшего адреса.

Добавлено after 4 minutes 34 seconds:
Да и в более навороченных МК функция оперативного реконфигурирования по ходу исполнения программы и "базовой" конфигурации часто разделена.

Во первых нет. Во вторых, это не требуется от слова совсем.
Программирование из исполняемого кода всех областей флеша (программной, данных и фьюзов) является стандартной фичей всех современных МК. Делается это совершенно унифицировано - только разными полями адресов..

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

Пт ноя 03, 2023 16:34:00

AQ29 писал(а):Как проводится отладка в этой студии?
Какой размер переменных, какая у них видимость?
Можно ли переменные объявлять в областях памяти RON и SRAM?

Атоллик студия - это для СТМ32. Я там не заморачиваюсь выбором, куда положить переменную, в РОН или в ОЗУ. Тем более ОЗУ в стмках завались. и шина 32 бита.
И отладка там работает прекрасно, можно залезть в любую переменную, в любую ячейку ОЗУ, в любой регистр периферии... Т.е. клацая мышкой бит регистра в окне студии можно помигать диодиком на железной плате.
Но я привела Атоллик студию как пример.
Для АВРок я спаяла клон программатора МКII от Гротта - и тоже прекрасно АВРки программируются по ISP прямо из студии одной кнопкой. Но без отладки, для отладки ЖТАГ нужен или авр-овский однопроводный отладчик. У меня нету этого, поэтому не заморачиваюсь.

Марк же вел разговор о том, что у него по ЖТАГУ работает отладка и его софт и оборудование позволяют странслировать верхние адреса в программирование фузов или еепромки. Только нужно знать адреса.
И для этого не нужно настраивать отдельную програмку и конфиг для нее. Все делается из IDE.

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

Пт ноя 03, 2023 16:40:03

Все таки вернее будет вести речь о конечной обработке внутренним автоматом в МК, а не программно-аппаратной начинкой программатора.
Мы ведь конкретно не знаем о том, какие мысли у разработчиков были насчет планировки областей доступа и применяемых там форматов.
Да и побайтовая запись при общем постраничном режиме более подходит к области ЕЕПРОМ, чем к ПЗУ. Излишне создавать два различных аппаратных механизма для записи в ПЗУ ради нескольких байт.
Пока что это лишь наши предположения с частичным экспериментальным подтверждением "методом научного тыка".
Штука конечно интересная, но пока "на стадии эксперимента"...
:roll:

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

Пт ноя 03, 2023 16:50:03

Пока что это лишь наши предположения с частичным экспериментальным подтверждением "методом научного тыка".
Штука конечно интересная, но пока "на стадии эксперимента"...
:roll:

:facepalm:
Вы можете отвлечься от своего шаблона?
Нет никаких экспериментов. Все о чем я тут сказал строго соответствует мануалу программирования для АВР.
При программировании ЛЮБОГО байта (программного флеша, флеша данных, фьюзов и локов) формат данных ИДЕНТИЧЕН.
Всего засылается ЧЕТЫРЕ БАЙТА. Первый определяет направление передачи и область (программа младший байт, программа старший байт, еепром, фьюзы или локи). Два последующих - адрес внутри области. И последний - данные для прошивки.
Таким образом, первый байт с определенной маской будет тем самым старшим байтом ОБЩЕГО АДРЕСА.
Вот и все.
Таким образом, КОМПИЛЯТОРОМ в хексе для каждой области выбирается виртуальный адрес, который контроллером ПРОГРАММАТОРА преобразуется в маску для первого байта. Так работает пиккит4 вместе с мплабх.
Работа автомата внутри таргета вообще не имеет никакого значения. Все заканчивается на протоколе заливки.

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

Пт ноя 03, 2023 18:48:41

КРАМ, возьмем, к примеру, EEPROM.
для чтения первый байт равен 10100000. а для записи первый байт равен 1100 0000.
какая маска из общего адреса может сделать такие разные 2 байта?
и по фьюзам ты не прав. у фьюзов нет 2-х байт адреса. какие фьюзы писать или читать, определяется первыми двумя байтами. третий байт - "пустой".
и тут опять такой же вопрос - как из общего адреса маской можно получить 2 байта конкретных фьюзов? причем, совершенно разных 2 байта и для записи и для чтения?
лично я так тебя понял, что пиккит4 вместе с мплабх пользуется не масками, а тот виртуальный адрес заменяет на правильные байты для каждого действия.

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

Пт ноя 03, 2023 21:34:53

для чтения первый байт равен 10100000. а для записи первый байт равен 1100 0000.
какая маска из общего адреса может сделать такие разные 2 байта?

Прикольно наблюдать, как народ фантазирует по мотивам собственной профессиональной деформации... :)))
То есть представить себе маску на адрес 0b10011111 очень сложно?
А кроме того, смещение адреса может быть разным для чтения и записи.
Старичок, внутренняя структура дешифраторов адреса должна носить нетактируемый характер. То есть это просто логические вентили, а не условия if-then...
И таки все без исключения посылки являются четырехбайтными - "пустых байтов" не бывает. Они всегда имеют значения (даже нулевые), а значит могут быть адресом в линейном пространстве адресов.
Ответить