Разместить здесь вашу рекламу


Редактор ассемблера для ARM микроконтроллеров для компилятора gnu as. Старт

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Итак, ассемблер вас все таки заинтересовал, может быть для написания каких то программ для cortex-m0 с целью уместить побольше, а может быть для написания каких то модулей для программ на другом языке, вариантов где это можно сделать у вас будет просто огромное количество - все известные среды поддерживают такую возможность...

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

Если у вас такой опыт был - то вы уже понимаете о чем я пишу и что меня в итоге побудило к написанию редактора более приспособленного к реальным нуждам.

Итак, сразу закрепим:

  • то что я написал является редактором для себя, и реализовывалась та или иная функциональность именно из тех идей которые я для себя выделил

  • я с удовольствием буду писать на ассемблере в любом другом редакторе, как только его найду, если он будет иметь большую чем в реализованном мной редакторе функциональность

  • поскольку редактор написан самостоятельно, то эту самую функциональность я еще дополняю, расширяю, изменяю, и даже удаляю

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

    Итак немного о возможностях редактора:

  • подсветка вводимого кода, и когда я говорю подсветка - я имею ввиду подсветку команд ассемблера с полным разбором текста команды, теперь вы сможете еще на этапе ввода команды увидеть грубые ошибки, я не видел ни одного редактора из обычно используемых где это было бы реализовано, например вы просто не сможете ввести аргументы команды если такой формат не предусмотрен, здесь ошибки нет

а вот здесь написана какая то чушь

  • работа с символами проекта

    редактор обрабатывает проект целиком, таким образом вы всегда можете выбрать (или просто посмотреть) доступные символы объявленные глобально, в текущем или включаемом файле, если использованы библиотечные файлы определений (либо вы придерживаетесь определенных правил) - то символы могут быть сгруппированы в виде дерева

Причем вы будете видеть именно те символы которые доступны из текущего местоположения, а не все подряд, ну за некоторым исключением (например не обрабатываются пока символы из файла сборки)

  • возможность задавать варианты значений для того или иного объявленного символа

    это удобно при использовании каких то библиотек, да и при написании собственного кода когда надо заранее определить возможные значения

    например уже сейчас вы можете включать или выключать необходимые GPIO в модуле rcc_ahb1enr_gpio_set

по нажатию кнопки "F4 Изменить", или из контекстного меню

и видим все возможные варианты значений настройки

Да, да, уже слышу из комментов: да поставить 1 или 0 вообще то руками проще, согласен, но возможны ведь не только 1 или ноль, но и более сложные варианты, например настраиваем пин GPIO, и нужно поменять MODER пина, что мы делаем в этом случае - ну хорошо конечно если мы уже знаем все варианты настроек, а если нет ? тогда открываем определение MODER и смотрим все варианты значений... потом копируем нужное, и вернувшись назад вставляем новое значение, так ?

меня это не устроило, так что опять "F4 Изменить" или из контекстного меню

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

  • возможность задания описания для модулей или подпрограмм

опять сделано для того чтобы экономить время,

  • простое добавление необходимых файлов и модулей в ваш проект

Естественно вы можете добавлять и свой код в библиотеку, мне это показалось важным, так как надоело собирать нужные части по разным программам в исходниках, неудобно, да и зачастую код при использовании изменяешь, поэтому теперь можно добавить какую то базу и потом при необходимости ее править в своем проекте

  • реализована компиляция проекта прямо из среды

    Особых изысков нет, просто компиляция, сборка, и генерация служебных файлов

  • реализована прошивка вашего устройства при помощи ST-Link или J-Link (у меня китайцы, второй это перепрошитый ST-Link V2)

J-Link через OpenOCD сервер, к сожалению пока реализовано только с учетом замены нативной dll от segger

  • отладка при помощи OpenOCD

писать программу на любом языке и не иметь возможности ее исполнять в режиме отладки очень не удобно, поэтому сделал небольшую функциональность и для этого, это достаточно новая функциональность поэтому реализованы еще не все задумки

исполняемый код подсвечивается и в скомпилированном тексте программы

можно устанавливать точки останова, исполнять по шагам, есть исполнение подпрограмм за один шаг

Есть возможность просматривать регистры настройки устройств

Памяти

Работа над wathpoint пока отложена, тоже буду делать

  • реализован импорт шрифта из MCU Font Generator, вернее из файлов которые он генерит для AVR преобразовываю в стандарт gnu as, ну и формат упрощаю

  • ну и заодно сделан импорт бинарных файлов в прошивку, есть много способов добавить, это просто один из...

В общем функциональность зачастую добавляется когда в ней возникает необходимость

В редакторе реализован простейший форматер текста

Работает не идеально в автоматическом режиме, но готовый текст форматирует приводя более менее к приличному виду

Обсуждать, предлагать, сообщать о глюках, и прочее в группе ВКонтакте: https://vk.com/club200545792 или в Телеграмм: https://t.me/ArmAsmEditor

там же можно скачать архив с редактором, он находится в закрепленном сообщении

пока в редакторе активно описывается STM32F4, но планируется описание и других микроконтроллеров (как только найдутся те кто их использует и готов помочь с описанием периферии)

ну и на ютуб канале ( https://www.youtube.com/channel/UCLYm7b8Z5TiFcxD47BzaHPg плейлист GNU ARM ASM EDITOR) можно посмотреть видео о той или иной функциональности редактора, правда там пока обучающих видео нет, хотя планируется.

если вам все еще интересно подписывайтесь, дальше пойдут статьи о том с чего начать создание проекта, помниться раньше писали мигалку в блокноте, теперь напишем ее в редакторе

Источник: https://habr.com/ru/post/542420/


Интересные статьи

Интересные статьи

О важности саморазвития основателей в быстрорастущих стартапах написано немало. Как правило, тексты подобной тематики посвящены роли CEO. Общие советы по лидерству могут быть полезны ...
В 1С-Битрикс: Управление сайтом (как и в Битрикс24) десятки, если не сотни настраиваемых типов данных (или сущностей): инфоблоки, пользователи, заказы, склады, форумы, блоги и т.д. Стр...
Существует традиция, долго и дорого разрабатывать интернет-магазин. :-) Лакировать все детали, придумывать, внедрять и полировать «фишечки» и делать это все до открытия магазина.
Словосочетание “российский футбол” пока сравнительно редко вызывает у соотечественников чувство гордости. Спортивные неудачи российской сборной и клубов за последние десятилетия успели превратить...
Много лет меня преследовал этот зуд — попытки найти «идеальный» текстовый редактор для совместной работы. Но не просто любой текстовый редактор, который поддерживает совместную работу, о нет,...