Главная » Хабрахабр » ARM Assembler Editor: Если гора не идет к Магомеду, Магомед идет к горе…

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


Оставить комментарий

Ваш email нигде не будет показан
Обязательные для заполнения поля помечены *

*

x

Ещё Hi-Tech Интересное!

Ускоряем неускоряемое или знакомимся с SIMD

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

Kонсенсус в Exonum: как он работает

ExonumTM — это наш открытый фреймворк для создания приватных блокчейнов. Сегодня мы расскажем, как работает его алгоритм консенсуса. Изображение: Bitfury Зачем нужны алгоритмы консенсуса Прежде чем перейти к рассказу о том, как устроен алгоритм консенсуса ExonumTM, поговорим о том, зачем ...