Fujitsu Softune IDE

Softune IDE è un ambiente di sviluppo integrato per applicazioni basate sulle famiglie di microcontrollori Fujitsu. L’IDE si compone di una ricca suite di strumenti di sviluppo in grado di supportare efficacemente l’intero ciclo di sviluppo di una applicazione: scrittura del codice sorgente, compilazione, debugging e generazione dell’eseguibile da scaricare sulla ROM.

Softune IDE è uno strumento di sviluppo integrato progettato per mettere a disposizione degli sviluppatori software uno strumento semplice da utilizzare, in grado di svolgere le tipiche attività richieste dallo sviluppo di un programma: editing ripetitivo del codice sorgente, compilazione tramite tool automatici (make o build), debugging.

Tutte queste attività sono sintetizzate in figura 1, che ben illustra il tipico flusso di sviluppo di un programma. È previsto il supporto per tutti i microcontrollori Fujitsu appartenenti alle famiglie FR, F2MC-16, e F2MC-8FX.

Figura 1: il flusso di sviluppo di un’applicazione software.

Figura 1: il flusso di sviluppo di un’applicazione software.

La struttura di softune

In figura 2 è mostrata la struttura del prodotto Softune, incentrata attorno all’applicazione Workbench. Le caratteristiche basilari dei vari componenti appartenenti a Softune si possono riassumere come nel seguito.

Figura 2: la struttura di Softune.

Figura 2: la struttura di Softune.

Workbench

Unifica le funzionalità della sezione di gestione (manager) con quella di debugging. Una volta scoperto un errore, questo può essere risolto al volo, e si può eseguirne il debugging immediatamente. Sono disponibili tre tipi di funzionalità di debugging, ognuna adatta a specifiche fasi del ciclo di sviluppo dell’applicazione software: simulatore, emulatore e monitor debugger.

Toolchain di compilazione

Il primo anello della toolchain di compilazione di Softune è rappresentato dal compilatore C/C++. Partendo da un file sorgente scritto in codice C o C++, il compilatore genera come prodotto in uscita un file sorgente assembler. Questo viene poi assemblato dal tool Assembler che genera istruzioni eseguibili sui microcontrollori FUJITSU. La catena si chiude con il Linkage kit, la cui funzione è quella di aggregare più moduli oggetto con le librerie opportune, e generare tramite il converter un file eseguibile che può essere caricato su una ROM.

Tool di supporto

Un primo importantissimo strumento è rappresentato dal C/C++ checker. Tramite un’analisi approfondita del codice, esso svolge la duplice funzione sia di migliorare la qualità complessiva del software prodotto, sia di incrementare il più possibile le prestazioni. Lo affianca l’altro strumento di supporto, il C/C++ analyzer, che permette di visualizzare la struttura del codice sorgente scritto in linguaggio C/C++ e lo stato dei dati utilizzati dal programma. Questo strumento è particolarmente utile per migliorare l’efficienza del programma.

Softune Workbench

Il Workbench è la parte di Softune più propriamente definibile come IDE (Integrated Development Environment), con piena funzionalità di supporto allo sviluppo relativo ai microcontrollori Fujitsu.

Funzioni del Manager

Vediamo ora di passare in rassegna le principali funzionalità offerte dalla sezione Manager del Softune Workbench:

  • gestione del progetto – come visibile in figura 3, il gestore dei progetti permette di organizzare e controllare tutte le informazioni necessarie per lo sviluppo di un sistema a In pratica, Softune Workbench utilizza le aree di lavoro (i workspace) come fossero dei contenitori all’interno dei quali possono essere gestiti uno, due (come in figura), o più progetti;
  • make/build – il make ha il compito di generare un file target compilando/assemblando solo i file sorgenti, tra tutti quelli registrati nel progetto, che hanno subito modifiche e mettendo poi assieme tutti i file oggetto necessari. Il build, invece, si differenzia dal make in quanto genera un file target compilando/assemblando tutti i file sorgente registrati nel progetto, indipendentemente dal fatto che siano stati modificati o meno;
  • analisi delle dipendenze per i file include – Softune Workbench dispone di una funzione integrata di analisi delle dipendenze relative agli include file. Tramite questa funzione, l’utente può conoscere esattamente le dipendenze esistenti, anche nel caso di inclusione annidata (un file include .h che include a sua volta un altro file .h e così via).
