Menu

Kernigham-Ritchie

L'utilizzo di elettronica programmabile che comprende del software applicativo si sta diffondendo sempre di più, anche nelle applicazioni critiche per la sicurezza umana. Per questo motivo le norme di ultima generazione, relative alla sicurezza funzionale dei sistemi elettronici, quasi sempre comprendono delle sezioni dedicate al Software applicativo (si pensi, ad esempio, alla IEC 61508-3, oppure alla CEI EN 50128). I requisiti contenuti in queste norme solitamente sono molto esigenti, anche per le applicazioni che richiedono un SIL non elevato (1 o 2).

Itanium-smallUna richiesta che viene spesso fatta da queste norme, anche per i livelli SIL più bassi, è che il traduttore SW (il compilatore), utilizzato per la generazione del codice eseguibile, sia certificato, oppure provato con l'uso (cioè che sia documentato il suo utilizzato senza problemi in applicazioni simili e di pari SIL), oppure validato. Tuttavia capita spessissimo, in base all'importanza del progetto e della piattaforma HW target utilizzata, di non poter disporre di una tool-chain certificata, oppure provata con l'uso, pertanto l'unica soluzione percorribile è quella di procedere con la validazione in proprio del compilatore.

La validazione di un compilatore può essere una attività estremamente impegnativa che richiede profondissime competenze e che comporta la progettazione di un grandissimo numero di test; la progettazione dei test, inoltre, per poter fornire una adeguata copertura, richiede una grande esperienza specifica sul processo di compilazione relativo ad un determinato linguaggio di programmazione e una approfondita conoscenza degli standard di riferimento del linguaggio.

Queste difficoltà fanno spesso ritenere che sia impossibile validare "in proprio" un compilatore. Tuttavia, in molti casi, questa è un'impressione errata, infatti il mercato offre, almeno per i linguaggi più diffusi (ad esempio il C), degli strumenti appositamente realizzati per validare un compilatore in modo veloce ed esaustivo. All'utente sono richieste solo le competenze e l'esperienza necessarie per poter utilizzare correttamente questi strumenti che, comunque, presentano sempre un certo grado di complessità.

Negli anni recenti HINTSW - T&T Systems ha avuto l'incarico di validare tre differenti compilatori relativi al linguaggio di programmazione C:

  • Compilatore GCC in ambiente hosted (ad esempio gli ambienti con Sistema Operativo) per piattaforme Server Itanium e Workstation x86, nell'ambito di un progetto SIL 2.
  • Compilatore Altera Nios II in ambiente free-standing (embedded) per una piattaforma custom basata su processore Cyclone II, nell'ambito di un progetto SIL 4
  • Compilatore Texas Instruments cl2000 (parte della suite Code Composer Studio v4) in ambiente free-standing (embedded) per una piattaforma custom basata su processore Texas Instruments DSP TMS320, nell'ambito di un progetto SIL 4.

Per svolgere queste attività di validazione HINTSW - T&T Systems ha selezionato la suite di validazione "The Plum Hall Validation Suite for C" creata da Plum Hall Inc., una società americana leader mondiale nella produzione di suite di validazione per i linguaggi di programmazione C, C++ e, più recentemente, Java. In particolare la suite Plum Hall utilizzata da HINTSW ha due obiettivi:

  • testare i compilatori e trovarne i "bachi";
  • verificare la conformità del compilatore con lo Standard ANSI/ISO C.

Compilatori-4

Seguono, qui sotto, i dettagli relativi alle tre attività di validazione svolte.


Le nostre attività di validazione di compilatori

Validazione del compilatore GCC in ambiente hosted Linux

La validazione del compilatore GCC è stata eseguita in ambiente "hosted" Linux per due diverse piattaforme Hardware: server Itanium con sistema operativo SUSE Linux Enterprise Server 10 (ia64); Workstation Intel x86 con sistema operativo SUSE Linux Enterprise Server 10 (x86_64). Entrambe le piattaforme sono state usate in un progetto SIL 2 certificato conforme alla Norma CEI EN 50128 dall'ente di certificazione Bureau Veritas – SCIRO.

gcc lg smallObiettivo principale dei test è stato quello verificare la conformità del compilatore GCC al livello dello standard ISO / IEC 9899 scelto per l'implementazione del software applicativo; il livello dello standard scelto per il progetto è stato il livello C90 che si riferisce al ANSI C originale pubblicato nel 1990 più le successive correzioni apportate nel 1994 e 1996 e incluse nell'ammendamento AMD1 ed in Cor2.

La suite Plum Hall divide tutti i test in due grandi categorie chiamate Conformity e Testing: Conformity contiene i test strettamente necessari alla verifica della conformità del compilatore allo standard scelto; Testing contiene dei test che vanno oltre la mera verifica della conformità e servono per provare la qualità del compilatore, assegnandogli un punteggio in base ai risultati ottenuti. Nel progetto svolto da T&T Systems sono state eseguite entrambe le categorie di test sebbene non strettamente necessario, in effetti le richieste della Norma sono già interamente soddisfatte dalla prima categoria di test, perchè è quella che assicura la conformità del compilatore allo standard di riferimento.

