JTAG vs debugging SWD

41

Setelah membaca sekilas artikel ini , saya bertanya-tanya apa manfaat dari debugging SWD dibanding debugging JTAG?

Saya mengerti SWD menggunakan lebih sedikit kabel / pin, menghabiskan lebih sedikit ruang, dll. Tapi bagaimana cara kerjanya dalam hal kinerja, fitur, dan biaya perangkat keras programmer / perangkat debugger? Bisakah kode masih di-break menunjuk / dijeda dan melangkah masuk dalam IDE seperti Eclipse?

Dapatkah chip ARM diprogram menggunakan antarmuka SWD, seperti yang saya yakini dapat dilakukan di JTAG?

josef.van.niekerk
sumber
Chip berbasis ARM dengan core yang lebih baru (Cortex, misalnya) dapat diprogram dan didebug melalui SWD.
B Pete
@BPete: Saya telah menemukan bahwa dengan SWD sulit untuk men-debug chip berbasis ST yang menggunakan mode tidur; papan kami saat ini tidak memiliki pin yang tersedia untuk JTAG, tapi saya bertanya-tanya apakah JTAG mungkin lebih baik dalam hal itu?
supercat
2
Ini (SWD) terlihat sedikit seperti antarmuka Spy Bi-Wire bahwa TI memakai subset dari prosesor MSP430 mereka. Ini adalah JTAG 2-kawat yang sama (plus power & ground) dengan SBWTCLK dan SBWTDIO multiplexing pada dua pin non-GPIO (TEST, dan RST / NMI) pada perangkat contoh. Didukung oleh devkit EZ430. Dan itu (SBW) mendukung stepping dan breakpoints! Saya tidak tahu apakah ARM TI sendiri memiliki antarmuka yang sama, tetapi akan menarik jika ada cukup banyak kesamaan di antara mereka untuk berbagi alat pemrograman / debug.
Brian Drummond
Tautan artikel Anda sudah mati, tapi mungkin ini artikelnya? arm.com/files/pdf/Serial_Wire_Debug.pdf
Gabriel Staples

Jawaban:

12

SWD harus dapat memprogram chipset ARM plus Anda dapat men-debug dan menambahkan breakpoints. Hal baik lainnya tentang SWD adalah Anda dapat menggunakan penampil kawat serial untuk pernyataan printf Anda untuk debugging. Saya hanya menggunakannya dengan kompiler Keil.

pengguna468662
sumber
Lihatlah tautan ini di penampil kawat serial. keil.com/download/files/swv_on_cortex-m3.pdf
user468662
37

Secara elektrik

  • Jumlah Pin
    • JTAG membutuhkan 4 jalur sinyal
    • SWD hanya membutuhkan 2 saluran sinyal
    • Antarmuka JTAG 2-kawat yang ditentukan dalam IEEE 1149.7 menjatuhkan jumlah pin tetapi tampaknya tidak banyak tersedia di banyak IC. Ini juga mengurangi bandwidth.
  • Topologi
    • JTAG menggunakan konfigurasi rantai daisy untuk jalur data antar chip. Kecepatan JTAG dengan demikian dibatasi oleh chip paling lambat pada rantai. Namun, pengaturan ulang dan garis-garis yang jelas dimatikan (tidak dirantai) yang memungkinkan interoperabilitas melalui SWDJ-DP (lihat diskusi di bawah).
    • 2-kawat JTAG memungkinkan topologi bintang, tetapi tidak sering digunakan.
    • SWD memungkinkan untuk topologi bintang

Secara fungsional

  • SWD adalah protokol spesifik ARM yang dirancang khusus untuk debugging mikro.
  • JTAG (Joint Test Action Group) dirancang sebagian besar untuk pengujian chip dan board. Digunakan untuk pemindaian batas , memeriksa kesalahan pada chip / papan dalam produksi. Debugging dan flashing micros adalah evolusi dalam penerapannya dari waktu ke waktu.
  • JTAG digunakan untuk beberapa arsitektur mikrokontroler / prosesor selain dari ARM.

Diskusi Umum

JTAG lebih banyak didukung, pada 2017, oleh mikron, programer dan lini produksi non-ARM. Programmer untuk JTAG bisa didapat dengan harga murah dalam bentuk breakout FT232H [*] dan perangkat pemrograman lain semacam itu. Namun, SWD memiliki keunggulan berbeda dalam hal kecepatan dan area lain dalam debugging chip ARM.

Karena pemisahan dalam sifat JTAG yang dimaksudkan dalam pengujian dan SWD dalam debugging, ARM menyediakan SWJ-DP (port serial / port debug jtag) melalui teknologi CoreSight-nya yang memetakan pin SWD ke jam JTAG dan mengatur ulang baris. Oleh karena itu SWJ-DP memungkinkan penggunaan kedua protokol pada koneksi fisik yang sama meskipun tidak harus pada saat yang sama atau dengan programmer yang sama seperti JTAG dan SWD harus multiplexing dalam waktu.

Referensi yang berguna

tersebar kembali
sumber
7

Saya mungkin agak terlambat untuk OP, tapi mungkin itu akan berguna untuk beberapa orang dengan pertanyaan yang sama. Jadi, ini dia (pengalaman pribadi): Dimungkinkan untuk memprogram dan men-debug (mengambil memori / mendaftar peta, istirahat, lari dari titik tertentu, dll.) Dengan SWD. Menggunakan Eclipse di sini dengan GDB melalui J-Link EDU, yang berlaku untuk ~ 50 Euro. Ada beberapa bug (mengatur ulang target melalui debugger, kadang-kadang tidak akan terhubung atau mengambil peta), tetapi relatif murah dan dapat digunakan, setelah Anda berkenalan dengan kebiasaannya

stiebrs
sumber
7

Pertanyaan lama, tetapi tidak ada jawaban yang membahas perbandingan kinerja. Meskipun set fitur antara SWD dan JTAG (saat menggunakan CoreSight DAP) cukup dekat, urutan SWD kira-kira 10% lebih pendek dari urutan JTAG yang setara.

Tidak ada kehilangan dalam bandwidth data dalam banyak kasus (terutama streaming membaca atau menulis di mana bandwidth paling penting).

Sean Houlihane
sumber