EMB 91

EMBEDDED 91 • FEBBRAIO • 2024 64 SOFTWARE | COMPILER LIBRARIES Le funzioni della libreria C vengono descritte nella documentazione dell’utente, vengono richiamate dal software applicativo dell’utente e sono integrate nel software automotive allo stesso modo di altri com- ponenti software. Perciò risulta “ovvio” che si dovrà applicare un metodo per la qualifica dei componenti software quando si esegue la qualifica della libreria C. Tuttavia, quando ci si immerge nei dettagli, le cose si fanno intricate. Ecco qui di seguito alcuni esempi. Le funzioni che implementano operazioni matemati- che in virgola mobile sono estremamente ottimizzate in via generale e usano risorse derivanti da una libre- ria di runtime in virgola mobile. Le librerie di runti- me sono state qualificate nel contesto di una qualifica dello strumento, ma ora l’uso previsto è cambiato, e si applicano i criteri di qualifica dei componenti softwa- re a quelle funzioni di runtime usate dalla libreria C. Le funzioni della libreria C dichiarate nel file di in- testazione “fenv.h” consentono l’accesso all’ambien- te in virgola mobile. L’ambiente in virgola mobile fa parte dell’ambiente di runtime del compilatore e la sua configurazione influenza il comportamento del codice generato dal compilatore e delle funzioni di runtime in virgola mobile. Così per queste funzioni si può discutere se si dovrebbero applicare i criteri di qualifica dello strumento o di qualifica del compo- nente software oppure entrambi. Si può discutere anche sul livello ASIL per cui è ade- guata una specifica funzione della libreria C. Alcune funzioni della libreria C non sono intrinsecamente si- cure, a causa delle debolezze nelle versioni preceden- ti della norma ISO C e della volontà di mantenere la norma retrocompatibile. Per correggere gli errori del passato la commissione ISO C ha introdotto l’Allega- to K che contiene varianti (più) sicure delle funzioni non sicure. In TASKING usiamo la seguente argo- mentazione per la qualifica delle funzioni non sicure: se una funzione viene sviluppata in conformità ai re- quisiti ASIL x, allora la funzione viene qualificata per l’uso in ASIL x a condizione che l’utente applichi le linee guida fornite nel manuale sulla sicurezza. Oltre a ciò, TASKING aggiunge la variante sicura alla li- breria C e consiglia di usare quella funzione. La libreria C contiene anche funzioni generalmente non utilizzate nel software di produzione, ma usate di frequente durante lo sviluppo del software a scopo di registrazione e debug, di cui l’esempio più tipico è la funzione printf. Una funzione di questo tipo do- vrebbe far parte di una libreria C qualificata o no? In TASKING usiamo la seguente argomentazione: per non violare il software applicativo esistente quando si passa da una libreria non qualificata a una quali- ficata, quest’ultima dovrebbe fornire lo stesso set di funzioni, dove ogni funzione è qualificata come ido- nea per un uso QM, ASIL A, B, C, o D. Il codice di startup Il codice di startup del set di strumenti di compila- zione può essere fornito in più modalità, come parte della libreria C, come libreria separata, o come un set di file sorgente che devono essere inclusi nel progetto dell’utente. In tutti i casi si tratta di un componente software integrato nel software automotive e pertan- to si dovrebbero applicare le regole per la qualifica del componente software. Lo scopo del codice di startup è quello di inizializzare l’ambiente di runtime C. Il codice di startup inizializ- za vari registri MCU usando simboli del linker creati dal compilatore/linker e la cui esistenza e i cui valori dipendono dal codice sorgente dell’utente. Oltretutto, il codice di startup inizializza la random-access me- mory (RAM) usando una struttura di dati chiamata “tabella di copia” creata dal compilatore/linker e il cui contenuto dipende dal codice sorgente dell’uten- te. Il confine fra ciò che fa parte della qualifica dello strumento e ciò che invece fa parte della qualifica del componente software è confuso, generalmente la co- struzione dei simboli del linker e delle strutture dei dati è considerata parte della qualifica del compila- tore e l’uso dei simboli e dei dati ritenuto parte della qualifica del componente software. In definitiva, la qualifica di una libreria C in confor- mità alla norma ISO 26262 è un processo complesso e impegnativo, in quanto richiede una profonda cono- scenza della norma sulla functional safety, delle spe- cifiche della libreria C ISO e del design complessivo del set di strumenti di compilazione. È richiesta una profonda attenzione ai dettagli al fine di supervisio- nare le dipendenze fra tutti i componenti del set di strumenti di compilazione. Il livello di dettaglio ri- chiesto riguardo ai requisiti di sicurezza e funzionali, il design e le interfacce fra i componenti è noto solo al produttore dello strumento. Le norme sulla functio- nal safety più severe del settore dell’aviazione, per- tanto, richiedono che le attività di qualifica analizzate debbano essere eseguite sempre dal produttore dello strumento.

RkJQdWJsaXNoZXIy Mzg4NjYz