Il Code Configuration di casa Microchip

Nuovo appuntamento con la Rubrica Firmware Reload di Elettronica Open Source. Allo scopo di supportare i propri prodotti e di ridurre il time to market, Microchip ha deciso di mettere a punto uno strumento di configurazione estremamente versatile che consente di utilizzare i suoi processori in modo trasparente. In questo articolo se ne descrivono uso e caratteristiche principali.

Introduzione

Il Code Configurator, attraverso la sua tecnologia plug-in, permette di sfruttare la stessa interfaccia grafica del solito tool Microchip, MPLAB X IDE, e assicura la generazione in modo automatico e trasparente dei diversi driver supportati dal costruttore in base alle singole esigenze del cliente ricorrendo alle impostazioni e selezioni effettuate nell’ambito della sua Graphical User Interface (GUI) presente. Infatti, impostando le diverse opzioni, è possibile ottenere differenti driver già pronti all’uso evitando di perdere tempo in programmazioni di basso livello ripetitive e senza particolare valore aggiunto per il progettista. Il file, o driver di basso livello, così ottenuto, è direttamente utilizzabile in un qualsiasi programma applicativo. È anche opportuno precisare che, prima di utilizzare il Code Configurator di casa Microchip, all’interno dell’interfaccia grafica MPLAB X IDE, il progetto deve essere già stato creato in precedenza o, al limite, in caso di progetto già esistente, già aperto.

Questo, in un primo momento, potrebbe sembrare un limite, è un’operazione necessaria perché il nuovo tool di Microchip, al fine di caricare correttamente i driver in uso, ha la necessità di conoscere il dispositivo utilizzato e, di conseguenza, caricare le definizioni utili quali il nome dei registri, la definizione dei bit e i diversi modi d’uso. Successivamente, la GUI del prodotto si preoccupa di generare il file e le intestazioni associate in base alla selezione effettuata: al termine del processo di configurazione, il tool pone i file generati all’interno del progetto selezionato, si veda a questo proposito la Figura 3. In base alle informazioni fornite dal costruttore, si scopre che il Code Configurator è compatibile con la versione 1.9, o successive, dell’ambiente di lavoro MPLAB X IDE e con la versione 1.2, o successive, del compilatore MPLAB XC8 sempre di casa Microchip. Il Code Configurator può essere facilmente integrato nell’ambiente di lavoro MPLAB X IDE grazie alla sua tecnologia plug-in; infatti, una volta selezionato, attraverso la sua interfaccia grafica, dal menu "Tools" occorre selezionare la voce “Plugins”. Una volta fatta questa scelta nella sezione “Available Plugins” possiamo scegliere il Code Configurator e selezionare l’opzione d’installazione (Figura 2).

Figura 1: Menù MPLAB Configurator

Figura 1: Menu MPLAB Configurator

 

Figura 2: Scelta dell’opzione d’installazione nella sezione “Available Plugins”

Figura 2: Scelta dell’opzione d’installazione nella sezione “Available Plugins”

 

Figura 3: File generati collocati all’interno del progetto selezionato

Figura 3: File generati collocati all’interno del progetto selezionato

UTILIZZARE MPLAB CODE CONFIGURATION

Il Code Configurator ci propone un’interessante interfaccia; infatti, è composta di una visione d’insieme di tre aree distinte, così come messo in evidenza in Figura 4.

Figura 4: Le aree distinte di Code Configurator

Figura 4: Le aree distinte di Code Configurator

