STM32. Интерфейс SWD. Создание собственного программатора - отладчика.
Вставка
- Опубліковано 9 вер 2024
- Наверняка многие зрители этого канала интересовались тем, как работает интерфейс SWD микроконтроллеров STMicroelectronics. В ролике рассказывается о том, где получить информацию необходимую для создания собственной реализации программатора - отладчика.
Канал в телеграмм - t.me/vladimir_...
Канал Яндекс.Дзен - zen.yandex.ru/...
Канал на RuTube - rutube.ru/chan...
Канал на UA-cam - / vladimirmedintsev
------------------------------------------
Если вы хотите поддержать автора канала номер карты Сбер:
2202-2023-2480-4008
------------------------------------------
Спасибо, долго искал эту информацию, а Вы все подробно объяснили.
золотой вы человек важную проблему разобрали
Спасибо большое за видео! Растите бороду и не болейте!)
Спасибо большое.
Спасибо большое, Уважаемый Владимир.
С удовольствием смотрим, как и раньше не успеваем за Вами.
Спасибо за информацию! Всегда полезно и любопытно!
Пока что "в поле" использую ZFlasher для ST. Но за хорошую подсказку - спасибо! Не всегда есть возможность копаться, искать.
А так - видео посмотрел, в памяти отложилось.
Спасибо за ваш труд!
Делаю сейчас свой автономный программатор через UART по идеям из ваших видео. Та часть программы которая заливает прошивку достаточно быстро получилась. А вот написание кода для работа с экраном, клавиатурой, аккумулятором, freertoos, fatfs, кольцевым буфером отнимает огромное количество времени. Собственно вопроса нет, просто спасибо!)
Очень хорошо, что получается. Я искренне рад.
Пока тягаю кубики FLProg и вижу в этом тупик. Потихоньку перехожу на Си и дается это тяжело. Спасибо большое за такое глубокое видео.
Тут с самой стмкой разобраться бы , а вы про собственный отладчик)) спасибо за видео
Что там с этим микроконтроллером разбираться? Берите reference manual и читайте от корки до корки. Этого будет вполне достаточно для полного освоения STM32.
@@VladimirMedintsev LOL ))
@@VladimirMedintsev да читать бы научиться
ОО ! Интересная тема !
Самый страшный баг swd - полное отсутствие атомарности. Дело в том что ядро работает гораздо быстрее чем внутренний отладчик, который кстати получает тактовую снаружи!! Дык вот, арбитраж у отладчика безусловный, доступ тоже безусловный - буквально вовсе места, а вот синхронизация плавающая.
Это приводит к тому что отладчик выставляет адрес и чуть позже данные - по спаду синхры, и всегда успевает выставить верные данные до подъёма синхры - момент записи. Но вот в промежутке творится всякая фигня.
Если читать ядром конкретный адрес, то можно успеть вытащить 30 разных значений, до момента - когда содержимое станет стабильным.
По этой причине регистры паникующей периферии обрабатываются по полям (через маску). И никогда не пишутся целиком.
При общении через структуру памяти - нужны отдельные флаги (только запись - только чтение).
Читаем флаг, читаем поле, читаем флаг: флаг не менялся - значит содержимое верно.
Да, абсолютно верно.
Подробнее расскажи чтобы проверить, но звучит как бред.
@@andrew3482 это не единственный глюк.
@@andrew3482 Да уж куда подробнее... Это нужно объяснять технологию синхронизации данных на границе разных частотных доменов. А после просветления - кирпичом по голове, в отладчике всего этого нет.
Потому как jtag родился задолго до fpga, для устройств исключительно с внешним клоком. И с тех пор почти не менялся.
@@avi-crakhome2524 что значит внутренний отладчик получает тактовую частоту снаружи? SWDCLK что ли? это просто клок для приема данных по SWD. (что бы вам было понятнее как у SPI Slave) А отладочный модуль тактируется от DAPCLK и он внутренний.
Глаза покрасневшие очередная бессонная ночь программиста)))
Спасибо за ещё одну полезную карту сокровищ. Главное знать где копать. : )
Чудово. Вподобайка.
подружить бы ESPLink и SWD, да подобные задумки ох как небыстро осуществляю.. шустро разбираться в чужом коде до сих пор не выходит.
Познавательно
Мне очень нравится ваш канал. Можете делать видео на тему микроконтроллеры LPC также?
LPC - Low Pin Count bus?
LPC - NXP microcontrollers?
LPC - Low Power Consumption?
LPC - Local Procedure Call?
Как я должен догадаться о чем это вы?
@@VladimirMedintsev О простите. Я имел в виду NXP microcontrollers как LPC17XX и так далее
Стоп кадр на 2 секунде: "Хабар принёс?"
Владимир, не в обиду, а отсылки ради)
Я лично не понял о чем это вы вообще.
@@VladimirMedintsev в игре сталкер есть персонаж Сидорович. Вы на него похожи по сидячей позе и бороде. А игрока он приветствовал фразой "хабар принёс?"
Понятно, я просто не играю, не знаю что там творится.
Здравствуйте, не могу некоторую информацию в интернете найти. Может, вы по опыту знаете. Может ли STM32F4 общаться с eMMC 5.1 по 1bit шине? И если да, то где про это почитать?
А есть какие нибудь новости когда цены вернутся на нормальный уровень? Осенью заказывали партию 103 1к около 1$ за шт, сейчас просят ~4$.У nxp и infineon тоже дорого, можно ещё немного добавить и взять полноценный x86 компьютер )
Цены на прежний уровень больше не вернутся никогда. Они, конечно, снизятся, но возврата к прошлым ценам не будет никогда.
Это еще шаровые цены, нужно брать пока по 4. 105-ые уже за 25 - 30 долл перешагнули
можем повторить
воу-воу, так и до ботнета недалеко: когда один мк перепрошивает (заражает) следующий в цепочке (сарказм).
а тема довольно крута. как уже ранее отмечалось, прошивка одного мк из другого полезна для массового обновления или отката прошивки в полях, а отладка дает огромный потенциал для автоматизированных тестов в железе. стенд состоящий из двух мк - один тестируемый, второй - что производит тест. для ночных сборок самое то (каждый чих тестировать никакого flash'а не хватит, а раз в сутки или по запросу - отличный способ зафиксировать работоспособность правок или новой функциональности). при чем тестировать можно как работу прошивки в целом, так и пошагово (используя отладчик), т.е. проверяя состояние мк на момент останова.
Вот для "полей" эту тему и прорабатывал.
А может кто-нибудь подсказать: можно ли ST-LINKом зашить МК lgt8f328? (там написано что протокол SWD)
Нет, нельзя.
@@VladimirMedintsev Спасибо!
Здравствуйте.
С ядром Cortex-R не сталкивались? На нем есть фишки типа есс памяти и резервирования процессора.
Ну и естественно расширенный набор команд.
Но стм, как я понял, на нем не производят контроллеры, в основном TI или renesas.
И в чем вопрос? Вы проводите опрос общественного мнения?
@@VladimirMedintsev Я подумал что раз вы интересуетесь углубленным изучением арм, то может и сталкивались с данной архитектурой.
А может и из ваших зрителей кто то работал, оставит свое впечатление.
СТ Микроэлектроникс выпускает только Кортекс-М и Кортекс-А+Кортекс-М чипы.
@@user-fe8tp5jx7y Ну мир на STM не заканчивается. Я активно NXP и прочих использую.
@@VladimirMedintsev я знаю, т. к. у меня основной мк от Инфинеон. Ещё Миландр на кафедре. СТМ просто очень популярны в гражданском и бытовом сегментах.
Уважаемый Владимир, большое спасибо вам за ваши видео! Хотел спросить вас о некоторых вещах. Во-первых, есть ли жизнь за пределами STMicroelectronics? Если да, то возможно ли её освещение со стороны вашего опыта? Во-вторых, как вы смотрите на встраивание виртуальных машин интерпретаторов в микроконтроллеры? Был ли опыт с Forth? И, с вашего позволения, третье - Возможен ли с вашей точки зрения альтернативный CubeMX подход к графической и наглядной конфигурации периферии контроллеров? А именно, подход, который будет демонстрировать значительную часть информации из даташита в процессе настройки и, соответственно, поможет лучше представить работу периферии, а не будет скрывать её от разработчика. Большое спасибо.
Да, жизнь есть. И есть куча микроконтроллеров и их производителей. Освещать на канале их пока не планирую. Причина проста, ролик с микроконтроллерами (к примеру) NXP в виду не сильно большой популярности последних у радиолюбителей смотреть будет сильно меньше народа, а значит и доход мой от рекламы уменьшится. И зачем мне это? Делать надо попсу типа ардуино ее смотрят и платят.
На встраиваемые виртуальные машины я смотрю крайне плохо. Очень плохо.
Альтернативный CubeMX графический конфигуратор смысла не имеет. Профессионал многое знает и может свободно ориентироваться в документации и периферии. А новички и любители производителей МК не волнуют в принципе. Их ценность ничтожна. Это я к тому, что ничего и ничем не скрыто. Инструмент достаточен.
А что происходит на Али с STM32 - цены увеличились в 6 раз и даже по таким ценам ничего не купить ибо продавцы отвечают что на складе ничего нет и скоро будут но очень дорого? Причем Atmel можно купить по старым ценам.
Не только на али, везде цена увеличилась. Еще с осени кризис и дефицит чипов, мы еще в ноябре на год вперёд закупились.
не скажите. третий раз заказываю ATMega32 и продавцы отписываются что цена поднялась и надо доплатить. или отписываются что нет на складах. Так что стабильно со всеми МК какая-то напряжёнка
@@sozdatelEd - а ну тогда успокоили - а то я думал что на stm32 только крест поставили. Я уже не заказываю - понял что бесполезно, уже неделю переписываюсь с продавцами и понял что и это бесполезно - ибо они работают со складов и они сами не знают что со складов кто-то все выгреб.
Добрый день! Надеюсь вопрос дойдет.
Большое спасибо - все здорово. Со всеми вопросами разобрался кроме одного:
В проекте примеры алгоритма для двух контроллеров, а как достать алгоритм из "flm" для других контроллеров?
Я видимо что-то не понял. FLM это что?
@@VladimirMedintsev FLM - это файл алгоритмов для Keil в котором сложены все алгоритмы программирования для некоторого семейства. В проекте "DAPProg-master" используются "С" файлы с бинарным кодом алгоритма (который загружается в контроллер) и структурой описания точек входа. Файлы FLM есть в Keil для большого количества контроллеров, а бинарный код алгоритма создать пока не получается. Я думаю, что есть какой-то способ "достать" алгоритмы из FLM (если знать его структуру) и надеюсь, что Вы владеете этими знаниями или информацией о том где это можно найти. Гугл пока не помог.
@@ndrejtroitskij4061 Понял, я не располагаю такой информацией.
@@VladimirMedintsev Жаль. Может Вы знаете другой способ создания файлов алгоритма для разных контроллеров?
Отладка это очень хорошо :)
Но у меня так и не получилось запустить следующую связку, для отладки на железе:
QTCreator (+bare metal) + STLink/Discovery + STM32F103.
Может есть у кого опыт запуска на винде?
Находил инструкцию для линуксов, но она сводится к apt get и "как нарисовать сову"...
Кейл не понравился, atolic - что-то глючил...
Сейчас думаю вернуться к STMкам, да и миландровский чип есть...
Появилась какая то STM IDE, но зверинец сред не хочу разводить.
ЗЫ: я новорег на вашем канале. Мне нравится :)
Может есть смысл сделать/обновить руководство для новичков старт в STM, в том числе для ардуинщиков - переростков :)
Хотите вы или нет, но IDE типа Cube, Keil, Segger рано или поздно вам ставить придется. Как понадобится полноценная отладка так и придется.
Что касается канала, то это просто мой блог. Несмотря на то, что я периодически что-то выпускаю для начинающих, это не является основной темой. Больше это все-таки материалы для более опытной аудитории.
@@VladimirMedintsev, да это к сожалению неизбежно. Прийдется к Атмел студии, Vivado и QT что то добавить...
Можно вообще без отладчика разрабатывать, что я и не так давно делал с 1887ВЕ4У, являющимся функциональным аналогом ATmega8535. И 1887ВЕ7Т = atm128 со своими приколами...
Но уж больно велик соблазн пилить код в одной среде: и прошивку железки и софт для компа управляющий этой железкой.
А с учетом что миландр уверяет, что их микрухи лицензированы ARM....
На Кейл не хочу переходить, т. к. если труды моей диссертации пойдут, то скорее всего я не подпаду под их лицензирование. С fusion 360 вроде как попроще будет. QT - тоже под вопросом, но т. к. они имеют версию "Comunity" то договориться с ними будет проще.
Договориться с QT... Это хорошая шутка.
В Миландр даже не суйтесь. Это страшная яма с крокодилами.
Код можно делать и отлаживать в чем угодно, а потом в финале откомпилируете в бесплатной CubeIDE и лицензионно вы чисты.
А с Black Magic Probe не баловались? github.com/blacksphere/blackmagic/wiki
Мне он не нравится. Совсем.
Доброго дня. Можно как то прояснить, как добавить беспроводную отладку для МК.
Я не понял вопроса.
@@VladimirMedintsev Так, ладно. Вот есть stlink, он по usb подключается. А иногда нет usb, изделие стоит на испытаниях например, но хочется его перешивать, отлаживать и запускать например совместно с Tracealyzer. Есть ли какие вменяемые варианты отладчиков по wifi например или подобное?
Собственно опять не понял, а кто мешает пробросить USB через Ethernet? Ну как бы и пользуйтесь.
11:00 32f103 программатор... только подумал(мысли прочитал)... Есть ф0- ф4 дискавери...нет Маленького программатора на гГолубой_ПЕЛЮЛЕ (аля своими руками.. спалил/статика не жалко)...
а юридический интерфейс есть ??)
И юридический тоже есть.
@@VladimirMedintsev это когда программист заставил работать STM32 без отдыха нарушая рабочей кодекс кибернетики
@@pomanpomahovich9265 xeon'ам не говорите, а то они в профсоюз вступят)
Блин, думал ошибся каналом, ан нет всего лишь имидж новый.
Понятно, что ничего непонятно
Нельзя без бороды.
Это не надолго.
Как главный двоечник задаю вопрос, а где собственно списать? Это опять рыться в документации, ворошить чужой код, набивать себе шишки..., это же не наш метод! :)
Я не совсем понял что именно вы хотели списать...
@@VladimirMedintsev, отладчик с программатором в готовом виде...что бы в кейл вставил проект, нажал маке и готово, ну или не в кейл..., это я так пытаюсь шутить...
Так вон же он показан в составе CMSIS. Компилируйте и используйте. Исходные коды до последней строчки.
@@VladimirMedintsev , ну все равно же не соответствует, моим запросам, автор то не экстрасенс:) Ну а если серьезно, то вас всегда смотреть интересно!
Спасибо большое за ваш труд!