Picpgm Quellcode?

J

Josef Moellers

Guest
Mooi'n,

Ich habe vor, mich mal wieder mit den PIC24 zu beschäftigen um meinen
digitalen Stromzähler auszulesen. Dazu habe ich bei frßheren Spielereien
schon mal "picpgm" eingesetzt.
In meinem Hinterkopf habe ich, daß ich damit Probleme auf einem
Raspberry Pi hatte und habe mir dazu seinerzeit den Quellcode irgendwo
her besorgt und entsprechend modifiziert, u.a.
1) eine VerzĂśgerung nach dem Export eines GPIO Pins und dem Setzen der
Richtung und des Initialwerts eingefĂźgt und
2) den GPIO Pin NICHT zu exportieren und auch am Ende nicht zu
unexport-ieren, wenn er bereits exportiert war.

Ich habe Christian Stadler bereits angeschrieben, bislang aber noch
keine Antwort bekommen und weil jetzt das Wochenede angefangen hat,
wollte ich mich mal damit beschäftigen.

TL;DR: Weiß jemand, ob (und wenn ja wo) man sich den Quellcode für
picpgm herunterladen kann?

Danke im Voraus,

Josef
 
Am 14.03.2020 um 11:33 schrieb Josef Moellers:
Mooi'n,

Ich habe vor, mich mal wieder mit den PIC24 zu beschäftigen um meinen
digitalen Stromzähler auszulesen. Dazu habe ich bei frßheren Spielereien
schon mal "picpgm" eingesetzt.

Hi Josef,

Ist jetzt vielleicht nicht direkt hilfreich, aber warum nimmst Du nicht
einen PICKIT3 Programmer? Der kostet nicht viel, es gibt eine
Standalone-Programmer-Software für Windows (Linux weiß ich jetzt nicht)
und programmiert /alle/ PICs, auch z.B. PIC24FJ256GB206 mit denen ich
kĂźrzlich zu tun hatte.

vg,
Wolfgang

--
From-address is spam trap
Use: wolfgang (dot) mahringer (at) sbg (dot) at
 
On 14.03.20 21:24, Wolfgang Mahringer wrote:
Am 14.03.2020 um 11:33 schrieb Josef Moellers:
Mooi'n,

Ich habe vor, mich mal wieder mit den PIC24 zu beschäftigen um meinen
digitalen Stromzähler auszulesen. Dazu habe ich bei frßheren Spielereien
schon mal "picpgm" eingesetzt.

Hi Josef,

Ist jetzt vielleicht nicht direkt hilfreich, aber warum nimmst Du nicht
einen PICKIT3 Programmer? Der kostet nicht viel, es gibt eine
Standalone-Programmer-Software für Windows (Linux weiß ich jetzt nicht)
und programmiert /alle/ PICs, auch z.B. PIC24FJ256GB206 mit denen ich
kĂźrzlich zu tun hatte.

Ich (schon wieder "Ich ich ich" ... ;-) ) habe hier einige RasPis im
Haus, die fĂźr zeitkritische Aufgaben einen externen Mikrocontroller
(ATMega168) zur Seite gestellt bekommen haben. Konkret einer, der die
Daten unseres digitalen "Stromzählers" verarbeiten soll. Der Zähler hat
eine bidirektionale IR-Schnittstelle und sendet fĂźr jede Wh einen
Impuls, kann aber Ăźber ein serielles Kommando auch den aktuellen
Zählerstand ßbertragen.
Da der ATMega168 dort nur Ăźber *einen* UART verfĂźgt, mĂśchte ich ihn
durch einen PIC24 ersetzen, auch weil der Ăźber PPS verfĂźgt, d.h. wenn
ich den aktuellen Verbrauch messen will, konfigurieren ich Sende- und
Empfangs-Pins als Parallel-Port-Pins und lasse vom Empfangs-Pin einen
Interrupt auslĂśsen. Das kĂśnnte der ATMega168 Ăźbrigens auch, wegen des
fehlenden zweiten UARTs aber doch wieder nicht. Wenn ich nun den
aktuellen Stand haben mĂśchte, konfiguriere ich die UART-Pins darauf,
sende die Start-Sequenz und lese das Datenpaket ein, wonach ich wieder
auf Parallel-Port-Pin umschalte. Klar, geht auch alles Ăźber soft-UART,
ich wollt's jetzt aber mal mit dem PIC24 probieren.

