http://tomasella.altervista.org/it/elettronica/microcontrollori/PICandUSBbootloader/

PIC & USB: programmazione via bootloader

Il bootloader è un programma che, caricato nel microcontrollore, permette di programmare il microcontrollore stesso direttamente tramite la porta seriale o USB, invece di dover utilizzare un programmatore. Questo permette di velocizzare notevolmente il processo di sviluppo del firmware. Nella trattazione seguente si farà riferimento al bootloader via USB per PIC della serie 18FXXXX con porta USB, avendo preventivamente installato il software necessario come illustrato qui.

Per poter utilizzare questa possibilità è necessario programmare il PIC con il codice riportato nel file picdemfsusb.hex contenuto tipicamente nella cartella C:\MCHPFSUSB\fw\_factory_hex. Anche se è stato sviluppato per PIC18F4550, è perfettamente compatibile con gli altri tre PIC della serie 18FXXXX dotati di porta USB.

Ora si può collegare il circuito alla porta USB del PC e far entrare il sistema nella modalità bootloader semplicemente premendo e mantenendo premuto il pulsante denominato "Boot", premendo e rilasciando il pulsante "Reset" e quindi rilasciando il pulsante "Boot".

La prima volta che si entra in questa modalità, il PC riconosce una nuova periferica hardware, quindi inizia la procedura di identificazione della periferica e di ricerca dei relativi driver. Selezionare la ricerca manuale dei driver e inserire la cartella relativa, che tipicamente è C:\MCHPFSUSB\Pc\MCHPUSB Driver\Release.

Fatto ciò, per programmare il PIC con un qualsiasi programma che avremo creato, sarà sufficiente apripre il programma PDFSUSB.exe della Microchip, che trovate all'interno della cartella C:\MCHPFSUSB\Pc\Pdfsusb, selezionare il dispositivo (ad es. "PICDEM USB 0 (boot)"), caricare il file contenente il codice del vostro firmware attraverso il pulsante "Load HEX File" e programmare il PIC cliccando su "Program Device". Potrete così apprezzare la comodità e la velocità di programmazione via bootloader, rispetto a quella tradizionale tramite programmatore.

Terminata la fase di programmazione potrete avviare il programma appena scaricato sul PIC cliccando su "Execute", oppure premendo il pulsante "Reset" presente sul circuito.

È importante notare che il bootloader originale fornito dalla Microchip funziona solamente con un quarzo da 20MHz come indicato qui. Ricordo inoltre che, per poter utilizzare la connessione USB di tipo Full-speed, il PIC lavora ad una frequenza di clock di 48MHz (ricavata internamente attraverso un PLL). A questo riguardo posso affermare che non è strettamente necessario montare un quarzo da 20MHz, a patto di programmare il PIC nella maniera appropriata. Se infatti si avesse la necessità di montare un quarzo da 4MHz (ad esempio perchè non si dispone di uno da 20MHz), sarebbe sufficiente programmare il PIC con questo bootloader, invece che utilizzare quello originale. Alternativamente, usando come progammatore il WinPic è sufficiente aprire il file hex del bootloader fornito da Microchip e modificare il bit di configurazione del PLL prescaler come desiderato, quindi programmare il PIC. In questo modo la frequenza di clock rimarrà di 48MHz, adatta a sostenere una comunicazione USB di tipo full-speed.

Un'altra cosa estremamente impotante è che utilizzando un bootloader dobbiamo obbligatoriamente rimappare la memoria del PIC, per tenere in considerazione il fatto che nella parte bassa della memoria programma è appunto presente il bootloader, il quale non deve essere sovrascritto e non deve dare conflitti durante l'esecuzione del programma principale. Per questo, nei nostri progetti in ambiente C18 dovremo caricare un linker apposito al posto di quello che avremo utilizzato se non ci fosse stato il bootloader. Riporto perciò di seguito la tabella con i linker rimappati per i relativi PIC USB.

- file linker -
linker originale linker rimappato
18f2455 rm18f2455
18f2550 rm18f2550
18f4455 rm18f4455
18f4550 rm18f4550


torna all'inizio     Stampa

Valid HTML 4.01 Transitional    Valid CSS