STM32 JTAG контакты с помощью
Я использую SWD для загрузки прошивки в чип stm32 и отладки. Он использует 3 контакта: SWCLK(TCK)
, SWDIO(TMS)
а также GND
,
Могу ли я использовать другие выводы JTAG, которые не используются в интерфейсе SWD:(TDI, TDO, TRST
) для собственных целей при сохранении возможности перепрошивки прошивки в чип?
5 ответов
На самом деле SWD использует только два контакта SWD и SCLK. GND распространены и не могут быть использованы для любых других целей. SWO - только если вы используете (и нуждаетесь) такие функции, как полухостинг
Если вы запустите CubeMx - вы увидите, что если вы выберете SWD, все остальные выводы JTAG станут доступны для общего пользования.
Ну, это может зависеть от возможностей вашего отладчика....
Но в целом: да, вы можете программировать флэш-память только через SWD и использовать оставшиеся контакты JTAG для других целей. Например, отладчик Lauterbach может сделать это.
Однако, если ваш инструмент отладчика поддерживает запись трассировки, я бы не использовал вывод TDO для вашего приложения, так как этот вывод обычно можно использовать как вывод трассировки SWO в режиме SWD. (с Cortex-M3/M4 или M7)
Я просто могу добавить, что вы всегда можете подключиться к stm32 с помощью JTAG или SWD, если вы выберете в настройках отладчика подключение при перезагрузке.
Это необходимо, когда вы намеренно или непреднамеренно перенастраиваете выводы JTAG или SWD. Однако это также зависит от оборудования, подключенного к этим контактам, поэтому иногда это не будет работать.
Тем не менее, этого должно быть достаточно для загрузки прошивки.
После сброса UC будет готов к подключению через SWD или JTAG, все зависит от вашего отладчика (так как все контакты будут в конфигурации по умолчанию), но когда ваше приложение перенастроит один из IO, используемых интерфейсом отладки, вы потеряете возможность подключения к ядру через этот интерфейс.
Если вы не используете какой-либо из выводов SWD (CLK и DIO), вы сможете подключиться к своей цели в любое время, даже не сбрасывая УЦ, так как эти выводы будут готовы к подключению в любое время.
но, если вы переконфигурировали один из этих контактов, например, для чтения кнопки, вам нужно будет сбросить цель и подключиться к ней до запуска вашего кода, в этом случае вам нужно будет добавить к интерфейсу отладки соединение с RESET, поэтому отладчик сбрасывает цель и подключается к ней сразу после. (и, очевидно, вы не можете нажать кнопку во время отладки),поэтому всегда полезно добавить RESET к соединению отладчика
Да, вы можете использовать другие контакты JTAG. И если вам не нужна отладка, вы также можете использовать выводы SWD после перепрошивки чипа, но в этом случае вам, скорее всего, потребуется перепрограммировать память из системной памяти.