Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° встраиваСмых систСм Π½Π° Π±Π°Π·Π΅ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠ² STMicroelectronics Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Π° Π±Π΅Π· понимания ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΎΠ² ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ ΠΈ программирования Ρ‡ΠΈΠΏΠΎΠ². ΠšΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌ элСмСнтом здСсь выступаСт ΠΎΡ‚Π»Π°Π΄ΠΎΡ‡Π½Ρ‹ΠΉ интСрфСйс, ΠΈ Ссли Π²Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅ с Π»ΠΈΠ½Π΅ΠΉΠΊΠΎΠΉ STM32, Ρ‚ΠΎ Π°Π±Π±Ρ€Π΅Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹ SWDIO ΠΈ SWCLK станут вашими постоянными спутниками. Π­Ρ‚ΠΈ Π΄Π²Π° сигнала ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‚ Ρ„ΠΈΠ·ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ основу ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° Serial Wire Debug, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€ΠΈΡˆΠ΅Π» Π½Π° смСну Π³Ρ€ΠΎΠΌΠΎΠ·Π΄ΠΊΠΎΠΌΡƒ JTAG Π² ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½Ρ‹Ρ… корпусах.

Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ классичСского JTAG, Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰Π΅Π³ΠΎ пяти ΡΠΈΠ³Π½Π°Π»ΡŒΠ½Ρ‹Ρ… Π»ΠΈΠ½ΠΈΠΉ, ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» SWD позволяСт ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½ΠΎ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ΠΎΡ‚Π»Π°Π΄ΠΊΠΎΠΉ ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Ρ„Π»ΡΡˆ-памяти, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ всСго Π΄Π²Π° ΠΏΡ€ΠΎΠ²ΠΎΠ΄Π°. Π­Ρ‚ΠΎ критичСски Π²Π°ΠΆΠ½ΠΎ для соврСмСнных устройств с ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½Ρ‹ΠΌ количСством Π²Ρ‹Π²ΠΎΠ΄ΠΎΠ². ΠŸΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ΅ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ SWDIO ΠΈ SWCLK Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΡƒΡŽ связь ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠΎΠΌ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ST-Link ΠΈΠ»ΠΈ J-Link) ΠΈ Ρ†Π΅Π»Π΅Π²Ρ‹ΠΌ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠΌ.

Ошибки Π½Π° этом этапС часто приводят ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ IDE Π½Π΅ Π²ΠΈΠ΄ΠΈΡ‚ устройство ΠΈΠ»ΠΈ процСсс ΠΏΡ€ΠΎΡˆΠΈΠ²ΠΊΠΈ срываСтся Π½Π° ΠΏΠ΅Ρ€Π²Ρ‹Ρ… ΠΏΡ€ΠΎΡ†Π΅Π½Ρ‚Π°Ρ…. Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎ Ρ€Π°Π·Π±Π΅Ρ€Π΅ΠΌ элСктричСскиС особСнности Π»ΠΈΠ½ΠΈΠΉ, трСбования ΠΊ Ρ‚Π°ΠΉΠΌΠΈΠ½Π³Π°ΠΌ ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Π΅ настройки, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ для бСсшовной Ρ€Π°Π±ΠΎΡ‚Ρ‹.

АрхитСктура интСрфСйса ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ STM32

ΠœΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Ρ‹ сСмСйства STM32 построСны Π½Π° ядрах ARM Cortex, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ встроСнный ΠΎΡ‚Π»Π°Π΄ΠΎΡ‡Π½Ρ‹ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ. Π­Ρ‚ΠΎΡ‚ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ, Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ Debug Access Port (DAP), обСспСчиваСт доступ ΠΊ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΌ рСсурсам Ρ‡ΠΈΠΏΠ°, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ рСгистры процСссора ΠΈ ΠΏΠ°ΠΌΡΡ‚ΡŒ. Для внСшнСго ΠΌΠΈΡ€Π° этот доступ открываСтся Ρ‡Π΅Ρ€Π΅Π· физичСский интСрфСйс, Π³Π΄Π΅ Π»ΠΈΠ½ΠΈΠΈ SWDIO ΠΈ SWCLK ΠΈΠ³Ρ€Π°ΡŽΡ‚ Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΡŒΠ½ΡƒΡŽ Ρ€ΠΎΠ»ΡŒ.