Pioché la suite Plum Hall è distribuita come un albero di cartelle che contiene tutti gli strumenti interni necessari ai test, i sorgenti dei programmi di test e tutti gli strumenti (in particolare i makefile) indispensabili per la compilazione sul target (nel nostro caso le due piattaforme Linux), è stato necessario effettuare una personalizzazione della suite modificando alcuni files prototipo, e creando la parte target, cioè il ramo dove vengono svolti i test.

T&T Systems, per consentire una facile e veloce riesecuzione di tutti i test, ha inoltre ingegnerizzato un ambiente di validazione dedicato, che, grazie ad alcuni script (sviluppati in linguaggio Perl), consente, in modo completamente automatico, l'installazione / reinstallazione del software della suite, la sua personalizzazione, l'esecuzione, la cattura del log a video in appositi files, e la separazione degli output dai programmi test. Questo ha permesso di superare alcune scomodità di utilizzo della suite, quali ad esempio: la fase di installazione della suite, che è completamente manuale, la fase di esecuzione, che richiede l'attivazione manuale delle variabili di ambiente usate nei test, la grande frammentazione e distribuzione dei risultati dei test in quanto sono ripartiti sui vari rami dei test, ed il "log" dei test, perché nativamente è diretto solo su video.


Validazione del compilatore Altera Nios II in ambiente embedded custom

La validazione del compilatore Altera Nios II è stata eseguita in ambiente "freestanding" (embedded) per una piattaforma hardware custom basata su microprocessore Altera Cyclone II. La piattaforma è stata utilizzata in un progetto da certificare SIL 4 nell'ambito del segnalamento ferroviario.

altera-nios-II-smallCome nel caso precedente, l'obiettivo principale dei test è stato quello verificare la conformità del compilatore Altera Nios II al livello dello standard ISO / IEC 9899 scelto per l'implementazione del software applicativo. In questo caso il livello dello standard scelto è stato il livello C99 per piattaforma free-standing che si riferisce alla conformità completa del linguaggio come descritta nella Norma ISO / IEC 9899:1999.

La validazione del compilatore è stata eseguita in due fasi successive. La prima fase è consistita nell'esecuzione di tutti i test nell'ambiente di simulazione (quindi, non sul target) messo a disposizione dall'ambiente di sviluppo Nios II; la seconda fase è consistita nella riesecuzione di tutti i test di validazione del compilatore sul target finale. Si noti che per la mera validazione del compilatore sarebbe stata sufficiente la prima fase, ma nell'ottica della validazione globale del target, l'ente di certificazione ha richiesto l'esecuzione di questa seconda fase. L'esecuzione dei test di validazione del compilatore sul target ha comportato la necessità di una maggiore personalizzazione della suite di validazione Plum Hall ed ha comportato una ingegnerizzazione più complessa dell'ambiente di test. Tutte le operazioni di personalizzazione della suite sono state concordate ed effettuate in stretta collaborazione con il Dr. Thomas Plum di Plum Hall Inc.

Come accennato l'ambiente target di test è abbastanza complicato ed ha richiesto, per poter eseguire i test in tempi ragionevoli, una ingegnerizzazione non banale. L'architettura del sistema target è composto da due schede, una definita "vitale" in quanto correlata con la sicurezza (SIL 4), una seconda, non vitale, che esegue le operazioni di supporto non correlate con la sicurezza (SIL 0). Le due schede comunicano tra loro tramite un canale seriale veloce HDLC; la scheda di supporto ha una connessione LAN e monta un sistema operativo microC Linux ed un server FTP.

L'ingegnerizzazione dell'ambiente di validazione ha consentito di automatizzare i seguenti passi:

  • i test vengono compilati su computer host;
  • viene effettuato l'upload degli eseguibili sulla scheda vitale tramite la connessione JTAG ed utilizzando i tool Elf2flash eNios2-flash-programmer forniti assieme alla piattaforma di sviluppo Nios II; il primo tool converte gli eseguibili generati dal compilatore dal formato elf al formato flash; il secondo tool invece effettua l'upload ed il run su target dell'eseguibile;
  • gli eseguibili stampano, tramite la connessione HDLC, l'output diagnostico sul syslog della scheda non vitale e vengono resi facilmente identificabili aggiungendo al syslog stesso una stampa speciale che segnala l'inizio di esecuzione dei test;
  • uno script sul computer host, tramite la connessione LAN, richiede al server ftp montato sulla scheda non vitale, il file messages contenente il syslog;
  • uno script sul computer host estrae dal file messages i singoli output dei test ed effettua la valutazione dei risultati.

Validazione del compilatore Texas Instruments cl2000 in ambiente embedded custom

La validazione del compilatore Texas Instruments cl2000 è stata eseguita in ambiente "freestanding" (embedded) per una piattaforma hardware custom basata su microprocessore Texas Instruments DSP TMS320. La piattaforma è stata utilizzata in un progetto da certificare SIL 4 nell'ambito del segnalamento ferroviario.

