Cypress PSoC Bootloader

Il programma di un sistema a processore (MCU), il firmware, risiede su una memoria non volatile. Per i dispositivi PSoC è tipicamente una memoria flash.

Per 'caricare' il firmware i metodi principali sono due:

  • Usare una interfaccia JTAG (Joint Test Action Group) o SWD  (Serial Wire Debugger), dedicate allo scopo e utilizzando un dispositivo esterno di programmazione.
  • Usare un software bootloader, un meccanismo che sfrutta una interfaccia di comunicazione non dedicata.

Nel primo caso occorre un dispositivo esterno ad hoc in grado di pilotare alcune linee del chip, dedicate allo scopo, ed accedere alla memoria flash del sistema. E' un modo pratico impiegabile in laboratorio, ma poco usato per la manutenzione sul campo.

Bootloader: come funzionaNel secondo caso viene usata una linea di comunicazione non dedicata (USB, Seriale, I2C) che, a fronte si una azione iniziale (un reset o simile) viene predisposta per ricevere dati destinati alla programmazione della flash. E' il modo più frequentemente usato sul campo, perchè non richiede dispositivi particolari, ma un semplice PC con una porta di comunicazione.
Serve, però, un minimo di programma a supporto delle operazione, programma che, ad esempio, al reset o ad un segnale di ingresso, sia in grado di ricevere i dati binari, trasferirli un memoria in una locazione adeguata e, al temine, trasferire il controllo al programma caricato.

Questa procedura detta  di bootload può essere integrata nel programma creato, o meglio ancora, un programma esterno alla nostra applicazione e magari predisposto dal progettista del sistema.

Il PSoC supporta entrambi i metodi: JTAG e bootloader.

Il metodo più economico, e più immediato sul campo, è il bootloader ed è quello che sarà descritto.

Per il PSoC, il processo di bootload è diviso in due parti

  • Bootloader, abbinato ad una porta di comunicazione, in concreto un progetto realizzato con il Creator e riutilizzabile con altri progetti. Di fatto il bootloader produce codice binario che andrà usato dal bootloadable.
  • Bootloadable, che definisce il meccanismo usato per comandare il bootloader e 'agganciarlo' al nostro progetto

Per realizzare il bootloader, si usa il PSoC Creator, si inizia un nuovo progetto, chiamiamolo Bootloader. Scegliamo la piattaforma di sviluppo in uso e carichiamo due moduli: il bootloader ed una porta si comunicazione. Per il CY8CLYT-49-42xx la porta di comunicazione deve essere seriale UART, l'unica disponibile,  e configuriamo i blocchi.

Blocco Bootloader

Configuriamo la porta di comunicazione come UART

UART

 

Configuriamo i parametri della UART

UART Velocità

Ed eventualmente la dimensione del buffer

UART Buffer

 

Configuriamo il bootloader indicando come componenti di comunicazione la UART:

Abbinamento Bootloader - UART

Non resta che fare il build del progetto (Shift + F6).

Il codice del bootloader è generato nella cartella

progetto\Bootloader.cydsn\CortexM0\ARM_GCC_493\Debug

I file che serviranno per il bootloadable sono Bootloader.hex e Bootloader.elf

Ecco il video che spiega come realizzare il progetto di bootloader:

Questo video per realizzare una semplice applicazione con un display LCD

Categoria: 

Tags: 

Mi piace: 

5
Average: 5 (1 vote)