Линия SWCLK (Serial Wire Clock) являСтся Ρ‚Π°ΠΊΡ‚ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΌ сигналом. Она гСнСрируСтся ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠΎΠΌ ΠΈ Π·Π°Π΄Π°Π΅Ρ‚ Ρ€ΠΈΡ‚ΠΌ ΠΎΠ±ΠΌΠ΅Π½Π° Π΄Π°Π½Π½Ρ‹ΠΌΠΈ. ВсС ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ синхронизированы ΠΈΠΌΠ΅Π½Π½ΠΎ этим сигналом, поэтому Π΅Π³ΠΎ качСство ΠΈ отсутствиС искаТСний критичСски Π²Π°ΠΆΠ½Ρ‹. Частота этого сигнала ΠΌΠΎΠΆΠ΅Ρ‚ Π²Π°Ρ€ΡŒΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ, Π½ΠΎ ΠΎΠ½Π° Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°Ρ‚ΡŒ ΠΏΡ€Π΅Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ значСния, ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Π΅ Π² Π΄Π°Ρ‚Π°ΡˆΠΈΡ‚Π΅ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ Ρ‡ΠΈΠΏΠ°.

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Π”Π»ΠΈΠ½Π° ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΎΠ², ΡΠΎΠ΅Π΄ΠΈΠ½ΡΡŽΡ‰ΠΈΡ… ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ ΠΈ ΠΏΠ»Π°Ρ‚Ρƒ, Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ влияСт Π½Π° Ρ†Π΅Π»ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ сигнала SWCLK. ΠŸΡ€ΠΈ Π΄Π»ΠΈΠ½Π΅ Π±ΠΎΠ»Π΅Π΅ 10-15 см Π±Π΅Π· экранирования ΠΌΠΎΠ³ΡƒΡ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Ρ‚ΡŒ выбросы ΠΈ Π·Π²ΠΎΠ½, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ ошибкам ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ².

Линия SWDIO (Serial Wire Data Input/Output) являСтся Π΄Π²ΡƒΠ½Π°ΠΏΡ€Π°Π²Π»Π΅Π½Π½ΠΎΠΉ. По Π½Π΅ΠΉ ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ, Π΄Π°Π½Π½Ρ‹Π΅ для записи Π²ΠΎ Ρ„Π»ΡΡˆ-ΠΏΠ°ΠΌΡΡ‚ΡŒ ΠΈ ΠΎΡ‚Π²Π΅Ρ‚Ρ‹ ΠΎΡ‚ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π°. ΠŸΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» строго Ρ€Π΅Π³Π»Π°ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π±ΠΈΡ‚, ΠΈ любоС Π½Π°Ρ€ΡƒΡˆΠ΅Π½ΠΈΠ΅ Ρ‚Π°ΠΉΠΌΠΈΠ½Π³ΠΎΠ² ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ΠΏΠΎΡ‚Π΅Ρ€Π΅ синхронизации.

Π’Π°ΠΆΠ½ΠΎ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ физичСски эти ΠΏΠΈΠ½Ρ‹ часто совмСщСны с ΠΏΠΎΡ€Ρ‚Π°ΠΌΠΈ ΠΎΠ±Ρ‰Π΅Π³ΠΎ назначСния (GPIO). НапримСр, Π½Π° ΠΌΠ½ΠΎΠ³ΠΈΡ… ΠΏΠ»Π°Ρ‚Π°Ρ… STM32F103 это ΠΏΠΈΠ½Ρ‹ PA13 ΠΈ PA14. ПослС сброса ΠΈΠ»ΠΈ ΠΏΡ€ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ питания ΠΎΠ½ΠΈ находятся Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ, Π½ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎ ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π½Π°Π·Π½Π°Ρ‡ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΈΠ½ΠΎΠ³Π΄Π° ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ΠΏΠΎΡ‚Π΅Ρ€Π΅ доступа ΠΊ Ρ‡ΠΈΠΏΡƒ, Ссли Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ восстановлСния.

ЀизичСскоС ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΈ распиновка

Для Π½Π°Ρ‡Π°Π»Π° Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ ΠΎΡ‚Π»Π°Π΄ΠΎΡ‡Π½Ρ‹ΠΉ Π°Π΄Π°ΠΏΡ‚Π΅Ρ€ ΠΈ Ρ†Π΅Π»Π΅Π²ΡƒΡŽ ΠΏΠ»Π°Ρ‚Ρƒ. Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½Ρ‹ΠΉ Ρ€Π°Π·ΡŠΠ΅ΠΌ ST-Link V2 ΠΈΠ»ΠΈ V3 ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‡Π΅Ρ‚ΠΊΡƒΡŽ ΠΌΠ°Ρ€ΠΊΠΈΡ€ΠΎΠ²ΠΊΡƒ Π²Ρ‹Π²ΠΎΠ΄ΠΎΠ². ΠžΡΠ½ΠΎΠ²Π½Ρ‹ΠΌΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Π°: VCC, GND, SWDIO ΠΈ SWCLK. Иногда встрСчаСтся пятый ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚ β€” NRST (сброс), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠ»Π΅Π·Π΅Π½ для восстановлСния "Π·Π°Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ…" Ρ‡ΠΈΠΏΠΎΠ².

