JTAG ile SWD arasındaki fark nedir? Bir Cortex-M'i debug ederken hangi araçları kullanırsınız?

Cevap

İkisi de MCU'yu programlamak ve debug etmek için kullanılan donanım arayüzleridir. JTAG daha eski ve genel bir standarttır (IEEE 1149.1). SWD (Serial Wire Debug) ise ARM'a özgü, daha az pin kullanan bir alternatiftir.

ÖzellikJTAGSWD
PinlerTCK, TMS, TDI, TDO (+ opsiyonel TRST)SWDIO, SWCLK
StandartIEEE 1149.1, mimariden bağımsızARM CoreSight
ZincirlemeBirden çok çipi daisy-chain ile bağlayabilirTek hedef (SWD v2'de multi-drop var)
Boundary scanVar, PCB lehim testinde kullanılırYok
TraceAyrı pinler gerekirSWO pini ile ITM/printf trace
KullanımFPGA, DSP, çok çipli kartlarCortex-M ürünlerinin çoğu

Araç zinciri

  • Debug probe: ST-LINK, SEGGER J-Link, CMSIS-DAP/DAPLink, Black Magic Probe
  • GDB sunucusu: OpenOCD, pyOCD, J-Link GDB Server
  • IDE: STM32CubeIDE, VS Code + Cortex-Debug, Keil, IAR, SEGGER Ozone
openocd -f interface/stlink.cfg -f target/stm32f4x.cfg
arm-none-eabi-gdb build/firmware.elf
(gdb) target extended-remote :3333
(gdb) monitor reset halt
(gdb) load
(gdb) break main
(gdb) continue

Debug yetenekleri

  • Hardware breakpoint (Cortex-M3/M4'te genelde 6 adet, Flash'taki kod için gereklidir) ve watchpoint (DWT ile bir değişkene yazıldığında durmak).
  • SWO/ITM ile CPU'yu çok az yavaşlatan printf; SEGGER RTT ile RAM üzerinden hızlı log.
  • DWT->CYCCNT ile çevrim sayarak kod süresini ölçmek.

Pratik notlar

  • SWD pinleri yazılımda GPIO olarak yeniden yapılandırılırsa veya MCU hemen derin uykuya girerse debugger bağlanamaz. Çözüm "connect under reset" kullanmaktır.
  • Üretimde readout protection (RDP) ile debug erişimi kapatılır.
  1. Kesme (interrupt) nedir? ISR yazarken nelere dikkat edilir?OrtaMikrodenetleyicilerEmbedded
  2. Watchdog timer nedir, ne işe yarar?KolayMikrodenetleyicilerEmbedded
  3. Bir bootloader nasıl çalışır? Uygulamaya atlama ve güvenli firmware güncellemesi nasıl tasarlanır?ZorMikrodenetleyicilerEmbedded
  4. Mekanik bir butonun debounce işlemi neden gereklidir ve yazılımda nasıl yapılır?KolayMikrodenetleyicilerEmbedded
  5. DMA nedir, ne zaman kullanılır? DMA kullanırken cache coherency ve double buffering gibi konularda nelere dikkat edilmelidir?ZorMikrodenetleyicilerEmbedded
  6. ADC çözünürlüğü, referans voltajı ve örnekleme hızı nedir? ADC okumasında doğruluğu etkileyen faktörler nelerdir?OrtaMikrodenetleyicilerEmbedded

Bu konuda başka bir soru biliyor musun?

Mülakatta karşılaştığın soruları ekle, onaylandıktan sonra yayına alınsın.

Soru ekle