Gemeinsame Nutzung von ARM-SWD-Pins mit normaler Pin-Funktion (auf Atmel SAM D09 D10 D11)

Der Atmel SAM D09 (ein ARM Cortex M0+ MCU) kann normale Pin-Funktionen auf den Pins aktivieren, die normalerweise für die Programmierung (SWD) verwendet werden. Dabei gehe ich aber davon aus, dass das Debuggen nach dem Programmieren des Geräts unmöglich wird.

Ist das richtig oder kann es möglich sein, bestimmte Funktionen (wie I2C/UART/SPI/Digitaleingang) zu teilen, ohne das Debuggen zu stören?

Zweitens enthält das D09-Datenblatt diesen merkwürdigen Satz: " Nur der SWCLK-Pin wird den normalen PORT-Funktionen zugeordnet. Eine Cold-Plugging- oder Hot-Plugging-Erkennung des Debuggers schaltet den SWDIO-Port automatisch auf die SWDIO-Funktion um ".

Es scheint also, dass ich mindestens einen Pin in einem gemeinsamen Modus mit SWD verwenden kann. Aber dieser Satz ist ziemlich zweideutig: Welcher Pin wäre das und welche Funktionen können auf dem Shareable Pin geteilt werden?

Was ich frage, ist spezifisch für das ARM SWD-Protokoll, und der Fall sind billige Atmel SAM D09 / D10 / D11-Chips.

Antworten (1)

Das hängt von dem Programmierer ab, den Sie verwenden. Ich arbeite tatsächlich mit dem SAMD20 und verwende den AVRISP mkll-Programmierer von Atmel, und Sie müssen sich nicht darum kümmern, diese Pins zu teilen. Die Hauptfunktion des Pins funktioniert auch dann weiter, wenn Sie den Programmierer dort angeschlossen haben. Tatsächlich bedeutet das ISP (In System Programming). Wenn Sie das Xplain Pro Evaluation Kit verwenden, können Sie das Gerät über das USB-Kabel programmieren, und alle Programmierstifte arbeiten weiterhin in ihrer Hauptfunktion.

Die programmierte Pin-Funktion würde also beim Debuggen ausgesetzt (funktioniert nicht), aber zumindest würde das Debuggen funktionieren? Beachten Sie, dass ich mich nicht auf die Programmierung des Geräts konzentriere, sondern darauf, es zu debuggen.
Um ehrlich zu sein, habe ich das Debuggen nie ausprobiert, aber ich bin mir ziemlich sicher, dass die Hauptfunktion auf diesen Pins während des Debuggens weiter funktioniert. Versuchen Sie es und lassen Sie es uns wissen!
Mehr Infos habe ich im Datenblatt gefunden. Es scheint, dass SWCLK benötigt wird, um den Debugger zu erkennen (der Debugger zieht es auf Low), der Chip schaltet dann SWDIO auf die Debug-Funktion um. Wenn Code dem SWCLK-Pin eine Funktion zuweist (was auch immer das sein mag), ist das Debuggen nicht mehr möglich, aber das Programmieren (nach einem Reset). Zusammenfassend: SWDIO kann frei verwendet werden und die Verwendung von SWCLK deaktiviert das Debugging.