Aus Raspberry Pi Geek 04/2019

Programme für PIC-Mikrocontroller auf dem RasPi entwickeln (Seite 2)

Abbildung 3: Der PICkit2 findet sich nur noch als Nachbau aus China, erledigt aber in der Praxis zuverlässig seinen Dienst.

Abbildung 3: Der PICkit2 findet sich nur noch als Nachbau aus China, erledigt aber in der Praxis zuverlässig seinen Dienst.

Der Adapter verwendet die ICSP-Schnittstelle, die es erlaubt, selbst einen verbauten PIC nachträglich noch mit Software zu beladen. Die Beschaltung sehen Sie in Abbildung 4. Wichtig sind hier die beiden Widerstände R2 und R3 zum Entkoppeln der Anwenderschaltung. Außerdem darf während des Brennvorgangs keine Spannung an Vdd anliegen.

Abbildung 4: Die ICSP-Beschaltung PIC12F675. Die beiden Widerst&auml;nde <span class="ui-element">R2</span> und <span class="ui-element">R3</span> entkoppeln die Anwenderschaltung, <span class="ui-element">Vdd</span> muss w&auml;hrend des Brennvorgangs stromlos bleiben.

Abbildung 4: Die ICSP-Beschaltung PIC12F675. Die beiden Widerstände R2 und R3 entkoppeln die Anwenderschaltung, Vdd muss während des Brennvorgangs stromlos bleiben.

Als Steuerprogramm dient das Kommandozeilentool Pk2cmd von Microchip. Der Quellcode steht zwar auf Github bereit [6], es handelt sich aber nicht um Open Source im Sinn einer freien Lizenz. Der Kasten “Installation” beschreibt, wie Sie die Software ins System integrieren. Einmal installiert, verwenden Sie das Programm mit den Befehlen aus Listing 1. Weitere Optionen beschreibt die Dokumentation ausführlich.

Listing 1

### Abfrage Firmware
$ pk2cmd -? V
### Angeschlossenen Chip identifizieren
$ pk2cmd -P
### Speicherdump (auf 0x3FF steht OSCCAL)
$ pk2cmd -P PIC12F675 -GP 0x3F8-0x3FF
### Löschen
$ pk2cmd -P PIC12F675 -X -E
### Programmieren
$ pk2cmd -P PIC12F675 -X -M -F code.hex

Installation

Die Programmquellen von Pk2cmd finden Sie an diversen Stellen im Netz, darunter auf Github [6]. Außerdem sollten auf Ihrem System noch die Metapakete build-essential und libusb-dev installiert sein. Nach dem Klonen des Repositorys wechseln Sie ins Verzeichnis pk2cmd/pk2cmd/ und starten dort mit make linux das Übersetzen der Software.

Danach finden Sie im aktuellen Verzeichnis die Dateien pk2cmd, PK2DeviceFile.dat sowie PK2V023200.hex. Bei Letzterer handelt es sich um die eigentliche Firmware für den PICkit2-Programmer, die Sie nur brauchen, falls Sie ein völlig veraltetes Gerät in Händen halten. Die Installation schließen Sie ab, indem Sie die ersten beiden Dateien nach /usr/local/bin/ kopieren und die Rechte anpassen (Listing 2).

Die Anleitung ReadmeForPK2CMDLinux2-6.txt empfiehlt zwar eine Udev-Regel statt des Setzens des Setuid-Bits, aber die vorgeschlagene Regel funktioniert auf heutigen Systemen nicht mehr – die Zeiten von Kernel 2.6 sind lange vorbei. Die möglichen Befehle, vom Brennen über das Auslesen des Speichers bis hin zum Update der Firmware auf dem PICkit2, finden sich dagegen alle sauber in der Readme-Datei dokumentiert. Außerdem spuckt ein pk2cmd -? die gesamte Hilfe zu den Parametern für die Kommandozeile aus.

Listing 2

$ sudo cp pk2cmd PK2DeviceFile.dat /usr/local/bin
$ sudo chown root:staff /usr/local/bin/pk2cmd
$ sudo chown root:staff usr/local/bin/PK2DeviceFile.dat
$ sudo chmod u+s /usr/local/bin/pk2cmd