Figura 3: il project manager.

Figura 3: il project manager.

Vengono inoltre aggiornate automaticamente le dipendenze dei file compilati o assemblati:

  • elevato livello di usabilità – il Workbench comprende un editor dotato di funzionalità avanzate, come l’evidenziazione delle parole chiave relative al particolare linguaggio utilizzato, e l’auto-indentazione; è tuttavia supportata l’interoperabilità con editor forniti da terze parti, in modo tale da consentire l’utilizzo dell’editor con il quale si ha una maggiore familiarità. Gli errori riscontrati durante la fase di compilazione vengono visualizzati nell’apposita finestra di output collocata nella parte inferiore dello Cliccando con il mouse su ciascun errore (funzione di “error jump”), è possibile risalire direttamente alla porzione di codice sorgente relativa, mentre premendo il tasto F1 si può richiamare l’help contestuale dettagliato (in figura 4 è mostrato un esempio di questa funzionalità);
  • ambiente di lavoro personalizzabile, configurabile secondo le esigenze specifiche dell’utente. È inoltre supportata l’interoperabilità con tool di controllo della configurazione;
  • supporto completo al linguaggio C++, sia a livello di editor sia di opzioni di Questa funzionalità si applica solo alla famiglia di microcontrollori della serie FR.
Figura 4: error jump e help dettagliato.

Figura 4: error jump e help dettagliato.

Funzioni del Debugger

Le principali caratteristiche della sezione Debugger sono invece le seguenti:

  • disponibilità di tre tipi differenti di debugger, in grado di coprire le varie fasi del ciclo di sviluppo e manutenzione di un’applicazione (figura 5). L’emulator debugger si basa sull’utilizzo di un ICE (In Circuit Emulator) e può essere controllato tramite interfaccia di tipo USB, LAN, oppure seriale. Il simulator debugger simula invece il processing eseguito dal microcontrollore operando all’interno della memoria della macchina host (il PC). Simulando accuratamente il comportamento della memoria cache e della pipeline delle istruzioni, è possibile stimare con elevata accuratezza la velocità di esecuzione per i microcontrollori della famiglia FR80. Il monitor debugger, infine, si collega alla scheda target tramite interfaccia seriale RS-232 e permette di acquisire trace significativi e impartire comandi di debug al sistema stesso. Fujitsu mette a disposizione degli sviluppatori numerose schede di valutazione per agevolare il debugging di sistemi basati sui suoi microcontrollori;
Figura 5: il debugger di Softune.

Figura 5: il debugger di Softune.

  • informazioni visive semplici e immediate – il layout dello schermo proposto da Softune può essere liberamente personalizzato selezionando e posizionando a proprio piacimento le finestre desiderate. Inoltre è possibile selezionare solo le informazioni che si intende visualizzare. Come visibile in figura 6, le finestre a disposizione sono numerose, ma alcune sono significative solo in un determinato contesto. Ad esempio, la finestra di visualizzazione dei registri (“Register Window”) è visualizzata solo quando il Softune Workbench si trova in una sessione di debug;
Figura 6: le finestre di Softune.