Π‘ΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ максимально ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΌΠΈ ΠΏΡ€ΠΎΠ²ΠΎΠ΄Π½ΠΈΠΊΠ°ΠΌΠΈ. ИспользованиС Π΄Π»ΠΈΠ½Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΎΠ²-"ΠΊΡ€ΠΎΠΊΠΎΠ΄ΠΈΠ»ΠΎΠ²" ΠΈΠ»ΠΈ ΡΠ°ΠΌΠΎΠ΄Π΅Π»ΡŒΠ½Ρ‹Ρ… ΡˆΠ»Π΅ΠΉΡ„ΠΎΠ² ΠΈΠ· Π²ΠΈΡ‚ΠΎΠΉ ΠΏΠ°Ρ€Ρ‹ Π±Π΅Π· экрана часто становится ΠΏΡ€ΠΈΡ‡ΠΈΠ½ΠΎΠΉ Π½Π΅ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹. Π‘ΠΈΠ³Π½Π°Π» SWCLK особСнно чувствитСлСн ΠΊ Π½Π°Π²ΠΎΠ΄ΠΊΠ°ΠΌ.

  • πŸ”Œ VCC β€” ΠΏΠΈΡ‚Π°Π½ΠΈΠ΅ Ρ†Π΅Π»Π΅Π²ΠΎΠΉ ΠΏΠ»Π°Ρ‚Ρ‹ (ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ 3.3Π’). Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ ваш ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ способСн Π²Ρ‹Π΄Π°Ρ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΉ Ρ‚ΠΎΠΊ, ΠΈΠ½Π°Ρ‡Π΅ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ внСшнСС ΠΏΠΈΡ‚Π°Π½ΠΈΠ΅.
  • ⚑ GND β€” общая зСмля. Π‘Π΅Π· соСдинСния зСмСль ΠΎΠ±ΠΌΠ΅Π½ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ устройствами с Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»Π°ΠΌΠΈ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½.
  • πŸ“‘ SWDIO β€” линия Π΄Π°Π½Π½Ρ‹Ρ…. ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ ΠΊ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΌΡƒ ΠΏΠΈΠ½Ρƒ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° (часто PA13).
  • ⏱️ SWCLK β€” линия тактирования. ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ ΠΊ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΌΡƒ ΠΏΠΈΠ½Ρƒ (часто PA14).

БущСствуСт распространСнная ошибка, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ ΠΏΡƒΡ‚Π°ΡŽΡ‚ ΠΏΠΈΠ½Ρ‹ Π½Π° Ρ€Π°Π·ΡŠΠ΅ΠΌΠ΅ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠ° ΠΈ Ρ†Π΅Π»Π΅Π²ΠΎΠΉ ΠΏΠ»Π°Ρ‚Ρ‹. ВсСгда ΡΠ²Π΅Ρ€ΡΠΉΡ‚Π΅ΡΡŒ с Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠ΅ΠΉ ΠΊ вашСй ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ ΠΏΠ»Π°Ρ‚Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΠ»ΠΈ схСмС устройства. ΠΠ΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ΅ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΎΠΌΡƒ Π·Π°ΠΌΡ‹ΠΊΠ°Π½ΠΈΡŽ ΠΈ Π²Ρ‹Ρ…ΠΎΠ΄Ρƒ оборудования ΠΈΠ· строя.

Если Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ ΡΠ°ΠΌΠΎΠ΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π°Π΄Π°ΠΏΡ‚Π΅Ρ€ Π½Π° Π±Π°Π·Π΅ STM32 (Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ Black Magic Probe ΠΈΠ»ΠΈ ΠΊΠ»ΠΎΠ½Ρ‹ ST-Link), ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ ΡƒΡ€ΠΎΠ²Π½ΠΈ напряТСний совмСстимы. Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ STM32 Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ ΠΎΡ‚ 3.3Π’, Π½ΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ старыС ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΈΠ»ΠΈ спСцифичСскиС сСрии ΠΌΠΎΠ³ΡƒΡ‚ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π°.

Настройка частоты ΠΈ Ρ‚Π°ΠΉΠΌΠΈΠ½Π³ΠΎΠ²

