Pull to refresh
33
0

никто

Send message

Создание нового языка для микроконтроллеров

Level of difficulty Easy
Reading time 4 min
Views 13K

Некоторое время я был занят написанием простенького редактора для языка ассемблер под ARM Cortex семейства микроконтроллеров (подробности в моих статьях), и вот сейчас, поднакопив некоторый опыт как в части самого ассемблера так и способов написания программ в них решился на написание нового редактора.

Плюс еще подоспел интерес к RISC‑V архитектуре и было принято решением делать редактор который смог бы редактировать программы на ассемблере для различных архитектур (в том числе может быть и с лагеря AVR кто нить захочет присоединиться).

В общем подумалось: а что если попытаться создать asm‑base'д язык программирования который при выборе архитектуры просто бы транслировался автоматически в асм инструкции выбранной платформы?

Читать далее
Total votes 33: ↑24 and ↓9 +15
Comments 97

Assembler Editor Plus: Добавление нового микроконтроллера

Reading time 3 min
Views 3.8K

Эта статья немного забегает вперед, и поясняет каким образом можно добавить настройки в редактор для других ARM микроконтроллеров.

Дальше будет много картинок.

Читать далее
Total votes 7: ↑5 and ↓2 +3
Comments 0

Assembler Editor Plus: Использование модулей

Reading time 6 min
Views 3.2K

Продолжение цикла статей про редактор ассемблера для ARM микроконтроллеров под компилятор GNU AS

предыдущая статья Assembler Editor Plus: Первый проект

под катом будет скорее всего много картинок!

Читать далее
Total votes 4: ↑4 and ↓0 +4
Comments 1

Assembler Editor Plus: Первый проект

Reading time 4 min
Views 5.8K

Продолжение цикла статей про редактор ассемблера для ARM микроконтроллеров под компилятор GNU AS.

Предыдущая статья Assembler Editor Plus: Установка

Картинки под катом!

Читать далее
Total votes 7: ↑7 and ↓0 +7
Comments 0

Assembler Editor Plus: Установка

Reading time 3 min
Views 6.6K

Продолжение цикла статей.

Предыдущая статья: Редактор ассемблера для ARM микроконтроллеров для компилятора gnu as. Старт

Внимание! далее много картинок.

Читать далее
Total votes 15: ↑12 and ↓3 +9
Comments 0

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

Reading time 4 min
Views 8.3K

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

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

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

добавлено по пожеланиям из комментариев: платформа запуска приложения Windows

Дальше очень много картинок!

Читать далее
Total votes 36: ↑35 and ↓1 +34
Comments 27

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

Reading time 3 min
Views 9.1K
Внимание! это устаревшая статья! проект в этом виде закрыт.

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

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

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

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

Дальше под катом (будут картинки!!)
Читать дальше →
Total votes 43: ↑37 and ↓6 +31
Comments 74

ARM: GNU AS: Проект: Среда для программирования на ассемблере (Самодел на Delphi)

Reading time 6 min
Views 9.6K
Начиная программировать на языке ассемблера для микроконтроллеров ARM первое, с чем вы столкнетесь — это отсутствие какой либо среды для программирования (c первым проектом, программами для компиляции и сборки я уже разбирался). Причем бытует мнение, что для ассемблера ничего кроме блокнота и не нужно (максимум, «для гурманов» сообщество предложит использовать редактор с подсветкой кода). И этот подход в принципе имеет место быть — ровно на столько, на сколько удобно писать программы на С++ в блокноте — то есть до того момента, как вы перейдете от программ «Hello, Word» к чему то более сложному.

Некоторое время назад я высказал предложение о необходимости написания среды разработки (или хотя бы редактора) для программ на ассемблере, но в ответ не услышал ничего. Значит, нужно написать среду самому. Понятно, что это не будет уровень современных сред программирования, над которыми трудятся целые коллективы разработчиков (да и опыта у них намного больше чем у меня), но я и не ставлю цель конкурировать с ними по «навороченности» — мне всего лишь нужна среда для комфортного программирования на ассемблере.

Если вам нужно тоже самое и нужно именно «ехать, а не шашечки» — тогда добро пожаловать под кат.
Читать дальше →
Total votes 27: ↑25 and ↓2 +23
Comments 62

