ST-LINK переделка. Вывод SWO для отладки STM32
ฝัง
- เผยแพร่เมื่อ 4 ก.ย. 2024
- Рассказано о переделке программатора ST-LINK для того, чтобы добавить контакт SWO позволяющий упростить отладку кода на STM32.
------------------------------------------
Поддержать автора канала можно перейдя по ссылке:
yoomoney.ru/to...
Или просто отправив перевод на Yandex.кошелек:
4100116547550395
А также переводом по номеру карты Сбер:
4279-3000-1033-0561
------------------------------------------
Пойду, один из своих двух китайских девайсов переделаю :-). Спасибо!
*Легендарный дядька!*
Оригинально. Спасибо за полезный совет.
Большое спасибо за видео.
хорошее полезное кино,тоже десяток таких свистков куплено,так как они более чем отрабатываю свою цену,да и чтоб проще искать куда положил:))
Опишите полный процесс! Для чайника! нужно ли потом после аппаратной переделки ещо перепрошивать сам программатор, чтобы появилась поддержка swo и res???????
Спасибо!
Здравствуйте, Владимир. Большое спасибо за столь познавательное видео!
Сейчас как раз переделываю свой такой же "свисток" на F103T8C6. Но вот какой вопрос возник: Вы в своём видео как-то обошли момент - куда именно нам, на наших проектах, надо подключать контакт SWO? Т.е. вы показываете свою плату и не упоминаете куда и как в вашем проекте заведен этот провод. Не затруднит Вас раскрыть этот момент чуть подробнее? К примеру, как этот SWO завести на ту же приснопамятную платку BluePill? (F103C8T6).
И еще: зачем и куда нужно подключать на плату NRST? С немодифицированного "свитска", без этого дополнительного провода вроде бы всё прошивается нормально.
Спасибо за ваше желание поделиться своими знаниями!
На канале есть несколько видео в которых я рассказываю о модернизации программаторов и о создании собственных клонов. В описаниях ко всем этим роликам есть схемы.
@@VladimirMedintsev, я посмотрел и ролик про ваш собственный программатор, и про перенаправление возможностей SWD... посмотрел других авторов, но вопросы остались, поэтому я их и задал.
Я пока только осваиваю микроконтроллеры, опыта очень мало, грузом знаний похвастаться не могу. Но как электронщик со стажем понимаю, что раз в программаторе мы завели два новых провода - их надо как-то в проект подключить.
Полазил по рефернс-мануалу на STM32F103xx (RM0008) - там чёткого описания, куда именно и как выводится SWO не нашёл (даже поиск по документу не находит такую аббревиатуру). В документе an4989, на который Вы ссылаетесь в видео про перенаправление SWO, рассказано про текущую реализацию этого порта на девелоперских бордах... А как его заводить на других девелоперских бордах (не от STM) и на собственных проектах?
Может, я спрашиваю какую-то уж очень элементарную и простую вещь - уж извините! Хочется понять принцип: как такой вывод развести в собственном проекте?
@@alekseywolf5405 А, так вы делаете не программатор.... Вы тут ссылаетесь на RM0008. Откройте его на странице 1080 и внимательно изучите таблицу 219 в центре страницы и особое внимание уделите крайней правой колонке, там указаны выводы. В частности именно из этой таблицы я узнал, что SWO - > PB3.
Т.е. к вашему вопросу а как это заводить на "левых бордах". Да вот открываете раздел SWJ debug port pins любого Reference Manual и читаете к каким выводам конкретного микроконтроллера вам необходимо подключиться.
Вы задаете нормальные вопросы. Просто вы задаете это под роликом с программатором и часто невозможно понять и переключиться с темы на тему.
На самом деле все крайне просто.
@@VladimirMedintsev, спасибо за уделённое время и ваши ответы! С SWO вроде бы разобрался. Буду использовать.
А что с NRST? Я так и не понял, зачем он нужен? Ведь на разъем ST-Link вроде бы выведен RST... Когда и для чего нужен NRST с PB0?
Еще раз спасибо за ваше время!
reset нужен чтобы сбросить контроллер в момент подключения. используется если вы используете ножки интерфейса SWD для чего-то еще и переопределяете в прошивке, а также для работы с чипом у которого вы отключили отладку. Ну и для отладки контроллеров в режимах с низким энергопотреблением.
Спасибо
Всем привет.Надеюсь это видео ещё актуально, подскажите пожалуйста чем прошить STC152kf16s2 и можно ли с другого слить прошивку и залить на новый stc?
Спасибо.
На stm32f103c8t6 освободил пины РА 13 и РА14.
Хотя, если пользоваться кнопкой RESET и так можно не подключать Serial Wire.
Почему у меня ругается на volatitle и unsisned
Владимир, добрый день!)
Возможно Вы посчитаете это лишним, но Вы пробовали выводить русский текст через SWO? Я кодировку менял, не помогает.
Нет не пробовал.
А какая IDE? В STMCubeIDE нужно вручную вписать "CP1251" в настройках (Windows -> Preferences -> General -> Workspace). Тогда текст адекватно читается при передаче по UART, а также по SWO в приложении "STM32 ST-LINK Utility". Но во внутренней "SWV ITM Data Console" почему-то упорно применяется кодировка 8859-1, на текущий момент не нашел, где изменить кодировку в этой консоле.
Переделывал как-то свой программатор, прочитав одну статью в интернете. В статье рекомендовали поднять ногу с платы... В общем нога отломилась. При доработке нового программатора не стану повторять эту ошибку!
Спасибо, улыбнуло.
Нужно отдать для переделки мастеру, у которого руки растут не из жопы! Или купить оригинальны ST Link V3
хорошо! В следующий раз так и сделаю - отнесу двухдолларовое устройство мастеру.
@@olegp.3012 у меня несколько штук STLINK, оригинальный STLINK-V3, дороговат, но когда много работаешь в отладке, приятно что шина SWD работает на частоте 24 МГц вместо 4 МГц на STLINK-V2. Китайский клон STLINK-V2, не двухдолларовый, а полная копия оригинального STLINK-V2, переделан в STLINK-V2.1, добавлен аппаратный USB_RENUM, перепрошит на STLINK-V2.1 "V2J40A1 STM32 Debugger+Audio".
На основе плат Blue Pill STM32F103C8 два самодельных STLINK-V2.1, один с прошивкой "V2M27S7 STM8 Debug+Mass Storage+VCP", второй прошит "V2J40A1 STM32 Debugger+Audio". Разъемы микро USB на этих плат отвратительные, поэтому шнурок USB припаян прямо на плате, очень удобно и надежно. С другой стороны выведен 10 пиновый разъем под плоский жгут IDC, то есть с девайсом я подключаюсь жгутом с разъёмами. Выведены SWDIO SWCLK SWO RST TX RX 5V, отладочная плата может запитываться от программатора (+5V), прошиваться, отлаживаться, обмен через СОМ порт, SWO. Все очень компактно, на одном шнурке USB.
Доброго времени! Владимир, а подскажите, пожалуйста, почему при активации PE3 или PE4 в качестве входов возникает конфликт с SWO? Это в CubeIDE процессор STM32F407VET6, просто на китайской плате на этих пинах кнопочки... Заранее прошу очень больно не пинать.
Честно говоря из меня плохая гадалка. Я даже понятия не имею как у вас может выглядеть этот конфликт и как вы его диагностируете, видите и прочее. Вот я этот контроллер сейчас запустил в кубе и у меня все работает.
@@user-tx6pn1sx1k На ваших скриншотах нет проблемы. Желтая метка предупреждает что выбор ограничен, если вы откроете список, то обнаружите, что у вас стал недоступен JTAG, но никакого конфликта с SWD у вас нету.
yadi.sk/i/dS6Gh4EYMKiJSQ
@@VladimirMedintsev Спасибо, видимо я не до конца разобрался - буду разбираться.
F103c8t6 стоит чип внутри stlink. Все stшные проги ругаются на неоригинальность программатора. Подсоединил 2 проводка (reset, swo). Reset работает, swo никак не работает.
Возникла сложность с пустым проектов в cubemx в приложении в видео нет никаких референсов.
Непонятно как подключить ножку процессора SWO к тому регистру в который заносится символ, ведь эта ножка может работать как обычный ввод или вывод или аналоговый. В моем процессоре stm32f205 это ножка pb3. Так получилось, что у меня на этой ножке светодиод, но я могу кинуть провод с этой ноги на программатор, а светодиодом пока не пользоваться.
Какой формат данных на SWO, это не UART байты ? Я не могу это вывести в терминал ? Спасибо.
А сам программатор на 101 стан как прошить чтоб получить swo или там уже оно есть програмно по умолчанию??
Я не вижу смысла делать этот мод, так как программатор работает и без его. Это для Ардуино надо серийный выход потому что там нет отладчика, а все среды программирования для STM32 включают в себе отладчика и там каждую переменную можно следит внутри отладчика не выводя ее по серийному каналу. А если очен надо то тогда можно сделать это на одним из встроенным UART-ов
Это и так и не так.Возможность отладки по шагам - великая вещь, но иногда нужен вывод данных без остановки процесса, для наблюдения его в динамике, так сказать.Тогда логирование (в консоль) незаменимо.
Всё куда сложнее оказалось чем казалось. Вот неоригинальный он и всё. Зашил на 2.1 по статье на Хабре и стало ещё хуже, теперь обновить его невозможно а в keil evaluation mode как был так и остался и swo не работает. Не рекомендую для f103c8t6
скорее всего микроконтроллер не оригинальный. Такое уже бывало. Подделывают сэр.
@@VladimirMedintsev уже ночью определил что чип стоит не stm32 а какой то другой с той же почти маркировкой. Да, увы подделка :( а вот что keil на evaluation ругается так это оказывается лечится рубордом
/UPD разобрался, извиняюсь за беспокойство/ Вообще никак :( Всё припаяно, звонится от ноги и до ноги. Код вставлен в мейн, настройки вроде все проставлены, частоту гонял всякую. Дебаг идёт нормально, только лампочки тухнут, но в окне итм дата консоли пусто :( КубИДЕ, Мак. Попробую под виндой...
Владимир, здравствуйте столкнулся с интересной проблемой: SWO проходит через переделанный программатор только при определенном HCLK (8 мгц) при остальных тишина.
1. Откуда тактируется SWO?
2. Сталкивались ли вы с такой проблемой?
1. Абсолютно нет необходимости писать сотни одинаковых комментариев.
2. С аналогичной проблемой сталкиваются все, кто не правильно настроил тактирование во вкладке отладчика. Укажите там правильную частоту на которой работает ваша шина и все будет работать. А именно пункт меню Project -> Option for target. Далее вкладка Debug нажимаем на кнопку Settings в открывшемся окне Target driver setup переходим на вкладку Trace и там есть Core clock так вот это значение должно соответствовать тому на котором у вас работает SYSCLK.
Здравствуйте! А какой компаунд вы используете?
Китайский ТМ-7
может ли этот программатор работать через swd c nrf52832?
Нет, не будет.
Поясните пожалуйста, куда должен быть подключен сигнал SWO, который выходит из "свистка" ST Link20 и приходит на основную отладочную плату? К какому пину на процессоре?
Ну это зависит от того какой микроконтроллер вы используете. Назовете полностью микроконтроллер я вам скажу пин.
Stm32f103c8t6 хочу использовать
@@user-er7xq1oj5m Для этого микроконтроллера отладочный интерфейс подключается SWDIO - PA13 (34), SWCLK - PA14 (37) и SWO - PB3 (39)
Привет народ, купил себе st-link v2 китай. Он оказался на чипе APM32F103 это вроде бы клон STM32F103 знает кто можно ли его так же апгрейдить?
Нет. Не получится.
Данные через SWO поступают, но не смотря на то, что SysCLK настроил верно - полная билеберда. Подскажите, пожалуйста, в чем проблема?
В том, что вы не правильно настроили частоту на которой идет тактирование. Нет других причин.
@@VladimirMedintsev простите дилетанта, конечно, но если можно чуточку подробнее, пожалуйста. Может на почту office@atpp.su как удобно.
Вот тут есть специально подробно рассказано th-cam.com/video/pTJbO6RkfSI/w-d-xo.html
@@VladimirMedintsev премного благодарен
У самого 5-6 таких свистков, но если уже дошло до такого, то лучше купить недорогую отладочную плату Nucleo и юзать програматор с нее, там он гарантированно работает. Более того останется еще и нормальная плата для разработки. Кстати с недавних пор Clion поддерживает STM32.
Да и к той же нуклео чтобы swo получить тоже паяться придется. В чем же тогда выгода?
@@VladimirMedintsev А есть готовые отлпдочные решения?
Ну как бы полно... Например ST-Link (не китайский, а фирменный), J-Link от Segger, ладно с манией величия, мой вариант (клон) ST-Link о котором я рассказывал на канале. У них у всех есть J-Tag интерфейс + SWD и дополнительный SWO вывод.
@@VladimirMedintsev Jlink и оригинальный Stlink стоят как крыло от самолета. Интересует что-то подешевле
Ну тогда собирайте моего клона по нему на этом канале есть куча видео и ссылки на заказ плат. Как бы другого ничего я предложить не могу.
Всем доброго времени суток. Возможно ли этим программатором прошить ST72F324K6T3 ?
Нет.
@@VladimirMedintsev Не подскажете каким программатором можно его прошить?
@@user-jq6je5ol3n inDART ну или внутрисхемный программатор подходящий для ST7. Там не сильно сложно. Вы просто интернет на английском почитайте, информации много, достаточно вбить запрос типа "ST7 ICC"
@@VladimirMedintsev Спасибо!
Всем привет.Надеюсь это видео ещё актуально, подскажите пожалуйста чем прошить STC152kf16s2 и можно ли с другого слить прошивку и залить на новый stc?
А можно то, что нужно для отладки в текстовом виде? А то смотрю с телефона - не видно... И ноут с разрешением 720 показывает с искажениями...
Я вообще ничего не понял...
Vladimir Medintsev Сумбурно написал, извиняюсь. Я про то, что нужно сделать в Keil'e. Адрес регистра и прочее. Мартышка к старости слаба глазами стала..
Вот этот код с небольшими изменениями (для читабельности, ни на что не влияют) -
#define ITM_Port8(n) (*((volatile unsigned char *)(0xE0000000+4*n))
#define ITM_Port16(n) (*((volatile unsigned short*)(0xE0000000+4*n))
#define ITM_Port32(n) (*((volatile unsigned long *)(0xE0000000+4*n))
#define DEMCR (*((volatile unsigned long *)(0xE000EDFC)))
#define TRCENA 0x01000000
struct __FILE { int handle; /* Add whatever you need here */ }
FILE __stdout;
FILE __stdin;
int fputc(int ch, FILE* f)
{
if(DEMCR & TRCENA)
{
while(ITM_Port32(0) == 0) ; // Do nothing while ITM_Port32(0) is not 0
ITM_Port8(0) = ch;
}
return ch;
}
@@Booruvcheek не работает код
@@videoCxema Я специально снимал ролик где рассказывал что этот код вообще можно руками не писать вот тут посмотрите и все вопросы отпадут - th-cam.com/video/pTJbO6RkfSI/w-d-xo.html
Вы сумасшедшие ?
Третий ролик смотрю. Куда подключается swo ?
от РА10 к PB3 например платы BluePill
а пошаговая отладка с точками останова возможна?
Да, возможна
@@VladimirMedintsev для этого какие-то дополнительные провода нужны ?
Нет, не нужны. Там есть SWD это два провода. Их достаточно для отладки
ресет стлинка, садишь на ресет прошиваемого процессора а в кубе ставишь сериал вире в графе дебаг. воттаны по нулям и все работает. у меня так.
А что это воттаны ?
@@user-ld2xi8sn6l Вас только это заинтересовало? Мне вообще не понятно что комментатор хотел сказать своим сообщением...
@@user-ld2xi8sn6l речь идет о ножках boot или jumper-ы, вроде бы как,
Владимир, можно ли взломать прошивку stlink, чтобы портировать на любой чип?
Нет смысла ее ломать. Не стоит она того, вариантов программаторов много. Можете даже свой написать или модифицировать имеющиеся в исходных кодах.
Здравствуйте! А какой компаунд вы используете?
Это уже после карантина смогу ответить. Не помню я его название, надо на тюбике смотреть.
@@VladimirMedintsev о, а я уже спросил, оказывается, а вы ответили! Слава ютубу, который поднимает твои комменты наверх. И позор ютубу, что не все ответы показывает в уведомлениях, я ваш ответ про китайский TM-7 пропустил. Спасибо вам?
@@trytrytrytrytrytryt не нашёл его у китайцев. Есть фото, или ссылка?
@@SerjPC нету. Надо спрашивать у автора.
Да уже раз 20 давал ссылку
a.aliexpress.com/_9hTwpk