Одной ΠΈΠ· самых частых ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ ΠΏΡ€ΠΈ ΠΎΡ‚Π»Π°Π΄ΠΊΠ΅ являСтся Π½Π΅Π²Π΅Ρ€Π½ΠΎ выбранная частота интСрфСйса SWD. ΠžΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ сигнал SWCLK, ΠΈ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡƒΡΠΏΠ΅Π²Π°Ρ‚ΡŒ Ρ€Π΅Π°Π³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° Π½Π΅Π³ΠΎ. Если частота слишком высока, Ρ†Π΅Π»Π΅Π²ΠΎΠ΅ устройство Π½Π΅ смоТСт ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅, ΠΈ связь прСрвСтся.

РСкомСндуСтся Π½Π°Ρ‡ΠΈΠ½Π°Ρ‚ΡŒ ΠΎΡ‚Π»Π°Π΄ΠΊΡƒ с минимально Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠΉ частоты, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, 100 ΠΊΠ“Ρ† ΠΈΠ»ΠΈ 500 ΠΊΠ“Ρ†. Волько ΡƒΠ±Π΅Π΄ΠΈΠ²ΡˆΠΈΡΡŒ Π² стабности соСдинСния, частоту ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ²Ρ‹ΡˆΠ°Ρ‚ΡŒ Π΄ΠΎ 2 ΠœΠ“Ρ†, 4 ΠœΠ“Ρ† ΠΈΠ»ΠΈ Π²Ρ‹ΡˆΠ΅, Π² зависимости ΠΎΡ‚ возмоТностСй Ρ‡ΠΈΠΏΠ° ΠΈ качСства ΠΌΠΎΠ½Ρ‚Π°ΠΆΠ°.

πŸ“Š Какая частота SWD Ρƒ вас Ρ‡Π°Ρ‰Π΅ всСго Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ ошибки?
  • 100 ΠΊΠ“Ρ†
  • 1 ΠœΠ“Ρ†
  • 4 ΠœΠ“Ρ†
  • 8 ΠœΠ“Ρ† ΠΈ Π²Ρ‹ΡˆΠ΅

Π’ инструмСнтах Π²Ρ€ΠΎΠ΄Π΅ OpenOCD ΠΈΠ»ΠΈ STM32CubeProgrammer ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ частоты задаСтся явно. Если Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ OpenOCD, ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

adapter_khz 1000

Π—Π΄Π΅ΡΡŒ указываСтся частота Π² ΠΊΠΈΠ»ΠΎΠ³Π΅Ρ€Ρ†Π°Ρ…. Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 1000 ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ 1 ΠœΠ“Ρ†. Для ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ½Ρ‹Ρ… ΠΏΠ»Π°Ρ‚ ΠΈΠ»ΠΈ ΠΏΠ»Π°Ρ‚ с Π΄Π»ΠΈΠ½Π½Ρ‹ΠΌΠΈ ΠΏΡ€ΠΎΠ²ΠΎΠ΄Π°ΠΌΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ стоит ΡΠ½ΠΈΠ·ΠΈΡ‚ΡŒ Π΄ΠΎ 100 (100 ΠΊΠ“Ρ†).

Π’Π°ΠΊΠΆΠ΅ стоит ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ состояниС тактирования самого ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π°. Если Ρ‡ΠΈΠΏ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΎΡ‚ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π³ΠΎ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° (HSI), Π΅Π³ΠΎ частота ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ номинальной, Ρ‡Ρ‚ΠΎ влияСт Π½Π° Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ Ρ‚Π°ΠΉΠΌΠ°ΡƒΡ‚Ρ‹. Однако, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ SWD синхронный интСрфСйс, управляСмый мастСром (ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠΎΠΌ), частота ядра МК влияСт Π½Π° ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠΉ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ, Π½ΠΎ Π½Π΅ Π½Π° Ρ„ΠΈΠ·ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Ρƒ Π±ΠΈΡ‚ ΠΏΠΎ линиям.

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Π°Ρ конфигурация OpenOCD ΠΈ GDB

Для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с интСрфСйсом SWD Π² срСдС OpenOCD Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΡΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ интСрфСйс ΠΈ Ρ†Π΅Π»Π΅Π²ΠΎΠΉ Ρ‡ΠΈΠΏ. ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ содСрТат опрСдСлСния Transport Layer (SWD ΠΈΠ»ΠΈ JTAG) ΠΈ спСцифичныС настройки для сСмСйства STM32.

ΠŸΡ€ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ соСдинСния OpenOCD считываСт IDCODE рСгистра процСссора Ρ‡Π΅Ρ€Π΅Π· Π»ΠΈΠ½ΠΈΠΈ SWDIO ΠΈ SWCLK. Если этот этап ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ, ΠΌΡ‹ Π²ΠΈΠ΄ΠΈΠΌ сообщСниС ΠΎ Π½Π°ΠΉΠ΄Π΅Π½Π½ΠΎΠΌ ядрС Cortex-M. Π’ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС, ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π° Π±ΡƒΠ΄Π΅Ρ‚ бСсконСчно ΠΏΡ‹Ρ‚Π°Ρ‚ΡŒΡΡ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ связь ΠΈΠ»ΠΈ выдаст ΠΎΡˆΠΈΠ±ΠΊΡƒ сканирования Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠΈ.

Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€ минимальной ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ для STM32F103:

