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

แชร์
ฝัง
  • เผยแพร่เมื่อ 6 ม.ค. 2019
  • Рассказывается о возможностях интерфейса 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
    ------------------------------------------
  • วิทยาศาสตร์และเทคโนโลยี

ความคิดเห็น • 49

  • @Wtf95
    @Wtf95 4 ปีที่แล้ว +9

    Огромное человеческое спасибо за то что находите время и пилите видосы для начинающих, вы даже не представляете насколько это помогает сообществу.!

    • @ajdarseidzade688
      @ajdarseidzade688 4 ปีที่แล้ว

      + Полностью согласен! Особенно момент на 15:13. :)) Но я это видео не 15 с чем-то минут смотрел, а может час по частям. Пока находил/просматривал упомянутые тут документы. Крутой человек (и комментатор и как специалист).

  • @realtor3000
    @realtor3000 3 ปีที่แล้ว +2

    Тот случай когда одного лайка мало. Хочется поставить 100500

  • @msdesignru
    @msdesignru 5 ปีที่แล้ว +3

    Спасибо, интересный канал, много полезных материалов

  • @user-qn9nt2bl8b
    @user-qn9nt2bl8b 3 ปีที่แล้ว

    Спасибо за открытые возможности по отладка!

  • @raven8867
    @raven8867 3 ปีที่แล้ว +1

    Спасибо Вам за ваши видео, очень позновательно !

  • @SiemensSxg75Patch
    @SiemensSxg75Patch 5 ปีที่แล้ว +1

    Спасибо, полезно)

  • @sledleo
    @sledleo 4 ปีที่แล้ว +1

    круто!! супер вещь!

  • @night_gryphon
    @night_gryphon 3 ปีที่แล้ว +5

    из не описанного на что лично я наступил - что бы printf вывел данные в консоль в конце строки должно стоять
    , либо необходимо отключить буферизацию вывода
    setvbuf(stdout, NULL, _IONBF, 0);

    • @Nidvoraich
      @Nidvoraich 2 ปีที่แล้ว

      люблю тебя

  • @user-vg9nq5rj3w
    @user-vg9nq5rj3w 5 ปีที่แล้ว +2

    Ждем

  • @bbrylov
    @bbrylov 5 ปีที่แล้ว

    Владимир, здравствуйте столкнулся с интересной проблемой: SWO проходит через переделанный программатор только при определенном HCLK (8 мгц) при остальных тишина.
    1. Откуда тактируется SWO?
    2. Сталкивались ли вы с такой проблемой?

  • @user-vo4of8hw8d
    @user-vo4of8hw8d 5 ปีที่แล้ว +2

    Приветствую Вас добрый человек ! Вы серьёзно подошли к вопросу отладки. Установите Atolic True studio и будет вам счастье. В файлах поддержки чётко обьясняется как производить отладку. Помимо принт ф одновременно можно выводить несколько переменных в отдельное окно. В Кейле я проделывал тоже,что вы показали в этом ролике,потратил очень много времени на изучение SWO. После установки Atolic True studio , Кейл даже открывать нет желания. )))

    • @VladimirMedintsev
      @VladimirMedintsev  5 ปีที่แล้ว

      Я ни в коем случае не яаляюсь адептом тайного ордена любителей кейла. Каждый выбирает себе инструментарий по вкусу. Но как одно из отличий вы указали вывод переменных в отдельное окно. А в кейле вы этого разве не можете сделать? Там есть и просмотр стека и переменных.

    • @englishman_i
      @englishman_i 5 ปีที่แล้ว +1

      Дайте ссылку пожалуйста на эти файлы, ознакомимся хоть.

    • @VladimirMedintsev
      @VladimirMedintsev  5 ปีที่แล้ว

      И мне тоже...

    • @arakeldesign
      @arakeldesign 5 ปีที่แล้ว

      Диван Диваныч это Труе Студио которое сейчас принадлежит ST?

    • @user-vo4of8hw8d
      @user-vo4of8hw8d 5 ปีที่แล้ว

      @@englishman_i На офсайте атолика посмотрите, мне с телевизора не очень удобно пользоваться браузером.

  • @IgorPshynyk
    @IgorPshynyk 5 ปีที่แล้ว

    Вводить можно через тотже вотч. Главное не трогать регистры таймеров. их значения нужно менять через переменную, в коде, а в вотче меняем значение переменной.

  • @Prostopravda
    @Prostopravda 2 หลายเดือนก่อน

    Отладка работает, но при включенной трассировке Keil выдает "Trace: No Synchronization". Использую китайский ST-Link V2, плата на базе STM32F407VET6. Тот же результат на STM32F103C8T6. Танцы с бубном не помогают, гугл тоже. Может ли трассировка вообще работать с китайским ST-Link V2?

  • @blandger
    @blandger 5 ปีที่แล้ว +1

    Досмотрел. Про ввод не знал.
    Был опыт использования Rust для программ контроллеров?

    • @VladimirMedintsev
      @VladimirMedintsev  5 ปีที่แล้ว

      Нет, не было. Есть FreeRToS ее более чем достаточно.

    • @user-kd6je4ld6q
      @user-kd6je4ld6q 4 ปีที่แล้ว

      @@VladimirMedintsev а с изиком програмирования D когда либо игрались?

    • @VladimirMedintsev
      @VladimirMedintsev  4 ปีที่แล้ว

      @@user-kd6je4ld6q По сложившейся практике чаще всего для программирования микроконтроллеров используется классический Си.

  • @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 ปีที่แล้ว +1

      Я немного приболел. По этой причине и нет роликов. Как поправлюсь так сниму что-нибудь новое. По поводу вывода, проблема старая, я так понимаю что не корректно отрабатывает сам STLink.

    • @alekseywolf5405
      @alekseywolf5405 3 ปีที่แล้ว +1

      @@VladimirMedintsev, спасибо! Желаю скорейшего выздоровления!

  • @user-kd6je4ld6q
    @user-kd6je4ld6q 4 ปีที่แล้ว +3

    а для cubeIDE (на linux), на тему етого видего, можите посоветовать какую нибуть статью?

  • @maskon78
    @maskon78 5 ปีที่แล้ว +1

    Ай, спасибо, Айболит!

  • @vladimirvesely808
    @vladimirvesely808 2 ปีที่แล้ว

    Тема интересная. Не могу сообразить как нечто подобное сделать в кубе. В моем ST-Link есть вывод DIO. Поэтому надеюсь, что возможность вывода текста в консоль есть.

    • @VladimirMedintsev
      @VladimirMedintsev  2 ปีที่แล้ว

      В инструкции к кубу прочитайте. У него великолепное руководство пользователя и этот момент там описан.

    • @vladimirvesely808
      @vladimirvesely808 2 ปีที่แล้ว

      @@VladimirMedintsev Спасибо за моментальную реакцию. Нашел документ UM2609. Там есть буквы по интересующей теме. Многовато их... Попробую что-то понять.

  • @retro55i
    @retro55i 3 ปีที่แล้ว

    А что потом делать с ненужными операторами в программе, после окончания процесса отладки?

    • @VladimirMedintsev
      @VladimirMedintsev  3 ปีที่แล้ว +5

      Дык вы все закладываемые в код отладочные строки кода предваряйте инструкцией #ifdef а завершайте #endif это позволит вам включать -выключать режим отладки кода одной строкой #define.
      Просто ознакомьтесь с директивами компилятора. Очень удобно

  • @maximpetrov9878
    @maximpetrov9878 4 ปีที่แล้ว +1

    11 минута - у меня - Trace: no Sinchronization , так и не могу справиться - почему ? сможете подсказать?

    • @VladimirMedintsev
      @VladimirMedintsev  4 ปีที่แล้ว

      Option for Target -> Debug -> Settings -> Trace -> Core clock и Trace Enable правильно установлены? Скорее всего нет.

  • @td_44
    @td_44 หลายเดือนก่อน

    Подскажите плииииз. Как в CUBE IDE можно из переменной выдать в порт логический уровень вместо GPIO_PIN_SET , например HAL_GPIO_WritePin(Port_DS, DS, VIHOD); . Перечитал описание HAL, весь гугль отфильтровал, но ничего нету.

    • @VladimirMedintsev
      @VladimirMedintsev  หลายเดือนก่อน

      Вопрос не понятен.

    • @td_44
      @td_44 หลายเดือนก่อน

      @@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  หลายเดือนก่อน

      @td_44 HAL_GPIO_WritePin(порт, пин, переменная);

    • @td_44
      @td_44 หลายเดือนก่อน

      @@VladimirMedintsev Спасибо Володя😁🍟🍟😁, я просто ступил, шина 40 bit из 74HC595 , немного запутался в написании 40-ка переменных потому всплывало сообщение о ошибке. Нашлась причина,как говорится :-"Утро вечера мудреннее".

  • @user-xn6wm4nw3x
    @user-xn6wm4nw3x 2 ปีที่แล้ว

    я использую семихостинг через свд вместо вывода в уарт. иначе это не отладка

  • @andriyyeromenko7695
    @andriyyeromenko7695 2 ปีที่แล้ว

    С МК с ядром М0 и М0+ возможность выбора ITM отсутствует

  • @ugene4063
    @ugene4063 4 ปีที่แล้ว

    Ссылка на документ?

    • @ugene4063
      @ugene4063 4 ปีที่แล้ว

      Нашёл.

    • @VladimirMedintsev
      @VladimirMedintsev  4 ปีที่แล้ว

      Какой такой документ?

    • @ugene4063
      @ugene4063 4 ปีที่แล้ว +1

      @@VladimirMedintsev я всё нашел.

  • @GennPen
    @GennPen 3 ปีที่แล้ว +2

    Отладка у STM32 хорошая, спору нет.
    Не знаю как в других средах, в STM32CubeIDE есть еще график, отслеживание до четырех числовых переменных по SWO, но тут же есть "Live Expressions" которая работает по SWD и поддерживающая чары.