Der Microprozesser RP2040 (Pico) lässt sich - wie wohl alle ARM-basierten Prozessoren über 2 Leitungen programmieren: SWCLK - unidirektional und SWDIO - bidirektional.
Zum Programmieren kan man einen zweiten Pico benutzen, der mit dem Programm "PicoProbe" oder auch "DebugProbe" versehen ist. Das Programm "PicoProbe" ist z.B. unter https://github.com/raspberrypi/debugprobe abrufbar. Dort stehen auch die Quellprogramme. Als Verbindung zwischen PicoProbe und dem zu programmierenden Prozessor reicht im Prinzip eine 3-adrige Leitung. Bei meinen Versuchen hat sich herausgestellt, dass die Länge der SWD-Leitung nicht mehr als 10..15m sein darf. Da hilft auch keine Verringerung der Baudrate. Bei meiner Anwendung befindet sich das Zielsystem im Gartenhaus, zu dem auch eine bisher ungenutzte LAN-Leitung liegt; Entfernung ca. 20m. Um die Signale zu verstärken braucht man Treiberbausteine, die aber nicht direkt bidirektional verfügbar sind. Man braucht mindestens einen Richtungsausgang, um das bidirektionale Signal aufzusplitten. Der ist im Originalprogramm nicht enthalten. Jedoch kann man das Programm so projekieren, dass es ein Output-Enable-Signal zur Verfügung stellt. Meines Erachtens ist das schlecht dokumentiert. Wer das gleiche Problem wie ich hat, kommt mit der hier vorgestellten Unterstützung sicher schneller zum Ziel. Das eigentliche Programm habe ich gar nicht verändert. Lediglich habe ich die Konfiguration angepasst. In der Bastellkiste lagen noch ungenutzte 74HC240, die allerdings die Signale invertieren. Der 74HC240 enthält 2x4 Treiber, die jeweils in den Tristate geschaltet werden können. Andere Treiberbausteine würden auch gehen. Eine uf2-Datei befindet sich mit allen dazugehörigen Dateien in der zip-Datei. Bis das PC-Programmm "VS-Code" diese Datei überhaupt erstellt hat, musste ich mich tief einlesen und auch viel probieren. Die cmake-Orgie, die RaspberryPi veranstaltet, ist nicht nach meinem Geschmack. Getestet habe ich das System mit eienm 40m Kabel. Eine längere Leitung stand mir nicht zur Verfügung. Allerdings musste ich die Adapter-Geschwindigkeit auf 2000kHz reduzieren, damit alles fehlerfrei durchlief.
Harald