source [find interface/stlink.cfg]

transport select swd

source [find target/stm32f1x.cfg]

Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° transport select swd ΠΏΡ€ΠΈΠ½ΡƒΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ интСрфСйс Π² Ρ€Π΅ΠΆΠΈΠΌ Serial Wire Debug. Π‘Π΅Π· этой строки OpenOCD ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΏΡ‹Ρ‚Π°Ρ‚ΡŒΡΡ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ JTAG ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, Ρ‡Ρ‚ΠΎ Π½Π΅ сработаСт, Ссли физичСски ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΄Π²Π° сигнала.

Π§Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ, Ссли OpenOCD Π½Π΅ Π²ΠΈΠ΄ΠΈΡ‚ Ρ‡ΠΈΠΏ?

ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ reset_config srst_only ΠΈΠ»ΠΈ srst_nogate. Π’Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅, Π½Π΅ Π·Π°Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Π½ Π»ΠΈ Ρ‡ΠΈΠΏ Π·Π°Ρ‰ΠΈΡ‚ΠΎΠΉ чтСния (RDP Level 1). Π’ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… случаях ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ΅ сниТСниС частоты Π΄ΠΎ 50 ΠΊΠ“Ρ†.

Π’ срСдС GDB послС ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΊ сСрвСру OpenOCD ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ. НапримСр, Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ рСгистра ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ:

(gdb) monitor stm32f1x mass_erase 0

Π­Ρ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΈΠ½ΠΈΡ†ΠΈΠΈΡ€ΡƒΠ΅Ρ‚ ΠΏΠΎΠ»Π½ΡƒΡŽ стираниС Ρ„Π»ΡΡˆ-памяти, Ρ‡Ρ‚ΠΎ часто трСбуСтся ΠΏΠ΅Ρ€Π΅Π΄ ΠΏΠ΅Ρ€Π΅ΠΏΡ€ΠΎΡˆΠΈΠ²ΠΊΠΎΠΉ "ΠΊΠΈΡ€ΠΏΠΈΡ‡Π΅ΠΉ". ВсС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ Ρ‡Π΅Ρ€Π΅Π· ΠΎΡ‚Π»Π°Π΄ΠΎΡ‡Π½Ρ‹ΠΉ ΠΏΠΎΡ€Ρ‚, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ€Π°Π½Π΅Π΅ настроСнныС Π»ΠΈΠ½ΠΈΠΈ связи.

Диагностика ΠΈ устранСниС нСисправностСй

Π”Π°ΠΆΠ΅ ΠΏΡ€ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΌ ΠΊΠΎΠ΄Π΅ ΠΈ схСмС ΠΌΠΎΠ³ΡƒΡ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ. Π§Π°Ρ‰Π΅ всСго ΠΎΠ½ΠΈ связаны с физичСским ΡƒΡ€ΠΎΠ²Π½Π΅ΠΌ сигнала ΠΈΠ»ΠΈ состояниСм самого ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π°. ΠŸΠ΅Ρ€Π²Ρ‹ΠΌ шагом всСгда Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½Π°Ρ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° соСдинСний ΠΈ Π·Π°ΠΌΠ΅Ρ€ напряТСний ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ.

Если ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ сообщаСт "No target connected", ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ сигнала Π½Π° Π»ΠΈΠ½ΠΈΠΈ SWCLK с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ осциллографа. Π’Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ ΠΌΠ΅Π°Π½Π΄Ρ€ с частотой, Π·Π°Π΄Π°Π½Π½ΠΎΠΉ Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³Π΅. Если сигнала Π½Π΅Ρ‚, ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π² ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠ΅ ΠΈΠ»ΠΈ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π°Ρ…. Если сигнал Π΅ΡΡ‚ΡŒ, Π½ΠΎ Π½Π΅Ρ‚ ΠΎΡ‚Π²Π΅Ρ‚Π°, ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π² Ρ†Π΅Π»Π΅Π²ΠΎΠΌ устройствС.