Figura 6: le finestre di Softune.

  • impostazione semplificata dell’ambiente, realizzata tramite appositi tool di supporto alla configurazione. A livello di debugger, è presente un Setup Wizard che attraverso una modalità guidata consente di selezionare l’emulatore, la linea di comunicazione con la scheda e lo stato delle varie finestre. A livello di ambiente operativo per l’MCU, l’utente è agevolato dalla presenza del “CPU information file”, il quale contiene la descrizione di tutte le informazioni specifiche dei vari dispositivi, come la definizione delle porte di I/O, la dimensione della memoria RAM/ROM, gli indirizzi di partenza ecc. Vengono inoltre salvate automaticamente le impostazioni relative all’ambiente di debugging (layout delle finestre, stato dei breakpoint, mappe di memoria), recuperate poi automaticamente con la sessione successiva;
  • interfaccia di supporto per moduli di simulazione Il simulatore fornito con Softune permette anche di gestire dei moduli software esterni che implementano la simulazione di una determinata periferica o dispositivo. L’interfaccia tra il simulatore ISS ed il modulo è rappresentata da una DLL, come visibile in figura 7;
Figura 7: interfaccia per simulatori esterni.

Figura 7: interfaccia per simulatori esterni.

  • pieno supporto per il linguaggio C++. È una funzionalità limitata ai microcontrollori della famiglia FR, e permette, tra le altre cose, di fornire una visualizzazione con struttura ad albero delle classi;
  • supporto per l’accesso alla memoria flash, attraverso i tool Flash loader e Flash support. Il primo gestisce il trasferimento di file binari dall’ambiente Softune Workbench direttamente sulla memoria flash del sistema target. Il secondo tool, invece, gestisce la memoria flash quasi come fosse una normale memoria RAM: è così possibile eseguire sia il download sulla memoria flash, sia leggere e scrivere dalla memory window. Quando si scrive sulla memoria flash, i dati vengono memorizzati solo temporaneamente. Successivamente, il contenuto della memoria flash può essere sincronizzato con quello (temporaneo) del debugger; la sincronizzazione della memoria flash può poi essere eseguita sia nella direzione Flash MCU -> Debugger che in quella Debugger -> Flash MCU;
  • misura del grado di copertura del codice. I test di copertura del codice servono a esercitare il più possibile tutte le istruzioni e tutte le ramificazioni presenti al’interno del codice, al fine di renderlo più robusto ed evitare che sul campo si verifichino comportamenti inattesi dovuti a codice mai eseguito in precedenza (ovviamente, la soluzione ottimale è quella di raggiungere una copertura del codice pari al 100%). Questa funzione è disponibile con la versione high-speed del simulator debugger, e permette anche di conoscere quali indirizzi del codice non sono stati mai eseguiti. La granularità dei risultati di analisi del coverage può arrivare sino alla singola linea di codice sorgente, di istruzione a livello di codice macchina, oppure di singolo indirizzo. In figura 8 è mostrato un tipico output prodotto dalla funzione di code coverage;
Figura 8: copertura del codice.

Figura 8: copertura del codice.

  • RAM checker – questo tool (visibile in figura 9) serve a visualizzare graficamente il contenuto del monitoring address log di Softune Workbench, vale a dire la storia degli indirizzi ai quali è stato eseguito almeno un Il tempo di campionamento e l’intervallo di aggiornamento, entrambi fissi, sono pari rispettivamente a 1 e a 100 ms.
Figura 9: il RAM checker

Figura 9: il RAM checker

Il compilatore Softune C

Si tratta di un compilatore conforme allo standard ANSI/ISO per il linguaggio C, in grado di fornire un elevato livello di ottimizzazione. L’ottimizzazione viene eseguita a più livelli: general-purpose (ottimizzazione globale del codice), ottimizzazione con enfasi sulla dimensione del codice prodotto, ottimizzazione con enfasi sulla velocità di esecuzione del codice generato. È inoltre fornito il supporto per le specifiche del linguaggio esteso, vale a dire che è possibile definire direttamente in C le funzioni scritte in Assembler, le funzione di risposta agli interrupt, le funzioni di accesso all’input/output, e le funzioni intrinsiche.

Il compilatore Softune C/C++