Delphi: Простая задачка RichEdit которую нужно решить до того как вы решите его использовать

Reading time 3 min
Views 16K
Потихоньку начал писать собственный редактор для написания программ под ARM на языке ассемблера, и решил начать с самого простого: сделать разбор текста при редактировании.
И тут я нашел небольшие такие грабельки :-)

Итак вопрос:
Есть редактор RichEdit в который мы ввели текст:

Курсор стоит вначале строки перед "9", RichText.SelStart := 12

Как в программе узнать символ на котором стоит курсор?

Если ваш опыт подсказывает конструкцию наподобие:
   with RichEdit do
        textChar:=Text [SelStart]; 

— то ваш опыт не верен!

И если вам интересно — то правильный ответ можно увидеть под катом…

Читать дальше →
Total votes 34: ↑20 and ↓14 +6
Comments 25

STM32: SPI: LCD — Вы всё делаете не так [восклицательный знак]

Reading time 8 min
Views 84K
Надеюсь сообщество простит меня за такой заголовок, просто в последнее время все чаще и чаще сталкиваюсь с программами в которых к микроконтроллерам STM32 подключают различные дисплеи с интерфейсом SPI и очень часто передачу данных при этом делают не правильно.
Как следствие — либо код не работает совсем и тогда в него внедряют различные задержки, или пишут код таким образом что он гарантированно будет работать медленно (по сравнению с возможной скоростью). А кто то, не разобравшись просто копирует чужой «с костылями» код, и потом такие «произведения» ходят по интернету из примера в пример…
Блок SPI описанный в данной статье точно есть у контроллеров семейств: STM32F1, STM32F2, STM32F4. По другим смотрите Reference Manual.

Откуда растут такие проблемы и каким образом они решаются под катом.
Читать дальше →
Total votes 50: ↑45 and ↓5 +40
Comments 44

STM32F4: GNU AS: Подключение дисплея на PCD8544 (Часть 7)

Reading time 5 min
Views 11K


Обсуждение этой и других статей цикла: vk.com/topic-200545792_46642280

Поскольку мигающим светодиодом интерфейс пользователя построить сложно, решил подключить к STM32F407 простенький SPI дисплей из Китая. Интерфейс дисплея PCD8544, подключение по SPI, на aliexpress и ebay обычно ищется по строке LCD nokia 5110, питание дисплея как раз от 2.7 до 3,3 вольт.
По информации полученной из даташита частота SPI дисплея не должна превышать 4 Мгц, однако все имеющиеся у меня экземпляры надежно работали при такте SPI в 21 Мгц…

Описание проекта, исходные тексты программы, настроенный файл автоматической компиляции и сборки проекта под «катом»:
Читать дальше →
Total votes 22: ↑21 and ↓1 +20
Comments 7

STM32F4: GNU AS: Прерывания, Системный таймер (SysTick) (Часть 6)

Reading time 10 min
Views 13K


обсуждение этой и других статей цикла: vk.com/topic-200545792_46642273

В первых публикациях — мы тактировали микроконтроллер от внутреннего тактового генератора (HSI)… ну если быть совсем точным, то мы вообще не настраивали тактирование микроконтроллера, и пользовались тем состоянием которое было у микроконтроллера при старте (включении питания, сбросе). Для первых программ это вполне допустимо, но для будущих проектов этого не достаточно, поэтому в пятой части публикации я предложил модуль настройки тактирования микроконтроллера (sysclk) на его «родную» (определенную производителем) частоту в 168 МГц.
Теперь организуем задержку на заданное количество миллисекунд при помощи системного таймера (SYSTICK).
Читать дальше →
Total votes 10: ↑10 and ↓0 +10
Comments 1

STM32F4: GNU AS: Настройка тактирования микроконтроллера (Часть 5)

Reading time 6 min
Views 11K
Все что нам нужно знать для написания программ на языке ассемблера для stm32f4 я уже написал, ссылки на прошлые публикации:
STM32F4: GNU AS: Программирование на ассемблере (Часть 1)
STM32F4: GNU AS: Мигаем светодиодом (Оживление) (Часть 2)
STM32F4: GNU AS: Мигаем светодиодом (Версия для STM32F4 Discovery, Оптимизация) (Часть 3)
STM32F4: GNU AS: Настраиваем среду компиляции (Часть 4)