Π‘ΠΈΠΌΠΏΡ‚ΠΎΠΌ ВозмоТная ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π° ΠœΠ΅Ρ‚ΠΎΠ΄ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ
Ошибка сканирования Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠΈ НСвСрная частота SWCLK Π‘Π½ΠΈΠ·ΠΈΡ‚ΡŒ частоту Π΄ΠΎ 100 ΠΊΠ“Ρ†
Π‘Ρ€Ρ‹Π² ΠΏΡ€ΠΈ записи Ρ„Π»ΡΡˆΠ° ΠŸΠ»ΠΎΡ…ΠΎΠΉ ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚ GND ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π½Π°Π΄Π΅ΠΆΠ½ΠΎΡΡ‚ΡŒ соСдинСния Π·Π΅ΠΌΠ»ΠΈ
Π§ΠΈΠΏ Π½Π΅ опрСдСляСтся Π Π΅ΠΆΠΈΠΌ Sleep/Stop Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π΅ΠΆΠΈΠΌ Connect Under Reset
ΠΠ΅ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½Π°Ρ ΠΎΡ‚Π»Π°Π΄ΠΊΠ° Наводки Π½Π° ΠΏΡ€ΠΎΠ²ΠΎΠ΄Π°Ρ… Π£ΠΊΠΎΡ€ΠΎΡ‚ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ²ΠΎΠ΄Π°, Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Ρ„Π΅Ρ€Ρ€ΠΈΡ‚

ΠžΡΠΎΠ±Ρ‹ΠΉ случай β€” ΠΊΠΎΠ³Π΄Π° ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ Π² Ρ€Π΅ΠΆΠΈΠΌ Π³Π»ΡƒΠ±ΠΎΠΊΠΎΠ³ΠΎ сна ΠΈ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Ρ‚Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΡ‚Π»Π°Π΄ΠΎΡ‡Π½ΠΎΠ³ΠΎ интСрфСйса для экономии энСргии. Π’ Ρ‚Π°ΠΊΠΎΠΉ ситуации стандартноС ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ SWD Π½Π΅ сработаСт, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ядро Π½Π΅ ΠΎΡ‚Π²Π΅Ρ‚ΠΈΡ‚ Π½Π° запросы.

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Для ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΊ спящСму Ρ‡ΠΈΠΏΡƒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ "Connect Under Reset". Для этого ΠΏΠΈΠ½ NRST удСрТиваСтся Π² состоянии сброса Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π½Π°Ρ‡Π°Π»Π° сСанса ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ, Ρ‡Ρ‚ΠΎ позволяСт ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ Π΄ΠΎ выполнСния ΠΊΠΎΠ΄Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ.

Π’Π°ΠΊΠΆΠ΅ стоит ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, Π½Π΅ ΠΏΠ΅Ρ€Π΅Π½Π°Π·Π½Π°Ρ‡Π΅Π½Ρ‹ Π»ΠΈ ΠΏΠΈΠ½Ρ‹ SWDIO/SWCLK ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎ Π² ΠΊΠΎΠ΄Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ сразу послС старта. Если Π² ΠΏΡ€ΠΎΡˆΠΈΠ²ΠΊΠ΅ Π΅ΡΡ‚ΡŒ строки, пСрСводящиС PA13/PA14 Π² Ρ€Π΅ΠΆΠΈΠΌ GPIO, доступ ΠΏΠΎ SWD Π±ΡƒΠ΄Π΅Ρ‚ потСрян сразу послС ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ. Π’ этом случаС ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄ с ΡƒΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅ΠΌ Reset.

ВосстановлСниС доступа ΠΊ Π·Π°Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌΡƒ Ρ‡ΠΈΠΏΡƒ

Частой ситуациСй являСтся Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ° доступа ΠΊ ΠΎΡ‚Π»Π°Π΄ΠΊΠ΅ ΠΈΠ·-Π·Π° Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π·Π°Ρ‰ΠΈΡ‚Ρ‹ чтСния (Readout Protection). Π£Ρ€ΠΎΠ²Π΅Π½ΡŒ RDP Level 1 Π΄Π΅Π»Π°Π΅Ρ‚ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΌ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ ΠΈ запись Ρ„Π»ΡΡˆ-памяти Ρ‡Π΅Ρ€Π΅Π· SWD, хотя ΠΎΡ‚Π»Π°Π΄ΠΊΠ° ядСр ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡΡ‚Π°Π²Π°Ρ‚ΡŒΡΡ доступной Π² ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅. Π£Ρ€ΠΎΠ²Π΅Π½ΡŒ RDP Level 2 Π±Π»ΠΎΠΊΠΈΡ€ΡƒΠ΅Ρ‚ Ρ‡ΠΈΠΏ навсСгда.

Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠ½ΡΡ‚ΡŒ Π·Π°Ρ‰ΠΈΡ‚Ρƒ Level 1, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ массового стирания. Π­Ρ‚ΠΎ дСйствиС ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ очистит ΠΏΠ°ΠΌΡΡ‚ΡŒ ΠΈ сбросит Π±ΠΈΡ‚Ρ‹ Π·Π°Ρ‰ΠΈΡ‚Ρ‹, Π²Π΅Ρ€Π½ΡƒΠ² Ρ‡ΠΈΠΏ Π² заводскоС состояниС. Π‘ΡƒΠ΄ΡŒΡ‚Π΅ остороТны: вся полСзная ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠ½ΠΈΡ‡Ρ‚ΠΎΠΆΠ΅Π½Π°.