TexasInt-c2000-smallL'obiettivo principale dei test è stato quello di verificare la conformità del compilatore Texas Instruments cl2000 al livello dello standard ISO / IEC 9899 scelto per l'implementazione del software applicativo. In questo caso il livello dello standard scelto è stato il livello C90 che si riferisce al ANSI C originale pubblicato nel 1990 più le successive correzioni apportate nel 1994 e 1996 e incluse nell'ammendamento AMD1 ed in Cor2.

Analogamente al caso precedente la validazione del compilatore è stata eseguita in ambiente simulato e sul target finale.

In questo caso l'ingegnerizzazione dell'ambiente di test sul target reale è stata un po' più semplice in quanto la scheda programmabile è connessa al computer host tramite un collegamento USB che permette la programmazione della scheda, l'esecuzione dei test e la cattura degli output degli stessi. Per questo scopo la suite Plum Hall è stata interfacciata al Debug Server fornito da Texas Instruments in modo da automatizzare, sia l'upload, sia l'esecuzione sul device del codice compilato; infine, tramite un opportuno driver fornito dalla Texas Instruments, è stato possibile gestire la comunicazione con il target, riportando l'output dei test sulla console del PC host, in modo da poterlo slavare su file, secondo quanto previsto dalla suite.

Concludendo riportiamo un'interessante discussione avvenuta tra i nostri tecnici, l'assessor del progetto e l'ente terzo di certificazione. La discussione è nata a proposito di un particolare insieme di test, denominato Cover, che fa parte dei test di qualità (categoria Testing) della suite Plum Hall. Lo scopo di questa sezione è quello di testare le espressioni C (statement) semplici e complesse formate da combinazioni arbitrarie di operatori e set di dati qualsiasi. La suite fornisce due strumenti per la generazione di espressioni: EGEN e EXIN; questi tool permettono, tramite un linguaggio di scripting, di generare espressioni relative al numero di operatori che si intende combinare e al tipo di dato che si intende utilizzare. Tali strumenti producono quindi dei file contenenti le suddette espressioni che poi dovranno essere compilate ed eseguite.

Nell'ottica di una validazione complessiva del target, anziché la validazione del solo compilatore, il cliente ha richiesto l'esecuzione su target anche di questo tipo di test. La richiesta iniziale dell'assessor, dato che le permutazioni arbitrarie di operatori ed operandi sono infinite, è stata di provare tutte le espressioni complesse ottenute da tutte le possibili permutazioni di tre operatori con tutte le tipologie di dato previste dal linguaggio C. È stato valutato che questa richiesta avrebbe comportato la produzione di 30.000.000 file contenenti in tutto circa 30.000.000.000 test. Un numero veramente enorme se si pensa che i test di conformità, appartenenti alla categoria Conformity, sono "solo" 17.000.

Poiché anche un numero così elevato di test non è comunque in grado di testare ogni possibile statement C, e poiché i tempi di esecuzione su target di una simile quantità di test erano incompatibili con il progetto, è stato invece proposto di eseguire un set limitato di test, denominato EXPRTEST, appositamente progettato da Plum Hall Inc. per provare la capacità del compilatore di tradurre correttamente espressioni C complesse. Questa set si basa su un numero di test decisamente inferiore, circa 12.500 test, ma ponderatamente selezionato da Plum Hall in base alla propria esperienza ed in base a criteri statistici; molti di questi test, oltretutto, utilizzano espressioni C assai più complicate di una combinazione di tre operatori (nel set sono comprese statement che contengono fino a cinque operatori).

L'oggetto della discussione è stato quindi circa quale delle due opzioni offrisse la "copertura" di test migliore. Alla fine, anche supportati dal parere degli esperti di Plum Hall Inc., si è convenuto che la proposta dei nostri tecnici fosse la più adeguata, in quanto basata su criteri di copertura statistica e di esperienza nettamente migliori.

Compilatori-3

Contatti

Telefono: +39 02.2897.0440; +39 02.2871.305
Fax: +39 02.9475.8909

Info generali: Questo indirizzo email è protetto dagli spambots. È necessario abilitare JavaScript per vederlo.

Info commerciali: Questo indirizzo email è protetto dagli spambots. È necessario abilitare JavaScript per vederlo.
Rif. commerciale: +39 340.3466.704

Sede legale: I-20129 Milano, via Plinio 1
Uffici: I-20127 Milano, via Natale Battaglia, 27

Più informazioni ...

Settori di attività

Settori

HINTSW - T&T Systems opera da oltre un decennio nell'ambito della sicurezza funzionale dei principali settori industriali e dei trasporti pubblici.

Più informazioni ...

Consulenza

consulting

La divisione HINTSW fornisce consulenze altamente professionali e specializzate per lo sviluppo di sistemi elettronici programmabili utilizzati in applicazioni critiche per la sicurezza umana.

Più informazioni ...

Certificazione di sicurezza

certificazione

La certificazione di sicurezza di un sistema o di un apparato è spesso una sfida ardua da vincere, HINTSW fornisce tutto il supporto e il know-how necessari per poterla vincere brillantemente.

Più informazioni ...

Formazione

formazione

HINTSW, attingendo dalle proprie competenze, propone una vasta gamma di servizi nell'ambito della formazione professionale.

Più informazioni ...

Go to top