Progettare con i dispositivi PSoC5

Per supportare le nuove famiglie PSoC3 e PSoC5, Cypress ha sviluppato tempo fa il nuovo ambiente IDE PSoC Creator. Scopriamo come funziona.

PSoC Creator è il nuovo ambiente di sviluppo integrato (IDE) rilasciato da Cypress per la progettazione con le recenti famiglie di dispositivi programmabili PSoC3 e PSoC5. Per i sistemi embedded più che per ogni altra architettura, la qualità degli strumenti di progetto ed il supporto fornito a questo concorrono fortemente a determinare l’affermazione della tecnologia o la disaffezione degli utenti.

Un flusso di progetto hw/sw completamente integrato

PSoC Creator rappresenta un ambiente di progetto di alto livello che unisce un’interfaccia grafica intuitiva e di uso immediato a funzionalità di schematic entry ed editor di testo integrato, debugger built-in, catalogo di periferiche standard e gestore di librerie di componenti. La più recente distribuzione integra un compilatore Keil CA51 per i dispositivi  PSoC3 senza alcuna limitazione sulla dimensione del codice sorgente e la versione Lite Edition di Sourcery G++ di CodeSourcery da utilizzare, invece, con i PSoC5. La figura 1 mostra, nelle linee di principio generali,  il flusso di progetto seguito nello sviluppo di applicazioni con dispositivi PSoC.

Figura 1 flusso di progetto con PSoC Creator.

Figura 1 flusso di progetto con PSoC Creator.

La prima fase prevede la definizione dell’architettura del componente; la modalità di design entry è di tipo schematico. Nell’ambiente è inclusa una libreria di componenti standard ma possono anche essere definite funzioni logiche custom; in questo caso è supportata una descrizione in linguaggio Verilog. Il Code Generator genera quindi una descrizione HDL del progetto e la libreria software di API (Application Programming Interface) per lo sviluppo dell’applicativo utente. La descrizione HDL viene sintetizzata mediante Warp; i tool di mapper, placer e router infine generano l’associazione delle funzioni logiche del progetto alle primitive fisiche del componente e la distribuzione e la connessione di queste all’interno del dispositivo. Le utility di builder e linker consentono invece di generare l’eseguibile per l’applicativo software; il file .elf compilato contiene anche le informazioni per il successivo  debug in circuit. Il file .hex che contiene i dati di programmazione del PSoC - con le informazioni, quindi, relative ai blocchi configurati e le connessioni implementate - viene infine aggiornato per includere  i valori di inizializzazione delle memorie on-chip usate dalle diverse sezioni dell’applicativo.

Un’unica interfaccia grafica per tutte le fasi di progettazione…

Come si diceva in precedenza, l’intero flusso di progetto può essere seguito sotto un’unica interfaccia grafica all’interno dell’ambiente PSoC Creator. La figura 2 mostra come appare tale interfaccia grafica dopo aver creato un nuovo progetto. Sulla sinistra è presente, come indicato appunto in figura, la finestra Workspace Explorer; PSoC Creator, infatti, come la maggior parte degli ambienti IDE, adotta un’organizzazione del lavoro in workspace e progetti. Nel tab source della finestra sono riportati i file di progetto. E’ immediato riconoscere le due cartelle dedicate che contengono i sorgenti  ed i file header dell’applicativo utente. Il  file <design_name>.cysch rappresenta invece la descrizione dell’architettura interna del dispositivo mentre il file <design_name>.cydwr definisce le modalità di gestione  delle risorse. I file possono essere aperti all’inter no della Work Area semplicemente cliccandovi sopra due volte. L’Editor usato per visualizzare  i file di testo, ad esempio, rende disponibile tutte le principali funzionalità – come brace-matching, outlining, auto-commenting, auto-indenting e code snippets – di supporto per lo scrittura di codice applicativo. Il file .cysch è invece aperto in uno Schematic Editor piuttosto classico all’interno della Work Area del frame work di lavoro (vedi figura 2).

Figura 2: il framework di lavoro principale di PSoC Creator

Figura 2: il framework di lavoro principale di PSoC Creator

Sulla destra di tale area, è presente la finestra Component Catalog che raccoglie  i componenti di libreria standard (denominati CyPrimitive) che possono essere aggiunti al proprio progetto. Mediante semplici operazioni drag&drop da questa finestra a quella di Schematic Entry è possibile selezionare il componente corrispondente alla funzione desiderata ed aggiungerlo all’architettura del componente; semplicemente tracciando delle linee è poi possibile definire le connessioni dei segnali tra i diversi  blocchi. Ad ogni componente è associato un menù di popup che ne consente la configurazione. In figura 3 è mostrata ad esempio la finestra di configurazione di una periferica UART; come si vede sono parametrizzabili, tra gli altri, il baud di rate di trasmissione o l’eventuale controllo di parità.