β˜‘οΈ Π§Π΅ΠΊ-лист восстановлСния STM32

Π’Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ: 0 / 5

ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° снятия Π·Π°Ρ‰ΠΈΡ‚Ρ‹ Ρ‡Π΅Ρ€Π΅Π· OpenOCD выглядит Ρ‚Π°ΠΊ:

openocd -f interface/stlink.cfg -f target/stm32f1x.cfg -c "stm32f1x lock 0" -c "reset"

ПослС выполнСния ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Ρ‡ΠΈΠΏ пСрСзагрузится. Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π»ΠΈΠ½ΠΈΠΈ SWDIO ΠΈ SWCLK снова находятся Π² ΡˆΡ‚Π°Ρ‚Π½ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅, ΠΈ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½ΠΎΠ²ΡƒΡŽ ΠΏΡ€ΠΎΡˆΠΈΠ²ΠΊΡƒ. Если Ρ‡ΠΈΠΏ Π²Π΅Π΄Π΅Ρ‚ сСбя странно послС этой ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹, рСкомСндуСтся ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Ρ†Π΅Π»ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ сСкторов Ρ„Π»ΡΡˆ-памяти.

Иногда ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° кроСтся Π½Π΅ Π² Π·Π°Ρ‰ΠΈΡ‚Π΅, Π° Π² ΠΎΡˆΠΈΠ±ΠΎΡ‡Π½ΠΎΠΌ ΠΊΠΎΠ΄Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ сразу послС Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΈΡ‚ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ Π² Ρ€Π΅ΠΆΠΈΠΌ, Π±Π»ΠΎΠΊΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠ° (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈζ—Άι’Ÿ ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ ΠΏΠΈΠ½ΠΎΠ²). Π’ Ρ‚Π°ΠΊΠΈΡ… случаях ΠΌΠ΅Ρ‚ΠΎΠ΄ "Under Reset" являСтся СдинствСнным спасСниСм.

FAQ: Часто Π·Π°Π΄Π°Π²Π°Π΅ΠΌΡ‹Π΅ вопросы

МоТно Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΈΠ½Ρ‹ SWDIO ΠΈ SWCLK ΠΊΠ°ΠΊ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ GPIO послС запуска ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹?

Π”Π°, ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ послС сброса ΠΎΠ½ΠΈ настроСны ΠΊΠ°ΠΊ ΠΎΡ‚Π»Π°Π΄ΠΎΡ‡Π½Ρ‹Π΅. Однако, Ссли Π² ΠΊΠΎΠ΄Π΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈζ—Άι’Ÿ ΠΈ ΠΏΠΎΡ€Ρ‚ΠΎΠ² (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ SystemInit ΠΈΠ»ΠΈ main) явно прописано ΠΏΠ΅Ρ€Π΅Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ этих ΠΏΠΈΠ½ΠΎΠ² Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ GPIO, ΠΎΠ½ΠΈ станут ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌΠΈ Π²Ρ‹Π²ΠΎΠ΄Π°ΠΌΠΈ. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… ΠΊΠ°ΠΊ GPIO, Π½ΡƒΠΆΠ½ΠΎ Π»ΠΈΠ±ΠΎ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΎΡ‚Π»Π°Π΄ΠΊΡƒ Π² опциях компилятора (SWJ Disable), Π»ΠΈΠ±ΠΎ Π°ΠΊΠΊΡƒΡ€Π°Ρ‚Π½ΠΎ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ рСгистрами AFIO.

Какова максимальная Π΄Π»ΠΈΠ½Π° кабСля для ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ SWD?

Для Π½Π°Π΄Π΅ΠΆΠ½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π½Π° высоких частотах (2-4 ΠœΠ“Ρ†) Π΄Π»ΠΈΠ½Π° кабСля Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°Ρ‚ΡŒ 10-15 см. Если ΡΠ½ΠΈΠ·ΠΈΡ‚ΡŒ частоту Π΄ΠΎ 100 ΠΊΠ“Ρ†, ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ Π΄Π»ΠΈΠ½Ρƒ Π΄ΠΎ 30-50 см, Π½ΠΎ риск возникновСния ΠΏΠΎΠΌΠ΅Ρ… остаСтся высоким. Для Π΄Π»ΠΈΠ½Π½Ρ‹Ρ… соСдинСний рСкомСндуСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π±ΡƒΡ„Π΅Ρ€ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Π°Π΄Π°ΠΏΡ‚Π΅Ρ€Ρ‹ ΠΈΠ»ΠΈ спСциализированныС ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠΈ с усилСнным сигналом.

