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

в 12:12, , рубрики: asm, stm32, STM32F4, программирование микроконтроллеров

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Демо-файл редактора доступен по ссылке yadi.sk/d/EWrZacT3Oi15ZQ

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

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

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

p.p.s. теперь мне не нужно объяснять, как я провел новогодние праздники? :-)

Автор: Горбуков Виталий

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js