Um aber den PIC24 vor Ort um zu programmieren (das mache ich mit dem
ATMega168 auch), wĂźrde ich eben die fĂźr's Flash-en benĂśtigten Pins an
GPIOs anschließen und muß dann nicht für jede Änderung den PIC24 aus der
Schaltung holen.
NB Es gibt zwar keinen PIC-Compiler fĂźr den RasPi, ich behelfe mich aber
mit einem http-Programm, dem ich Ăźber einen POST das zu flash-ende Image
hochlade, wonach es automatisch den Flash-Vorgang durchfĂźhrt.

Und ein kleiner Zusatzgrund: ich finde halt, daß picpgm an der Stelle
ein Problem hat, das ich lĂśsen kann und mĂśchte, so ganz im "Open Source"
Stil.

Josef
 
Hallo Josef,

Du schriebst am Mon, 16 Mar 2020 08:29:18 +0100:

....
Um aber den PIC24 vor Ort um zu programmieren (das mache ich mit dem
ATMega168 auch), wĂźrde ich eben die fĂźr's Flash-en benĂśtigten Pins an
GPIOs anschließen und muß dann nicht für jede Änderung den PIC24 aus der
Schaltung holen.

Wer programmiert den denn dann? Laß' ihn sich doch selber programmieren,
der kann sein eigenes Flash-EPROM bearbeiten. Natürlich muß der Lader im
Boot-Block sitzen, damit er das LĂśschen des Anwendungsprogramms Ăźberlebt.
Lader-Software gibt's (beinahe) fertig vom Hersteller.

> NB Es gibt zwar keinen PIC-Compiler fĂźr den RasPi, ich behelfe mich aber

Vielleicht könnte man den PIC-gcc für ARM rekomplizieren, Source müßte
eigentlich "auffindbar" sein. Die IDE kĂśnnte sogar auch da drauf laufen,
ist schließlich ein Java-Programm.

mit einem http-Programm, dem ich Ăźber einen POST das zu flash-ende Image
hochlade, wonach es automatisch den Flash-Vorgang durchfĂźhrt.

Naja, wasnich alles so Ăźber HTTP verschoben wird, heutzutage...
(Das war nie fĂźr sowas vorgesehen, und es gibt erheblich besser geeignete
Protokolle dafĂźr. Nimm' wenigstens ssh - sftp - dafĂźr, das ist wenigstens
verschlĂźsselt, wennde schon kein NFS oder CIFS nehmen willst.)

BTW, evtl. ließe sich sogar das Programmierprogramm dort zum Laufen
bringen, das ist auch Java. Es geht aber halt doch deutlich "näher an die
Hardware"...

Und ein kleiner Zusatzgrund: ich finde halt, daß picpgm an der Stelle
ein Problem hat, das ich lĂśsen kann und mĂśchte, so ganz im "Open Source"
Stil.

BTW, der - inzwischen alte ("veralterte") - PICKit3 kann auch ohne
Verbindung zu einem Computer (einige Typen) "stand alone" programmieren,
er muß dazu vorher mit dem zu programmierenden Programm geladen worden
sein und vor Ort halt von einem USB-Ladegerät mit 5V versorgt werden.
Natürlich müssen auf der Schaltung ein paar Anschluß-Pins dafür vorhanden
sein, Mir wĂźrde die Selber-Programmier-Version aber besser gefallen.

--
--
(Weitergabe von Adressdaten, Telefonnummern u.ä. ohne Zustimmung
nicht gestattet, ebenso Zusendung von Werbung oder ähnlichem)
-----------------------------------------------------------
Mit freundlichen Grüßen, S. Schicktanz
-----------------------------------------------------------
 
On 16.03.20 20:58, Sieghard Schicktanz wrote:
> Hallo Josef,

Mooi'n Sieghard,

Du schriebst am Mon, 16 Mar 2020 08:29:18 +0100:

...
Um aber den PIC24 vor Ort um zu programmieren (das mache ich mit dem
ATMega168 auch), wĂźrde ich eben die fĂźr's Flash-en benĂśtigten Pins an
GPIOs anschließen und muß dann nicht für jede Änderung den PIC24 aus der
Schaltung holen.

Wer programmiert den denn dann?

Welchen meinst Du jetzt? Den ATMega oder den PIC?

Laß' ihn sich doch selber programmieren,
der kann sein eigenes Flash-EPROM bearbeiten. Natürlich muß der Lader im
Boot-Block sitzen, damit er das LĂśschen des Anwendungsprogramms Ăźberlebt.
Lader-Software gibt's (beinahe) fertig vom Hersteller.

Einen PIC-residenten Lader kenne ich nicht, außer dem "Enhanced ICSP"
und der erfordert wiederum ICSP, das geht dann nur schneller.