Figura 3: configurare una periferica mediante interfaccia grafica.

Figura 3: configurare una periferica mediante interfaccia grafica.

Ad ogni componente può inoltre essere associato anche un datasheet che ne riporta la descrizione funzionale e dei parametri di configurazione;  il datasheet può essere automaticamente richiamato proprio dalla finestra di configurazione, come si vede in figura 3, o dal menù di pop-up che si apre clickando con il tasto destro mouse sull’istanza del componente nella finestra di Schematic Editor. In questo modo si facilita l’accesso alla documentazione di progetto. In alternativa all’uso di periferiche standard, possono essere importati componenti custom creati in altri progetti; PSoC Creator supporta, infatti, il riutilizzo  di moduli come strumento per la riduzione dei tempi di sviluppo. La finestra DWR (Design-Wide Resources) consente invece di modificare  il file .cydwr che definisce, come detto in precedenza, le modalità di gestione delle risorse del dispositivo. La finestra comprende i diversi tab, associati a diverse funzioni. Il Pin Editor, ad esempio, consente di assegnare manualmente i segnali di ingresso/uscita del dispositivo ai pin fisici del componente. Il Clock Editor permette invece di specificare  i segnali di clock definendo per ognuno il tipo (ad esempio locale o di sistema),  il dominio (analogico o digitale), la frequenza nominale, l’accuratezza attesa e la tolleranza richiesta. La priorità delle routine di servizio delle linee di interruzione può essere modificata all’interno dell’Interrupt Editor mentre eventuali controller DMA presenti nel progetto possono essere configurati mediante DMA Editor; la finestra riporta nome, numero di descrittori e di canale del controller e permette di definirne la priorità. Il System Editor supporta invece la gestione delle principali funzionalità a livello sistema programmabili. E’ possibile ad esempio abilitare la memorizzazione dei dati di configurazione nella memoria ECC per ridurre l’occupazione della flash o la scrittura dei dati da Flash in cache RAM; possono essere abilitate le funzionalità di debug e configurato il Bootloader. Il Directives  Editor infine consente di definire le direttive usate durante la fase di implementazione del progetto, come eventuali constraint sul piazzamento delle risorse all’interno del dispositivo o sulle modalità di sincronizzazione dei segnali in ingresso/uscita. La Notice List Window nella finestra di Output, in basso nell’area di lavoro di PSoC Creator, riporta invece il log completo di warning, errori e note generati dai diversi passi di compilazione del progetto. In particolare l’utility DRC (Design Rule Checker) verifica la violazione di regole predefinite nel database di progetto; alcuni errori (come quelli di connettività) sono riportati immediatamente mentre altri aggiornati solo in seguito ad operazioni di load o save del progetto.

…e di debug

Poter disporre di funzionalità di debug in circuit è diventato ormai necessità irrinunciabile per ridurre tempi di sviluppo e verifica. PSoC Creator include per questo un debugger (figura 4) del software applicativo che consente di osservare il comportamento run-time del proprio programma ed individuare così i bug della propria logica.

Figura 4: il Debugger integrato in PSoC Creator

Figura 4: il Debugger integrato in PSoC Creator

Funzionalità di debug sono disponibili non soltanto per la CPU  ma anche per componenti generici del sistema, come timer o PGA. Il Debugger consente di inserire, direttamente nel codice sorgente o nel corrispondente listato in linguaggio assembler, dei breakpoint su particolari istruzioni, in corrispondenze della cui esecuzione arrestare il sistema. Il  programma può quindi essere eseguito passo-passo; sono ovviamente disponibili le classiche modalità di esecuzione step into, step over e step out tipiche di ogni programma di questo tipo. Breakpoint possono essere definiti anche in corrispondenza di operazioni di lettura o scrittura di specifiche variabili. Per ogni breakpoint è possibile inoltre tracciare il numero di hit e definire il valore di trigger. Possono essere definiti breakpoint di tipo hardware e software. Nel primo caso l’interruzione viene gestita internamente al dispositivo PSoC e quindi il codice è eseguito a velocità reale; nel secondo invece  il debugger sul PC host esegue il  codice passo verificando ad ogni passo l’eventuale corrispondenza del breakpoint. Finestre dedicate all’interno del debugger consentono quindi di visualizzare e modificare, in condizioni di halt del dispositivo PSoC, lo stato delle memorie interne o di variabili locali della CPU, registri, espressioni logiche. Utile è pure la finestra di Call Stack che consente di visualizzare una lista ordinata delle funzioni in esecuzione; ogni chiamata a funzione non ancora terminata (perché in attesa di ritorno da chiamata ad ulteriore funzione o perché arrestata da chiamata ad una routine di interruzione) è riportata nella lista; la funzione più in basso è evidentemente il  main() del programma.

 

 

Scrivi un commento

EOS-Academy
Abbonati ora!