Обсуждение можно вести на платформе VK: vk.com/topic-200545792_46642258

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

Для начала, запустим микроконтроллер на его штатной частоте: 168 мгц, от внешнего кварцевого генератора, с использованием PLL.
Читать дальше →
Total votes 10: ↑10 and ↓0 +10
Comments 0

STM32F4: GNU AS: Настраиваем среду компиляции (Часть 4)

Reading time 15 min
Views 9.1K
В прошлых публикациях я показал от чего можно оттолкнуться при написании программ для STM32F4, настроили среду компиляции, определили файл компоновщика, получили шаблонный файл программы на языке ассемблера, попробовали настроить GPIO микроконтроллера и помигать светодиодом.

Ссылки на прошлые публикации:
STM32F4: GNU AS: Программирование на ассемблере (Часть 1)
STM32F4: GNU AS: Мигаем светодиодом (Оживление) (Часть 2)
STM32F4: GNU AS: Мигаем светодиодом (Версия для STM32F4 Discovery, Оптимизация) (Часть 3)

Обсуждение этой публикации, задать вопросы, внести предложения можно в VK: vk.com/topic-200545792_46642149

Теперь пришло время разобраться в компиляции программ состоящих из нескольких файлов, разобрать способ написания программ для нескольких отладочных плат, научиться выносить настройки программы для удобного их изменения
Читать дальше →
Total votes 10: ↑9 and ↓1 +8
Comments 0

STM32F4: GNU AS: Мигаем светодиодом (Версия для STM32F4 Discovery, Оптимизация) (Часть 3)

Reading time 13 min
Views 15K
Ну что же, новогодние праздники кончились, и начались трудовые будни :-) Продолжим разбираться с ассемблером на примере микроконтроллера STM32F4

Обсуждение статьи доступно на платформе VK: vk.com/topic-200545792_46642025

Ссылки на прошлые публикации:
STM32F4: GNU AS: Программирование на ассемблере (Часть 1)
STM32F4: GNU AS: Мигаем светодиодом (Оживление) (Часть 2)

В комментариях никто не отписался о том что ему удалось запустить «мигалку» на STM32F4 Discovery — значит либо не пробовали, либо не удалось. Исправим эту мелочь:
Читать дальше →
Total votes 14: ↑13 and ↓1 +12
Comments 16

STM32F4: GNU AS: Мигаем светодиодом (Оживление) (Часть 2)

Reading time 14 min
Views 29K
Это вторая публикация на тему программирования микроконтроллеров STM32 на языке ассемблера, первая часть находится Здесь.

Если у вас возникли вопросы или пожелания, но вы не можете здесь писать то переходите в VK: vk.com/topic-200545792_46641967

Дополнительно, обращаю внимание что сейчас (2021 год) написан небольшой редактор для программирования на ассемблере, в котором так же был написан код аналогичной функциональности, но с использованием «плюшек и удобных подушек» редактора, посмотреть конкретно про написание мигалки в нем можно в статье Assembler Editor Plus: Использование модулей (возможно в процессе прочтения нужно будет пройти еще по нескольким ссылкам где будет описано про функциональность редактора в общем, и как выполняется создание проекта, компиляция, прошивка, отладка)

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

Читать дальше →
Total votes 17: ↑14 and ↓3 +11
Comments 8

STM32F4: GNU AS: Программирование на ассемблере (Часть 1)

Reading time 15 min
Views 69K
Обсуждение статьи после прочтения или задать вопросы можно в VK: vk.com/topic-200545792_46641834

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

Это моя первая статья для сообщества Хабрахабр и написать ее я решил про то что сейчас волнует меня самого: написание программ для микроконтроллеров STM32 (семейство АRМ) на языке ассемблера. Я использую отладочную плату на основе микроконтроллера STM32F407 (STM32F4 Discovery, Open407I-C), но статья будет не менее полезна и для программирования других микроконтроллеров STM32.
Читать дальше →
Total votes 34: ↑32 and ↓2 +30
Comments 45

Information

Rating
Does not participate
Location
Чукотский АО, Россия
Date of birth
Registered
Activity