Infatti, la figura pone in evidenza la Resource Area, in altre parole la parte che identifica i dispositivi supportati che sono disponibili secondo la selezione effettuata in precedenza, oltre al Composer Area e l’area Pin Manager. La Composer Area è la parte dell’interfaccia dove si pongono in evidenza i diversi modi di configurazione di una periferica insieme alle differenti scelte possibili. Infine, la Pin Manager Area è la sezione in cui si mostrano i diversi impatti su ogni pin con le relative funzioni operabili. Non solo, il costruttore ha anche deciso, in ambito della Device Resource Area, di offrire una funzionalità di Search che è applicabile su tutti i dispositivi supportati. In questo modo, il progettista ha la possibilità di richiamare ogni singolo device semplicemente ricorrendo al suo nome o all’applicazione in uso. In questo caso, inserendo nella “search tab” solo alcuni caratteri che permettono di identificare il nome della periferica, ad esempio “tim” per “timers”, l’utente ottiene immediatamente l’elenco di tutte le periferiche possibili e applicabili.

GENERARE UN FILE DI DEFINIZIONI

La Figura 5 mostra una vista d’insieme sui differenti passi da seguire per generare nuovi driver legati a una periferica attraverso questo tool di casa Microchip.

Figura 5: Passi da seguire per la generazione di nuovi driver legati ad una periferica

Figura 5: Passi da seguire per la generazione di nuovi driver legati ad una periferica

Il Code Configurator di Microchip permette di ricavare un nuovo driver con una notevole semplicità; in effetti, la figura precedente pone in evidenza la semplicità del processo di generazione dei nuovi file: un lavoro che è facilitato grazie alla nuova interfaccia che permette, attraverso delle finestre di dialogo estremamente chiare, di intervenire anche sui singoli bit al fine di ottenere le nuove funzionalità di cui si ha la necessità. Infatti, una volta selezionato, ad esempio, il progetto con MPLAB X IDE, o avendo cura di aver creato in precedenza un nuovo progetto, l’utente ha solo, se così si può dire, la necessità di utilizzare le diverse proposte grafiche suggerite dal costruttore: dalla Device Resources Area, l’utente deve selezionare una periferica per consentire al Code Configurator di generare il nuovo codice. Ad esempio, dalla Figura 6 si nota, avendo abilitato in precedenza il modulo EUSART asynchronous NRZ, che la periferica ora appare nell’area delle risorse di progetto.

Figura 6: La periferica appena generata ora appare nell’area risorse del progetto

Figura 6: La periferica appena generata ora appare nell’area risorse del progetto

Infatti, nell’area Project Resource si deve selezionare la periferica che interessa configurare facendo l’apposita scelta con il mouse sul suo nome selezionandola dalla lista a video. Una volta selezionata la periferica, il tool si preoccupa di inserire la sua interfaccia grafica nella sua Composer Area. Ad esempio, il modulo EUSART asynchronous NRZ (NRZ), quando risulta selezionato, la rispettiva GUI è inserita nella Composer Area, si veda la Figura 7.

Figura 7: La GUI del modulo selezionato viene inserita nella composer area

Figura 7: La GUI del modulo selezionato viene inserita nella Composer Area

Analoghe considerazioni si devono tenere presente se volessimo modificare la gestione dei pin di un GPIO. Non solo, il tool si presta anche a svolgere operazioni, per così dire, più chirurgiche. In effetti, con il Code Configurator è possibile definire diverse sequenze d’inizializzazioni. Infatti, in questo caso, assumendo di definire un’applicazione con due EUSART funzionanti con diversi bps, è necessario definire diverse sequenze d’inizializzazioni ognuna con il baud rate richiesto. Nel nostro contesto, ogni sequenza d’inizializzazione, routine o parti di file, può essere richiamata secondo la specifica esigenza del singolo applicativo: dal punto di vista grafico, ogni inizializzazione diversa può essere aggiunta al corpo del programma semplicemente selezionando il bottone grafico “+”. Pare, però, opportuno precisare che solo quello che è definito “default initializer”, in ambito d’inizializzazioni multiple, sarà incluso nel processo d’inizializzazione finale. In questo modo, se volessimo aggiungere diversi moduli, dove ognuno ha una differente inizializzazione, allora abbiamo la necessità di invocare, attraverso il programma applicativo, quella desiderata. In altre parole, la funzione d’inizializzazione deve essere chiamata in modo esplicito e solo quando ne avessimo effettivamente l’esigenza.

