Тёмный

Отладка STM32. Перенаправление ввода-вывода. Возможности SWD, отладка больших программ. 

Vladimir Medintsev
Подписаться 36 тыс.
Просмотров 21 тыс.
50% 1

Рассказывается о возможностях интерфейса SWD по отладке разрабатываемых приложений. Перенаправлению ввода вывода в отладке. Практические примеры.
ST-LINK переделка. Вывод SWO для отладки STM32 - • ST-LINK переделка. Выв...
ST-LINK создание собственного клона программатора (Часть 1) - • ST-LINK создание собст...
ST-LINK создание собственного клона программатора (Часть 2) - • ST-LINK создание собст...
------------------------------------------
Поддержать автора канала можно перейдя по ссылке:
yoomoney.ru/to/4100116547550395
Или просто отправив перевод на Yandex.кошелек:
4100116547550395
А также переводом по номеру карты Сбер:
4279-3000-1033-0561
------------------------------------------

Наука

Опубликовано:

 

6 янв 2019

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 49   
@Wtf95
@Wtf95 4 года назад
Огромное человеческое спасибо за то что находите время и пилите видосы для начинающих, вы даже не представляете насколько это помогает сообществу.!
@ajdarseidzade688
@ajdarseidzade688 4 года назад
+ Полностью согласен! Особенно момент на 15:13. :)) Но я это видео не 15 с чем-то минут смотрел, а может час по частям. Пока находил/просматривал упомянутые тут документы. Крутой человек (и комментатор и как специалист).
@realtor3000
@realtor3000 3 года назад
Тот случай когда одного лайка мало. Хочется поставить 100500
@msdesignru
@msdesignru 5 лет назад
Спасибо, интересный канал, много полезных материалов
@raven8867
@raven8867 3 года назад
Спасибо Вам за ваши видео, очень позновательно !
@user-qn9nt2bl8b
@user-qn9nt2bl8b 3 года назад
Спасибо за открытые возможности по отладка!
@SiemensSxg75Patch
@SiemensSxg75Patch 5 лет назад
Спасибо, полезно)
@sledleo
@sledleo 4 года назад
круто!! супер вещь!
@user-vg9nq5rj3w
@user-vg9nq5rj3w 5 лет назад
Ждем
@night_gryphon
@night_gryphon 3 года назад
из не описанного на что лично я наступил - что бы printf вывел данные в консоль в конце строки должно стоять , либо необходимо отключить буферизацию вывода setvbuf(stdout, NULL, _IONBF, 0);
@Nidvoraich
@Nidvoraich 2 года назад
люблю тебя
@user-vo4of8hw8d
@user-vo4of8hw8d 5 лет назад
Приветствую Вас добрый человек ! Вы серьёзно подошли к вопросу отладки. Установите Atolic True studio и будет вам счастье. В файлах поддержки чётко обьясняется как производить отладку. Помимо принт ф одновременно можно выводить несколько переменных в отдельное окно. В Кейле я проделывал тоже,что вы показали в этом ролике,потратил очень много времени на изучение SWO. После установки Atolic True studio , Кейл даже открывать нет желания. )))
@VladimirMedintsev
@VladimirMedintsev 5 лет назад
Я ни в коем случае не яаляюсь адептом тайного ордена любителей кейла. Каждый выбирает себе инструментарий по вкусу. Но как одно из отличий вы указали вывод переменных в отдельное окно. А в кейле вы этого разве не можете сделать? Там есть и просмотр стека и переменных.
@englishman_i
@englishman_i 5 лет назад
Дайте ссылку пожалуйста на эти файлы, ознакомимся хоть.
@VladimirMedintsev
@VladimirMedintsev 5 лет назад
И мне тоже...
@arakeldesign
@arakeldesign 5 лет назад
Диван Диваныч это Труе Студио которое сейчас принадлежит ST?
@user-vo4of8hw8d
@user-vo4of8hw8d 5 лет назад
@@englishman_i На офсайте атолика посмотрите, мне с телевизора не очень удобно пользоваться браузером.
@IgorPshynyk
@IgorPshynyk 5 лет назад
Вводить можно через тотже вотч. Главное не трогать регистры таймеров. их значения нужно менять через переменную, в коде, а в вотче меняем значение переменной.
@bbrylov
@bbrylov 5 лет назад
Владимир, здравствуйте столкнулся с интересной проблемой: SWO проходит через переделанный программатор только при определенном HCLK (8 мгц) при остальных тишина. 1. Откуда тактируется SWO? 2. Сталкивались ли вы с такой проблемой?
@maskon78
@maskon78 5 лет назад
Ай, спасибо, Айболит!
@alekseywolf5405
@alekseywolf5405 3 года назад
Добрый день, Владимир! Давно Вас не видно "в эфире"... надеюсь, что у Вас всё в полном порядке. Столкнулись с неприятной проблемой при выводе дебаговой информации через пин SWO на процессоре F411. Дано: чип со сложной архитектурой регистров (контроллер питания AXP209). Пишем процедуру для STM32F411, считывающую содержимое каждого из управляющих регистров через I2C и выводящую расшифрованную информацию через printf(); в порт SWO. Проблема в том, что для большинства регистров информация выводится корректно, но в некоторых, чётко определённых местах, вывод как бы "затыкается", "проглатывая" часть строк и символов. Причем, вставка HAL_Delay(1000) не помогает, но если проходить процедуру пошагово, то вся информация выводится в порт корректно. При этом сам анализ тривиальнейший и как-либо загружать процессор вообще не должен никак: для каждого из считываемых регистров подготовлена структура с распределением бит (как Вы это показали в своём видео про написание библиотеки), и простейшим If , или switch-case просто выбирается нужный printf(); без каких-либо дополнительных вычислений. Уже и после каждого printf(); понаставили HAL_Delay(50) - не помогает... При этом сама процедура отрабатывает корректно (там, после считывания информации из регистра, еще идет сравнение с дефолтным значением и, в случае несовпадения, запись правильного значения назад в регистр), а "зависает" именно вывод printf(); Длинна всех строк примерно одинакова. Сами строки - вполне себе "чистый" ANSI, никаких кириллических или каких-либо других "вредоносных" символов. Работаем через STM32CubeIDE и его окно SWV ITM Data Console. Можно как-то принудительно вычищать буфер printf();? От чего еще может зависеть его работа? Спасибо за вашу помощь всем нам!
@VladimirMedintsev
@VladimirMedintsev 3 года назад
Я немного приболел. По этой причине и нет роликов. Как поправлюсь так сниму что-нибудь новое. По поводу вывода, проблема старая, я так понимаю что не корректно отрабатывает сам STLink.
@alekseywolf5405
@alekseywolf5405 3 года назад
@@VladimirMedintsev, спасибо! Желаю скорейшего выздоровления!
@vladimirvesely808
@vladimirvesely808 2 года назад
Тема интересная. Не могу сообразить как нечто подобное сделать в кубе. В моем ST-Link есть вывод DIO. Поэтому надеюсь, что возможность вывода текста в консоль есть.
@VladimirMedintsev
@VladimirMedintsev 2 года назад
В инструкции к кубу прочитайте. У него великолепное руководство пользователя и этот момент там описан.
@vladimirvesely808
@vladimirvesely808 2 года назад
@@VladimirMedintsev Спасибо за моментальную реакцию. Нашел документ UM2609. Там есть буквы по интересующей теме. Многовато их... Попробую что-то понять.
@blandger
@blandger 5 лет назад
Досмотрел. Про ввод не знал. Был опыт использования Rust для программ контроллеров?
@VladimirMedintsev
@VladimirMedintsev 5 лет назад
Нет, не было. Есть FreeRToS ее более чем достаточно.
@user-kd6je4ld6q
@user-kd6je4ld6q 4 года назад
@@VladimirMedintsev а с изиком програмирования D когда либо игрались?
@VladimirMedintsev
@VladimirMedintsev 4 года назад
@@user-kd6je4ld6q По сложившейся практике чаще всего для программирования микроконтроллеров используется классический Си.
@Prostopravda
@Prostopravda 3 месяца назад
Отладка работает, но при включенной трассировке Keil выдает "Trace: No Synchronization". Использую китайский ST-Link V2, плата на базе STM32F407VET6. Тот же результат на STM32F103C8T6. Танцы с бубном не помогают, гугл тоже. Может ли трассировка вообще работать с китайским ST-Link V2?
@retro55i
@retro55i 3 года назад
А что потом делать с ненужными операторами в программе, после окончания процесса отладки?
@VladimirMedintsev
@VladimirMedintsev 3 года назад
Дык вы все закладываемые в код отладочные строки кода предваряйте инструкцией #ifdef а завершайте #endif это позволит вам включать -выключать режим отладки кода одной строкой #define. Просто ознакомьтесь с директивами компилятора. Очень удобно
@maximpetrov9878
@maximpetrov9878 4 года назад
11 минута - у меня - Trace: no Sinchronization , так и не могу справиться - почему ? сможете подсказать?
@VladimirMedintsev
@VladimirMedintsev 4 года назад
Option for Target -> Debug -> Settings -> Trace -> Core clock и Trace Enable правильно установлены? Скорее всего нет.
@user-kd6je4ld6q
@user-kd6je4ld6q 4 года назад
а для cubeIDE (на linux), на тему етого видего, можите посоветовать какую нибуть статью?
@td_44
@td_44 2 месяца назад
Подскажите плииииз. Как в CUBE IDE можно из переменной выдать в порт логический уровень вместо GPIO_PIN_SET , например HAL_GPIO_WritePin(Port_DS, DS, VIHOD); . Перечитал описание HAL, весь гугль отфильтровал, но ничего нету.
@VladimirMedintsev
@VladimirMedintsev 2 месяца назад
Вопрос не понятен.
@td_44
@td_44 2 месяца назад
@@VladimirMedintsev Например в переменной есть число 1 или 0. Как можно это число выдать на вывод МК в виде логической 1 или 0 ? Например HAL_GPIO_WritePin(Port_DS, DS, VIHOD); где значение VIHOD=1 или VIHOD=0. ЗА ВМЕСТО HAL_GPIO_WritePin(Port_DS, DS, GPIO_PIN_SET ) и HAL_GPIO_WritePin(Port_DS, DS, GPIO_PIN_RESET ) Или же есть массив с значениями 1 и 0. Как этот массив лог.уровней можно выдать последовательно на вывод ?
@VladimirMedintsev
@VladimirMedintsev 2 месяца назад
@td_44 HAL_GPIO_WritePin(порт, пин, переменная);
@td_44
@td_44 2 месяца назад
@@VladimirMedintsev Спасибо Володя😁🍟🍟😁, я просто ступил, шина 40 bit из 74HC595 , немного запутался в написании 40-ка переменных потому всплывало сообщение о ошибке. Нашлась причина,как говорится :-"Утро вечера мудреннее".
@user-xn6wm4nw3x
@user-xn6wm4nw3x 2 года назад
я использую семихостинг через свд вместо вывода в уарт. иначе это не отладка
@andriyyeromenko7695
@andriyyeromenko7695 2 года назад
С МК с ядром М0 и М0+ возможность выбора ITM отсутствует
@GennPen
@GennPen 3 года назад
Отладка у STM32 хорошая, спору нет. Не знаю как в других средах, в STM32CubeIDE есть еще график, отслеживание до четырех числовых переменных по SWO, но тут же есть "Live Expressions" которая работает по SWD и поддерживающая чары.
@ugene4063
@ugene4063 4 года назад
Ссылка на документ?
@ugene4063
@ugene4063 4 года назад
Нашёл.
@VladimirMedintsev
@VladimirMedintsev 4 года назад
Какой такой документ?
@ugene4063
@ugene4063 4 года назад
@@VladimirMedintsev я всё нашел.
Далее
STM32 DMA ч.1
26:54
Просмотров 1,5 тыс.
Уроки Ардуино. ПИД регулятор
28:57