Beim Einsatz des PICkit2 am Raspberry Pi sollten Sie auf eine ausreichende und stabile Stromversorgung achten, sonst kommt es unter Umständen zu Problemen: Beim Parallelbetrieb mit anderen Geräten an den USB-Anschlüssen überschreitet der Brenner eventuell die maximale Leistung des Busses – im Zweifelsfall schalten Sie einen aktiven Hub dazwischen.

Assembler

Neben kommerziellen Angeboten gibt es auch ein Open-Source-Projekt, das die PICs sehr gut unterstützt: Mit den gputils installieren Sie auf dem RasPi den Assembler im Handumdrehen (Listing 3, erste Zeile). Das Kommando aus der zweiten Listing-Zeile erzeugt aus dem Assembler-Programm pic2.asm das Hex-File pic2.hex; die Option -a inhx8m legt dabei das Format fest. Weitere Optionen steuern die Ausgabe zusätzlicher Informationen, etwa -k für ein Fehlerprotokoll oder -m für einen Speicherauszug.

Listing 3

$ sudo apt-get -y install gputils
$ gpasm -a inhx8m pic2.asm

Die Gputils auf “Stretch” hinken der aktuellen stabilen Version zwei Jahre hinterher, die ihrerseits aus dem Jahr 2016 stammt. Deshalb sollten Sie bei Problemen eventuell den Assembler aus den Quellen kompilieren. Das gelingt ohne Probleme (Listing 4) und im Handumdrehen – selbst auf einem RasPi.

Listing 4

$ wget http://downloads.sourceforge.net/project/gputils/gputils/1.5.0/gputils-1.5.0-1.tar.gz
$ tar zxvf gputils-1.5.0-1.tar.gz
$ cd gputils-1.5.0-1
$ ./configure --prefix=/usr/local --disable-html-doc
$ make
$ sudo make install

Suchen Sie einen handlichen Editor zum Programmieren in Assembler, sollten Sie einen Versuch mit Jed wagen: Der schlanke Emacs-Clone für die Konsole lässt sich über Menüs bedienen und eignet sich damit auch für Anwender, die sich nicht mit den Emacs-Tastaturkürzeln auskennen. Online finden Sie eine Modusdatei [7], die den Assembler-Code einfärbt (Abbildung 5).

Abbildung 5: Der Editor Jed bietet neben einer einsteigertauglichen Bedienung auch ein Syntax-Highlighting f&uuml;r Assembler.

Abbildung 5: Der Editor Jed bietet neben einer einsteigertauglichen Bedienung auch ein Syntax-Highlighting für Assembler.

C-Compiler

Nicht jeder kann oder möchte maschinennah mit Assembler programmieren. Die PICs unterstützen deshalb auch C. Die Entwicklungsumgebung des Herstellers läuft zwar prinzipiell unter Linux, setzt aber eine 32-Bit-Umgebung voraus. Das erfordert bei modernen 64-Bit-Linux-Systemen etwas Bastelarbeit, zudem fallen Lizenzkosten an.

Suchen Sie nach einem alternativen C-Compiler für den PIC, findet sich eine ganze Reihe von kommerziellen Angeboten für Windows. Viele davon gibt es auch in einer kostenlosen Version mit eingeschränktem Funktionsumfang. Müssen Sie aber bei Ihren Projekten nicht das letzte Bit herausholen, haben Sie hier schon einige Kandidaten an der Hand. Die Compiler selbst dürften unter Wine laufen, wären also im Prinzip Linux-fähig.

Besser ist es aber, gleich auf den Small Device C Compiler zu setzen: Der quelloffene SDCC unterstützt die wichtigsten 8-Bit-MCUs und erstellt Dateien nicht nur für die PICs, sondern auch für andere Chips. Sie erhalten ihn als fertiges Paket für den RasPi und diverse Distributionen. Allerdings sind verschiedene Pakete aus lizenzrechtlichen Gründen nicht komplett.

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 5 HeftseitenPreis €0,99
(inkl. 19% MwSt.)
RASPBERRY PI GEEK KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS Raspberry Pi Geek bei Google Play Readly Logo
Nach oben