Обновить

ARM Assembler Editor: Если гора не идет к Магомеду, Магомед идет к горе…

Программирование микроконтроллеров
Внимание! это устаревшая статья! проект в этом виде закрыт.

Если кто не знает мне интересно программирование на ассемблере для микроконтроллеров STM32… И все бы хорошо, да только программировать особо негде…

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

Некоторое время назад (всего 2 года прошло) я сетовал о том что нужен программист для ее написания, но дело с тех пор не сдвинулось…

Поэтому вспомнив знаменитую поговорку: «Если гора не идет к Магомеду, Магомед идет к горе» — решил в итоге начать писать самостоятельно…

Дальше под катом (будут картинки!!)

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

1. Многооконность, ее очень не хватает в FAR, Блокноте и так далее, понятно что 2, 3, 4 окна открытые и размещенные на экране решают проблему, но иногда и этого мало, да и функциональность у них должна быть другая…

Поэтому был написан простенький редактор в SDI интерфейсе с вкладками:



Далее, можете создать новый файл из меню: Файл: Новый, или открыть существующий…



Я создал для примера новый:



2. Для автоматизации некоторых рутиных действий я создал в меню: Мастер некоторые процедуры, которые реализуют их.



3. На этом казалось бы простом шаге я столкнулся с особенностью новых систем Windows — а именно кодировке текста UTF8… И несмотря на первый порыв забить на это и писать все файлы в кодировке cp1251, подумал что в дальнейшем возможно редактор будет интересен и для Линуксоидов (надеюсь не обидное прозвище?) и кодировки возможно у кого то будут KOI8 или еще какие и реализовал работу с теми кодировками которые позволяет стандартная библиотека Лазаруса.

Ну, а для того чтобы редактор знал в какой кодировке будет файл ввел директиву редактора которая указывает в какой кодировке создан файл. В этой кодировке он будет сохраняться на диск, учитывая ее он будет и загружать файлы

Кодировки задаются в меню: Мастер: Задать кодировку



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



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

Меню: Мастер: Задать ядро процессора



пока у меня частично готовы только файлы для Cortex-M4



получаем в нашем файле:



5. Работа с файлами констант (или определений, кому как больше нравится) знать ядро процессора недостаточно, необходимо задать микроконтроллер, это делается в меню: Мастер: Задать микроконтроллер



в нашем файле:



6. Создание заголовка файла. Не то чтобы нужно, но иногда хочется написать какой то комментарий… Меню: Мастер: Добавить описание



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



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



В наш файл добавится:



7. Дальше, наверное самое интересное.

Программирование микроконтроллера это постоянный поиск регистров, и их значений… Все таки искать каждый раз, как я это делал в первых публикациях про программирование STM32 на ассемблере, занятие муторное, понятно, что и на другом языке мы скорее всего будем делать тоже самое, только искать придется в каком нить RM0090 Reference Manual, но мы то пишем редактор с нуля, а значит почему бы не попробовать автоматизировать этот процесс.
Меню: Константы — Добавить константу



Тут все дерево констант, выбирайте нужную!



Вставить можно как выбранную константу (кнопка «Только константу») так и весь пусть констант как выражение для компилятора (кнопка Полный адрес)

В позицию курсора сразу будет добавлена вся строка… Тут правда скриншот при добавлении другой константы (RCC_AHB1ENR)



Демо-файл редактора доступен по ссылке << ссылка удалена >>

Сейчас я нахожусь на шаге описания значений констант (определений) и решил что помощники бы не помешали…

Если кто заинтересовался — прошу в личку. Работа особой квалификации не требует, но времени уходит много…

p.s. редактор пишется дальше, так что будут и другие плюшки (объединение в проект, работа с модулями и т.д.)

p.p.s. теперь мне не нужно объяснять, как я провел новогодние праздники? :-)
Теги:armasmstm32stm32f4
Хабы: Программирование микроконтроллеров
Рейтинг +31
Количество просмотров 7,9k Добавить в закладки 57
Комментарии
Комментарии 74

Похожие публикации

Разработчик встраиваемых систем (Embedded Developer)
от 120 000 до 200 000 ₽ТелеметронСанкт-ПетербургМожно удаленно
C Разработчик (Embedded)
от 100 000 ₽Flipper Devices Inc.МоскваМожно удаленно
Project Manager IT-проектов
от 150 000 ₽Flipper Devices Inc.Москва
Senior Kotlin(web) engineer
от 3 500 до 5 500 $Axell SolutionsМожно удаленно
Backend Developer (Python/GO)
от 180 000 ₽AgentAppМожно удаленно

Лучшие публикации за сутки