Programmare PIC da Linux

Dopo circa 12 anni che non li ho più presi a mano, mi è tornata la voglia di cimentarmi con questi "bestiolini". Però i tool Microchip o sono solo per Windows o sono molto limitati, o entrambe le cose. È possibile avere una "filiera" completamente open source?

In realtà i tool ci sono, ma vanno compilati "in proprio" poiché Microchip detiene il copyright sul codice del programmatore e sugli header file, che quindi non possono venire usati per la generazione dei pacchetti inclusi con le distribuzioni. Bah! Stupidità aziendale...

Come HW per la programmazione ho un vecchissimo Velleman K8048, che però non è più supportato da nessun SW che abbia trovato (edit: inn realtà Pikdev pare supportarlo, ma è comunque un programmatore limitato, datato e che richiede una seriale fisica: un convertitore USB-RS232 può anche farcela, ma ci mette più di 3 minuti per lo stesso lavoro che con la seriale fisica richiede meno di 30" e che ad un programmatore USB ne richiede circa 3). Ho quindi cercato un po' e pare che il PicKit2 sia supportato. Peccato che ufficialmente sia anche fuori produzione! Questo non mi crea grossi problemi: per meno di 10€ su Aliexpress c'è l'imbarazzo della scelta! Ordinato ed arrivato dopo soli 20 giorni: per ora è un record! Smile

Nell'attesa post-ordine mi sono messo un po' avanti, scaricando pk2cmd .
Basta seguire le istruzioni per compilarlo senza particolari problemi (avendo installato libusb-dev. Un riferimento più dettagliato è disponibile (in inglese) -- è quello su cui mi sono basato anche io.
L'unico accorgimento extra può essere quello di creare una regola udevd per impostare l'owner del device in modo da non dover poi usare sudo per ogni operazione. È sufficiente usare:

echo 'ATTRS{idVendor}=="04d8", ATTRS{idProduct}=="0033", MODE="664", GROUP="plugdev"' > /etc/udev/rules.d/99-pickit2.rules
service udev reload

Ed a questo punto non sarà più necessario usare sudo ./pk2cmd ... ma si potrà lanciare direttamente pk2cmd:

$ ./pk2cmd -s#

Unit #     Unit ID          OS Firmware
0          OlHoss           2.32.00

Operation Succeeded

Per fare una prova, collego il PicKit2 alla porta ICSP del K8048:

$ ./pk2cmd -I -P
Auto-Detect: Found part PIC16F627.

Device ID = 07A0
Revision  = 0000
Device Name = PIC16F627

Operation Succeeded

OTTIMO! Funziona!

Altro test: mettere in esecuzione il codice presente nel PIC. Bisogna usare ./pk2cmd -pPIC16F627 -t -r. -t lascia attiva l'alimentazione, mentre -r rilascia /MCLR permettendo al codice di girare. Ovviamente il deviatore sulla K8048 deve essere in posizione 'Run' -- ma può rimanerci anche quando si programma!

Avere un compilatore C può essere utile, ed SDCC supporta i PIC, ma solo se lo si compila da sorgente (i file che usa per generare i .h sono copyright Microchip, quindi il supporto per i PIC non è incluso nella versione pacchettizzata...).

Anche le GPUTILS sono molto utili, anzi indispensabili, ma almeno queste si possono installare dai pacchetti della distro.

Altro pezzo importante è PikLab, un IDE per poter lavorare un po' più comodamente. Ovviamente ho visto solo ora che nell'ultima release pare supportare il PicKit3, mentre il PicKit2 è supportato solo con FW 1.x (come si vede sopra, quello che mi è arrivato ha FW 2.32 ...). Vabbè, non è un grosso problema: l'importante è che mi generi correttamente la configurazione del device e, magari, anche il .hex . Poi nel peggiore dei casi si può flashare da command line (o provare a configurare pk2cmd come tool "esterno").
Comunque è anche lui da compilare da sorgente, ma anche in questo caso basta seguire le istruzioni fornite. In caso di problemi con la compilazione, verificare di aver installato tutte le dipendenze necessarie:
apt install kdelibs5-dev qt5-qmake ncurses-dev libreadline-dev

PS: dopo tanta fatica, mi sono (re-)imbattuto in PikDev che supporta nativamente la scheda Velleman K8048. Comunque, avendo installato pk2cmd può usarlo senza problemi. Per compilarlo, secondo le istruzioni fornite, ho solo dovuto installare libqtwebkit-dev . Volendo, c'è anche un suo compilatore C (CPik18) ovviamente dedicato ai PIC18. Peccato per qualche glitch nell'interfaccia grafica che ne rende l'uso un po' scomodo...

Edit: La pagina per il PicKit2 è ancora disponibile sul sito Microchip (2017-07-22), con molte informazioni interessanti. L'ho trovata tramite la pagina del PK2, un clone open del PicKit2.

Edit 2: Un altro progetto interessante è Pickle, che supporta diverse modalità di programmazione, incluso il vecchio K8048... Insomma, pare che Murphy voglia dirmi che avrei fatto meglio a risparmiare quei 10€... Smile Ovviamente trovo solo ora che ho già il PicKit2 tutto il sw che supporta il K8048... Ma magari mi prenderò anche il PicKit3 con l'adattatore ZIF per poter programmare comodamente tutti i DIL. Per gli altri c'è sempre il connettore ICSP (magari realizzato con dei pad sul PCB, da abbinare ad un adattatore con pogo-pin).

Edit 3 (2018-10-09): oggi mi è arrivato il PicKit3 (clone cinese...) e devo dire che ne sono rimasto piuttosto deluso. Preciso che lo uso da Piklab, e questo sicuramente ha il suo peso (voglio sperare che con MPLAB-X la situazione sia molto diversa), ma supporta solo pochissimi chip... L'unica cosa buona è l'adattatore da ICSP a ZIF DIL: vale i quasi 7€ che ho pagato. Ho anche trovato un altro sito interessante, dove l'autore rende scriptabile il sw CLI fornito da Microchip, Può essere utile.

0
Il tuo voto: Nessuna
Realizzato con Drupal, un sistema open source per la gestione dei contenuti