Ich sehe jetzt auch nicht, wie ein arduino-ähnlicher Bootloader ßber die
serielle Leitung gehen sollte, denn sowohl die
Haupt-Interrupt-Vektor-Tabelle als auch die Alternative IVT liegen
innerhalb der ersten 512 Bytes und lĂśschen kann der PIC24 nur in
1536-Byte-BlĂścken.
Klar, man kÜnnte grundsätzlich immer das Programm zusammen mit dem
Bootloader flashen, so daß sozusagen jedes Programm sich selbst
überschreiben können muß, das ginge. Oder man muß halt eine zweite
Indirekt-Tabelle mit GOTO-Befehlen an eine definierte Stelle im Programm
haben und die IVT enthält dann die Adressen in der Sprungtabelle. Hm,
ja, denkbar.

Der ATMega168 hat den Aduino-Bootloader 'drauf, das sind Pollin
"Entwicklungsboard ATMEL ATmega168PA", "Arduino Mini" Klone, und der
RasPi ist Ăźber seriell verbunden. Dazu einen GPIO mit dem RESET-Pin des
ATMega und es flutscht:
togglePin 18; avrdude ...
(BTW Ich habe inzwischen auch ATMega88s mit einen Arduino-Bootloader drauf.)

NB Es gibt zwar keinen PIC-Compiler fĂźr den RasPi, ich behelfe mich aber

Vielleicht könnte man den PIC-gcc für ARM rekomplizieren, Source müßte
eigentlich "auffindbar" sein. Die IDE kĂśnnte sogar auch da drauf laufen,
ist schließlich ein Java-Programm.

Nah, paßt so auch schon.

mit einem http-Programm, dem ich Ăźber einen POST das zu flash-ende Image
hochlade, wonach es automatisch den Flash-Vorgang durchfĂźhrt.

Naja, wasnich alles so Ăźber HTTP verschoben wird, heutzutage...
(Das war nie fĂźr sowas vorgesehen, und es gibt erheblich besser geeignete
Protokolle dafĂźr. Nimm' wenigstens ssh - sftp - dafĂźr, das ist wenigstens
verschlĂźsselt, wennde schon kein NFS oder CIFS nehmen willst.)

Wozu verschlĂźsseln zwischen meine Schreibtisch und dem Nachbarkeller?

Ich hatte seinerzeit intensiver mit dem microhttpd 'rumgespielt und
dabei ist der pgmd als Abfallprodukt 'rausgekommen. Und das "Frontend"
gibt es schon:
wget -O /dev/null --post-file=PICmonitor.hex
http://raspberry3:8080/flash?filename=XXXX.hex

BTW, evtl. ließe sich sogar das Programmierprogramm dort zum Laufen
bringen, das ist auch Java. Es geht aber halt doch deutlich "näher an die
Hardware"...

Und ein kleiner Zusatzgrund: ich finde halt, daß picpgm an der Stelle
ein Problem hat, das ich lĂśsen kann und mĂśchte, so ganz im "Open Source"
Stil.

BTW, der - inzwischen alte ("veralterte") - PICKit3 kann auch ohne
Verbindung zu einem Computer (einige Typen) "stand alone" programmieren,
er muß dazu vorher mit dem zu programmierenden Programm geladen worden
sein und vor Ort halt von einem USB-Ladegerät mit 5V versorgt werden.
Natürlich müssen auf der Schaltung ein paar Anschluß-Pins dafür vorhanden
sein, Mir wĂźrde die Selber-Programmier-Version aber besser gefallen.

Wie gesagt: der RasPi mit dem ATMega laufen in einem Keller in einer
Ecke frĂśhlich vor sich hin, ein zweiter auf dem Dachboden neben dem
Brennwertgerät, der Heizungs- und der Solaranlagen-Steuerung. Um da
einen Programmer anschließen zu können muß ich mich bewegen, Zeugs
wegräumen, Zweitritt aufstellen, hochklettern ... ;-) Und wenn das
Programm dann nicht wie gewßnscht läuft, alles von vorne.


NB Inzwischen habe ich übrigens herausgefunden, daß "picpgm -gpio_direct
...." tut, nur muß das Programm dann unter "root" laufen. Nicht daß das
ein Problem ist: einen Wrapper geschrieben, der das "-gpio_direct"
einfßgt und mit SETUID "root" läuft.

Josef
 
Kleines F'Up to self:

Man muß so Spezifikationen GENAU LESEN!
Mal steht da "MSB...LSB", mal "LSB...MSB" B-)

Kaum macht man's dann richtig, funktioniert's auch mit dem selbst
geschriebenen Programm.

Josef
 

Welcome to EDABoard.com

Sponsor

Back
Top