Π’ Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ SWD ΠΈ JTAG для STM32?

JTAG ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ 5 ΡΠΈΠ³Π½Π°Π»ΡŒΠ½Ρ‹Ρ… Π»ΠΈΠ½ΠΈΠΉ (TCK, TMS, TDI, TDO, TRST) ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΎΡ‚Π»Π°Π΄ΠΊΡƒ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… устройств Π² Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠ΅. SWD ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ 2 Π»ΠΈΠ½ΠΈΠΈ (SWCLK, SWDIO) ΠΈ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΎ для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ устройства. SWD экономит ΠΏΠΈΠ½Ρ‹ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° ΠΈ ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ Ρ€Π°Π·Π²ΠΎΠ΄ΠΊΡƒ ΠΏΠ»Π°Ρ‚Ρ‹, поэтому являСтся стандартом Π΄Π΅-Ρ„Π°ΠΊΡ‚ΠΎ для STM32.

ΠŸΠΎΡ‡Π΅ΠΌΡƒ OpenOCD ΠΏΠΈΡˆΠ΅Ρ‚ "Error: JTAG scan chain interrogation failed" ΠΏΡ€ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½Π½ΠΎΠΌ SWD?

Π‘ΠΊΠΎΡ€Π΅Π΅ всСго, Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅ Π½Π΅ Π²Ρ‹Π±Ρ€Π°Π½Π° транспортная срСда SWD. НСобходимо Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ строку transport select swd ΠΏΠ΅Ρ€Π΅Π΄ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ Ρ‚Π°Ρ€Π³Π΅Ρ‚Π°. Π’Π°ΠΊΠΆΠ΅ ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΠΈ, ТСстко завязанныС Π½Π° JTAG, Π±Π΅Π· ΠΈΡ… ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ.

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Π Π°Π±ΠΎΡ‚Π° с линиями SWDIO ΠΈ SWCLK являСтся Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚ΠΎΠΌ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π½Π° STM32. ПониманиС физичСских ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ, ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Π°Ρ настройка частот ΠΈ ΡƒΠΌΠ΅Π½ΠΈΠ΅ Π΄ΠΈΠ°Π³Π½ΠΎΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Π½Π° Π½ΠΈΠ·ΠΊΠΎΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡΠΊΠΎΠ½ΠΎΠΌΠΈΡ‚ΡŒ часы Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π½Π° ΠΎΡ‚Π»Π°Π΄ΠΊΠ΅. НС ΠΏΡ€Π΅Π½Π΅Π±Ρ€Π΅Π³Π°ΠΉΡ‚Π΅ качСством ΠΌΠΎΠ½Ρ‚Π°ΠΆΠ° ΠΈ всСгда ΠΈΠΌΠ΅ΠΉΡ‚Π΅ ΠΏΠΎΠ΄ Ρ€ΡƒΠΊΠΎΠΉ осциллограф ΠΈΠ»ΠΈ логичСский Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Ρ„ΠΎΡ€ΠΌΡ‹ сигнала.

πŸ’‘

Π‘Ρ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ STM32 Π½Π° 90% зависит ΠΎΡ‚ качСства физичСского соСдинСния ΠΏΠΈΠ½ΠΎΠ² SWDIO/SWCLK ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΠΏΠΎΠ΄ΠΎΠ±Ρ€Π°Π½Π½ΠΎΠΉ частоты тактирования.

Освоив тонкости интСрфСйса SWD, Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚Π΅ ΠΏΠΎΠ»Π½Ρ‹ΠΉ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ Π½Π°Π΄ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠΌ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ быстро ΠΏΡ€ΠΎΡˆΠΈΠ²Π°Ρ‚ΡŒ устройства ΠΈ эффСктивно ΠΈΡΠΊΠ°Ρ‚ΡŒ ошибки Π² ΠΊΠΎΠ΄Π΅. Π­Ρ‚ΠΎ Π½Π°Π²Ρ‹ΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΡ‚Π»ΠΈΡ‡Π°Π΅Ρ‚ ΠΏΡ€ΠΎΡ„Π΅ΡΡΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€Π° встраиваСмых систСм ΠΎΡ‚ Π»ΡŽΠ±ΠΈΡ‚Π΅Π»Ρ.