Bootloader e Programmazione On-Board


Per programmare il PIC senza toglierlo dal circuito in cui viene utilizzato (programmazione on-board) , è necessario permettere la comunicazione seriale tra il PIC ed il PC  ed utilizzare un apposito programma, detto bootloader.

La comunicazione seriale avviene tramite gli appositi pin RX e TX dell'USART del PIC ( normalmente RC7 e RC6 ) , dopo aver provveduto alla conversione di livello dei segnali provenienti dalla porta RS232 del PC tramite un integrato MAX232.

Il circuito utilizzato è il seguente :


RS232


Il bootloader è un software composto da due parti : una parte risiede sul PIC ed è normalmente chiamata bootloader, l'altra sul PC ed è normalmente chiamata programma di caricamento.

La parte che risiede sul PIC si attiva allo start-up del PIC o al suo reset. Per un breve periodo di tempo verifica la presenza di attività sulla porta seriale generata dal programma di caricamento e, in caso positivo, avvia il trasferimento del file di programma .hex dal PC e lo scrive nella memoria flash del PIC.

Nel caso non trovasse attività sulla porta seriale, dopo un periodo di tempo predefinito (qualche centinaio di millisecondi ), il bootloader va in time out e viene eseguito il programma residente nella memoria del PIC.

Il bootloader va caricato sul PIC utilizzando IC-Prog, così come spiegato nella sezione relativa al programmatore.

Il bootloader dipende dal tipo di PIC utilizzato, dalla frequenza del quarzo e dalla velocità di comunicazione con il PC ( Baud rate ).

Vari bootloader, il programma di caricamento ed ulteriori informazioni si possono ricavare dal sito di Shane Tolmie : http://www.microchipc.com/PIC16bootload/

Utilizzando un PIC 16F877A, un quarzo da 10Mhz ed una velocità di comunicazione di 19200 bps il file da utilizzare è :

bootldr-16F877A-20MHz-38400bps.HEX

Lo stesso file può essere utilizzato per un quarzo di 20Mhz e 38400bps.

Il caricamento del bootloader sul PIC va fatto una sola volta.

Per trasferire sul PIC un eseguibile utilizzando il bootloader, si utilizza un programma di caricamento.

Sul sito di Shane Tolmie è disponibile il programma PIC_downloader.exe   che una volta lanciato si presenta in questo modo :

pic_downloader

File è il nome del .hex da caricare sul PIC

La porta di comunicazione PORT va settata alla stessa velocità impostata nel bootloader caricato sul PIC.

Premendo WRITE il programma aspetta il reset del PIC.

Appena si resetta il PIC premendo il tasto collegato al pin MCLR, parte il trasferimento, di cui è possibile seguire l'avanzamento nella finestrella INFO.

Alla fine del trasferimento un messaggio di OK conferma il completamento dell'operazione.

Il programma è stato trasferito sul PIC senza che questo venga rimosso dal circuito (on-board programming)

Questo è il prototipo del circuito di verifica del bootloader per il PIC 16F877A montato su basetta millefori. Il quarzo ha una frequenza di 10Mhz.

Test Bootloader

Si è preferito cablare su un ritaglio di basetta la parte relativa al MAX232 per riutilizzare l'interfaccia seriale in altri progetti.

Al pin 20 del PIC è collegato il puntale di un oscilloscopio per verificare il corretto funzionamento di un semplice programma di prova che "accende" in sequenza dei LED collegati agli 8 pin della PORTA D.

Per verificare il corretto funzionamento della porta seriale, è possibile caricare sul PIC, tramite IC-Prog, il programma  _19100 - Test_16F87x_Serial_Port_19200baud_10Mhz.HEX .

Dopo aver collegato il PC al PIC tramite un cavo seriale, ed aver attivato il programma di comunicazione HyperTerminal
di Windows impostando una velocità di comunicazione di 19200 baud, è possibile visualizzare il messaggio [ALIVE] che viene inviato continuamente dal PIC sulla porta seriale.


Ultimo Aggiornamento : 18 Apr. 2005