Внимание! это устаревшая статья! проект в этом виде закрыт.
Если кто не знает мне интересно программирование на ассемблере для микроконтроллеров 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. теперь мне не нужно объяснять, как я провел новогодние праздники? :-)
Если кто не знает мне интересно программирование на ассемблере для микроконтроллеров 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. теперь мне не нужно объяснять, как я провел новогодние праздники? :-)