Questo compilatore, disponibile solo per la famiglia di microcontrollori FR, supporta ben tre differenti tipi di linguaggi: C, C++, ed EC++.

  • modalità C: è la modalità conforme alle specifiche del linguaggio C standard (ANSI/ISO);
  • modalità C++: è la modalità conforme alle specifiche del linguaggio C++ standard (ANSI/ISO);
  • modalità EC++: questa modalità è un sottoinsieme delle specifiche relative al linguaggio C++ ANSI/ISO, incluse quelle espressamente riferite al mondo em-

Sono disponibili le stesse opzioni di ottimizzazione del compilatore C, come pure il supporto per le specifiche del linguaggio esteso. Inoltre, è disponibile una funzione apposita per controllare l’istanziazione dei template C++.

Tool di supporto allo sviluppo

Con riferimento ancora alla figura 2, vediamo la presenza di due strumenti di supporto allo sviluppo, il C/C++ checker ed il C/C++ analyzer.

Softune C/C++ checker

Il Softune C/C++ Checker è uno strumento che accetta in ingresso un codice sorgente scritto in linguaggio C/C++ ed evidenzia quelle linee di codice (istruzioni) dove la qualità o le prestazioni possono essere significativamente migliorate. Lo strumento offre informazioni molto efficaci per raggiungere un livello di efficienza superiore migliorando le prestazioni del codice prodotto. Lo strumento supporta tutte funzioni specifiche del compilatore C/C++ per i microcontrollori Fujitsu. In figura 10 è mostrata una tipica schermata riferita al C/C++ Checker.

Figura 10: il C/C++ checker.

Figura 10: il C/C++ checker.

Softune C/C++ analyzer

Il Softune C/C++ Analyzer visualizza la struttura di un programma sorgente scritto in linguaggio C/C++ e lo stato delle variabili utilizzate dal programma. In questo modo vengono fornite informazioni importanti per migliorare l’efficienza del programma. Più in dettaglio, le informazioni gestite dal C/C++ analyzer sono le seguenti:

  • informazioni sulle classi: diagramma di ereditarietà della classe, struttura della classe, suo utilizzo, e funzioni amiche della classe;
  • informazioni sui namespace utilizzati nel programma C/C++;
  • diagramma delle chiamate: una struttura a lista che indica le varie chiamate a funzione eseguite dal codice;
  • logic flow: un diagramma che mostra la struttura interna della funzioni;
  • informazioni statistiche su ogni funzione;
  • informazioni di cross reference relative ai dati utilizzati in una specifica funzione e ai loro attributi;
  • informazioni dettagliate sulle variabili globali utilizzate nel programma;
  • massimo utilizzo dello stack;
  • elenco delle funzioni candidate a diventare “inline”;
  • elenco delle variabili candidate ad essere dichiarate come costanti (const type qualifier).

In figura 11 è fornito un esempio di come appare il C/C++ analyzer.

Figura 11: il C/C++ analyzer.

Figura 11: il C/C++ analyzer.

Tool esterni

Sebbene il Softune possa essere utilizzato in modalità stand-alone per svolgere egregiamente l’attività di sviluppo su sistemi a microcontrollore di tipo embedded, è altresì possibile ampliare ulteriormente le sue possibilità cooperando con tool forniti da terze parti, come ad esempio il famosissimo MATLAB/Simulink. Matlab è uno strumento che fornisce una serie di funzioni e un ambiente di analisi per sviluppare efficacemente programmi di calcolo scientifico. Simulink è invece un ambiente di simulazione per la progettazione e la verifica real-time di sistemi modellati in Matlab. Installando il modulo di cooperazioe per MATLAB/Simulink permette così di eseguire il debugging con Softune Workbench. La cooperazione fra i due tool avviene nel modo seguente. Matlab genera i seguenti file partendo dal modello introdotto:

  • file contenente il codice embedded (un file sorgente C);
  • il file progetto per Softune;
  • il blocco S-Function (System Function per Simulink).

Softune Workbench genera invece un file eseguibile utilizzando il file progetto e il file embedded di cui sopra che può essere quindi oggetto di un’accurato  debugging.

Scrivi un commento

Seguici anche sul tuo Social Network preferito!

Send this to a friend