Pull to refresh
87
0
Вадим Дерябкин @Vadimatorikda

Инженер-программист

Send message
Вы бы перешли с STM на этот МК, будь одинаковые условия по цене, доступности и т.д.?

Лично я — перешел. Уже. Сейчас. Надеюсь, что удастся договориться в будущем с Миландром о сотрудничестве и получать образцы) Сейчас к ЕГЭ готовиться нужно. Иначе не быть мне прибористом. А вообще хочу пойти в какую-нибудь фирму как раз типа Миландра. Всегда мечтал работать на самом низком уровне логики (писать ядра, исправлять периферию...).
Напишите про ваши впечатления — как оно работает?

Пока что мне все нравится, но я не всего каснулся. Лично ДМА для следующей статьи сейчас настраиваю 3-й день. Не смог разобраться с документацией. Вернее смог, но так и не запустилось. Сейчас получил помощь с официального форума в виде типового кода под свою задачу. Если все удастся — выложу все: как пытался, как не получилось, какие грабли были, как от них избавился. Мне всегда не нравилось, что в статьях не пишут, что делать, если что-то работает не так, как должно. Я же буду описывать все грабли и их признаки.
Нашел остальные статьи и чот приуныл (( Вы игнорируете библиотеки, а нам это не кажется особо верным подходом. Значит, скорее всего, я продолжу тему Миландров когда-нибудь и сделаю серию статей по работе с периферией исключительно через библиотеки.

Да, игнорирую. Причем в упор. Не нравятся они мне. Честно сказать я бы не отказался от правильно отлаженной графической среды (кою пишу сейчас сам). Прошу меня понять. Я начинал с паскаля под AVR, но потом пройдя через си ощутил все блаженство от ассемблера. Но вот писать на ассемблере под STM32 было очень трудно. Море нюансов, которые нигде не описывают. Так что дальше мигалки с USART дело не двинулось. Сейчас же я могу наконец-то, благодаря документации на родном (хоть и местами корявом) языке, настроить все сам. На си. Ассемблер придется забыть( Но если мне в руки попадет восьмибитка от Миландра — я начну писать курс про освоения ее на ассемблере и си одновременно. Для сравнения.
Читайте на здоровье. Скоро выпущу эпичную статью. Она сейчас в разработке: «Переходим с STM32 на российский микроконтроллер К1986ВЕ92QI. Генерируем и воспроизводим звук (Освоение ЦАП, таймеров, DMA)».
Спасибо за исправление. Исправлю!
после запуска не дает корректно работать с портом JTAG_B отладчику.

Не дает работать с обоими портами. И JTAG_A и JTAG_B.
Выбираем режим 010 — после перезагрузки «процессор пытается начать выполнять программу из внешней памяти, установленной на внешней системной шине». Тут я думаю имеется в виду скорее внешнее ПЗУ чем ОЗУ, то есть это режим не микроконтроллера, а микропроцессора. Так как там ничего нет, JTAG порт остается рабочим.

Хммммм… Я только неделю разбираюсь с данным контроллером. Вы поставили меня в тупик. Скорее всего, вы правы. Прошу простить мою ошибку.
Он через JTAG порт загружает в ОЗУ с адреса 0x20000000 размером 0x0800 «algorithm for download». Загрузчик запускается в ОЗУ и делает то, что мы его попросили в настройках — например «Erase full chip» с адреса 0x08000000, то есть очищаем внутреннее ПЗУ.

Тоже, честно сказать, не знаю. В низкоуровневой отладке не разбирался.
Как отлаживаться, загружая прошивку в ОЗУ — не знаю. Видел упоминания, что есть такая возможность. Думаю, это будет полезно многим.
Сам делал на этом МК загрузку отдельных модулей программы в ОЗУ из ПЗУ после старта. Keil позволяет делать это достаточно легко. Это, в частности, необходимо если мы захотим использовать часть ПЗУ для хранения пользовательских данных.

У меня по плану стоят еще 4 статьи на тему периферии. После этого я хочу подробнее разобраться как раз таки с памятью и ее разделами.
Спасибо за ваш вопрос. Теперь я знаю, о чем будет 5-я статья после этой.
Не могу понять значение «круче». Когда мы переставляем перемычке в режим 010, то выполнение программы при отладке происходит из ОЗУ. Так как в настройках мы указали адреса Flash, то нажав на Debag, контроллер очищает все ячейки памяти Flash (тоже указали в настройках), прошивает нашей программой, переставляет указатель на начало ОЗУ и начинает «выполнение программы». Так как мы ничего в ОЗУ не писали, то у нас там будут нули. Таким образом, мы получаем программу из кучи нулей и перепрошивку Flash. Отладка Flash, как я понял, в режиме 010, не возможна. Как вариант, изменить значения адреса в настройках. Чтобы программа грузилась не во Flash, а в ОЗУ. Это бы значительно увеличило ресурс контроллера. В нашем контроллере приличное количество ОЗУ. Так что, чисто теоретически, это возможно. Попробую сам сделать это. Напишу в одной из следующих статей.
Тем, кто делает паузы через «нужное количество» nop, честно говоря, хочется руки по отрывать. Тут используются таймеры

В следующей статье рассмотрено именно мигание с использованием SysTick. После будет с использованием таймера. А после и ОС. Потерпите. Не все сразу.
Дергать ногой можно было вообще в обработчике (правда за это, то же некоторые по рукам бьют), либо (что самое правильное) написать менеджер, который бы вызывался с определенной периодичностью, проверял состояние флага и выполнял инверсию (либо другие нужные действия) ноги.

В будущем будет рассмотрена связь с ОС. В которой все это будет.
Однако на сколько я помню в бесплатной версии не работает симулятор

Не правда. Работает. И очень даже хорошо. В статье про тактирование микроконтроллера (сегодня постараюсь дописать и выложить), будет сказано об отладке.
И используйте, пожалуйста, png, а не jpg для скриншотов, то глаза вытекают от такого мыла и шума.

Заменил код. Спасибо. В будущем буду выкладывать в png.
Про RTX спасибо. Буду изучать. Но сначала разберу всю периферию без ОС. Раньше пытался подружиться с FreeRTOS, но после недели безуспешных попыток передать двоичный симафор — сдался. Написал свою мини ОС в десяток другой строк и этого хватило.
SysTick->LOAD |= ...;
выглядит странно, не находите?

Ошибка. Спасибо, исправил.
Строго говоря, SysTick — это часть ядра Cortex M3, поэтому работа с ним в разных контроллерах на этом ядре практически идентична.
Полезнее было бы рассмотреть работу с родной периферией миландра в каком-нибудь более-менее реалистичном сценарии. Чтение ADC через DMA, например.

Я знаю. Он нужен для следующего урока, посвященного системам тактирования МК. Для наглядности.
По-хорошему, вам даже не обязательно было трогать регистры; в файле core_cm3.h уже есть готовая функция для его настройки — SysTick_Config.

Про функцию тоже знаю. Но куда приятнее настроить вручную. Чтобы знать наверняка, что все правильно.
Огромное спасибо за информацию. Обязательно учту это в одной из следующих статей. Но в данном случае речь идет о порте C. Так что можно ничего не бояться. Возможно, вы спасли меня от моря ошибок и многих дней для их поиска.
В последующих статья постараюсь излагать материал менее эмоционально, более сжато и понятно.
1. Вся статья написана в духе «это какое-то шаманство, но делайте так — и всё заработает», особенно вот эта фраза:
Сознательно не удаляю ту часть файлов, которую не использую, потому что некоторые важные файлы, хоть и косвенно, но ссылаются на них. Поэтому лучше скопировать все.

Да, действительно. Звучит не очень хорошо. Исправил.
2. Магические числа, «непонятно откуда», но внезапно и удачно всплывающие имена полей структур… Больше напоминает первое знакомство человека с системой.

Честно сказать, про эту фичу нигде ранее не читал (ни в одном уроке, во время изучения мною STM32, об этом написано не было). Поэтому решил напомнить о ней. Посчитал, что лишним не будет.
3. ИМХО очень плохой подход — копировать из библиотеки отдельные файлы для использования. Надо наоборот учить людей, что лучше подключать целую готовую библиотеку, желательно предварительно слинкованную статически! И не надо будет её каждый раз компилировать вместе со всем проектом. Неиспользуемые файлы исключать из списка компиляции Keil умеет, через свойства по ПКМ на файле.

Исправил. Сообщил, что копируем всю библиотеку. Объяснил, за что отвечает каждый добавленный файл.
желательно предварительно слинкованную статически!

После того, как 1 раз компилируешь проект — библиотеки при последующей компиляции не изменяются.
Tutorial таким быть не должен.

Только начинаю писать. Просто не хочется, чтобы накопленный опыт пропал. Рад любым правкам.
Просто так случается, что со временем забываешь, как работают собственные библиотеки… И когда-то очевидные вещи кажутся ужасно непонятными. Это одна из причин написания этой серии статей.
А вообще, солидарен с мнениями комментаторов, что лучше под open-source IDE изучать разработку. Тем более, более универсальные среды. Сам пишу под все МК в Eclipse, в том числе под 1986ВЕ9х.

Мне очень по душе Keil. Чем-то он пленил меня. С Eclipse так и не смог наладить контакт. Но это уже индивидуальные особенности. Keil не накладывает ограничений на обучение. 32-х киллобайт вполне хватает на то, чтобы беспрепятственно изучить контроллер и начать разрабатывать интересные вещи.
Записывайте, пожалуйста, их где-нибудь. Я с радостью внесу правки и укажу, кем они были сделаны.
Ну и слишком много в проекте GUI-возни и возни с IDE

Ее больше не будет. Мы настроили Keil 5 и проект в нем. Теперь можно начать программировать. Если и будет что по настройке — то это мелочи, которые я мог упустить.
что и то и другое к самой теме «посвящения в работу с микроконтроллером» относится весьма и весьма относительно

Лично для меня это была самая большая проблема. Плата пролежала на столе 2 недели. Каждый день я смотрел на нее и хотел начать, но мысль о том, что пришлось бы потратить несколько часов на настройку — отпугивала до последнего.
На диске море информации по другим продуктам компании. Как мне показалось, по всей их продукции… + демонстрационный видеоролик с предприятия.
image
Примеры (конкретно к этой плате) только под keil. Да и драйвера на официальном сайте лишь под него. Но в папке есть пример настройки под IAR. Если я правильно понял. Не занимался этим. Мне keil ближе. Я перепробовал много различных сред и остановился на нем. Мне очень понравилась возможность напрямую писать в периферию. Так как изначально писал код под STM32 на ассемблере.
Прошу простить… Просто подобные разъемы вижу ОЧЕНЬ не часто. Поэтому для меня это в новинку. Буду осваивать.
Вы можете обратиться к ответственному лицу и поинтересоваться. У меня если и будет потребность в данных МК, то я буду заказывать небольшими партиями. Или в группах ВК. Там есть и самодельные платы под данные МК.
емнип, миландр выпускается отнюдь не у нас, а за бугром.

Чет прочел, и приуныл...

Information

Rating
9,968-th
Location
Красноярск, Красноярский край, Россия
Date of birth
Registered
Activity

Specialization

Software Developer, Embedded Software Engineer
Lead
From 250,000 ₽
C++
STM32
Linux
Circuitry
Python
Assembler
Programming microcontrollers
Embedded system
Software development
Object-oriented design