Il Code Configurator di Microchip permette anche di inizializzare e definire gli eventi di tipo asincrono sempre presenti in una qualsiasi applicazione embedded. In questo caso, se abbiamo la necessità di utilizzare un evento di questo tipo dobbiamo, per prima cosa, abilitarlo, ricorrendo alla sua interfaccia posizionata nell’area Composer: il simbolo associato è così anteposto al nome della periferica in questione presente nella Project Resource Area. In seguito, la nuova funzionalità è aggiunta al progetto per mezzo di un nuovo modulo denominato “gestore d’interrupt” o “interrupt manager”: l’elemento è aggiunto alle risorse del progetto ed è utile per gestire la priorità di esecuzione delle periferiche. La priorità dell’interrupt può anche essere impostata utilizzando l’interfaccia grafica presente o agendo sulle scelte possibili presenti a menu. I processori di casa Microchip dispongono, così come tutti gli altri microcontrollori presenti sul mercato, delle classiche porte GPIO.

Grazie a questa particolarità è possibile, sempre agendo sui registri del microcontrollore, configurare la topologia del pin. Questo può anche essere fatto ricorrendo al Code Configurator agendo sull’area di Pin Manager. Diventa così possibile, per ciascun progettista, modificare in modo assolutamente trasparente la configurazione del processore rispettando, così, i requisiti imposti da un cliente. Il progettista può anche ottenere una vista d’insieme dei pin utilizzati nel progetto, ad esempio nella Figura 8 si pone in evidenza la configurazione dei 44 pin in package TQFP relativi alla funzionalità EUSART asynchronous (NRZ).

Figura 8: Configurazione del pin 44 in modalità TX per il modulo EUSART

Figura 8: Configurazione del pin 44 in modalità TX per il modulo EUSART

Al termine del processo di configurazione possiamo procedere alla generazione del codice sorgente per passare poi alla fase di compilazione: questo può essere fatto semplicemente selezionando la scelta “Generate Code” subito sopra la Composer Area. Al termine di questa procedura otteniamo così tutto il software di configurazione che ci serve. A questo proposito la Figura 9 mostra una possibile situazione con i diversi driver che contengono le parti di pin configurations, interrupt e system configurations: la Tabella 1 mostra un possibile caso concreto.

Figura 9: I diversi driver disponibili al termine del processo di configurazione

Figura 9: I diversi driver disponibili al termine del processo di configurazione

In ambito MPLAB X esiste la possibilità di utilizzare Code Configurator con “Diff Checking Tool”. Questa è una particolarità piuttosto interessante perché ci permette di introdurre un ulteriore controllo sul codice generato ed evitare conflitti con MPLAB X IDE. Infatti, il “Diff Checking Tool” impedisce al generatore di codice di sovrascrivere, ad esempio, eventuali modifiche a un file presente nel progetto.

Tabella 1 – Risultato del processo di generazione

Tabella 1: Risultato del processo di generazione

 

Tabella 2 – Dispositivi supportati

Tabella 2: Dispositivi supportati

IN CONCLUSIONE

Il tool fornito da Microchip può offrire di certo interessanti vantaggi perché può liberare, ad esempio, il progettista da operazioni ripetitive permettendo di generare nuove sequenze d’inizializzazioni e di programmazioni in modo trasparente togliendo qualsiasi potenziale errore umano dovuto a un’errata interpretazione del datasheet in uso. Non solo, il Code Configurator, se utilizzato in modo appropriato, può significare interessanti sviluppi tanto da consentire incisivi miglioramenti nel progetto e nella codifica. Nel rispetto, poi, della politica di casa Microchip, il costruttore supporta ogni utilizzatore del programma attraverso un forum appositamente realizzato e manutenuto.

Scarica subito una copia gratis

Scrivi un commento

Seguici anche sul tuo Social Network preferito!

Send this to a friend