Forum: Mikrocontroller und Digitale Elektronik ARM 926EJ-S MMU Test nach SIL


von Sascha (Gast)


Lesenswert?

Hallo, ich entwickle momentan auf einem ARM9 ARM926EJ-S Software, die 
für SIL 2 Zulassung bekommen soll. Nun ist es ja nötig alle relevanten 
Speicher, Core und Hardware auch auf Fehler zu überprüfen.
Das meiste ist auch schon sehr gut gelöst, nur mit der MMU mache ich mir 
gerade noch einige Gedanken.
Die MMU leuft auch sehr gut und auf die Performance der MMU möchte ich 
nicht verzichten, obwohl ich kein Multitasking (Betriebssystem) benutze.

Jetzt meine Fragen:

- Wie kann ich den ICache Speicher der MMU Testen?
- Gibt es eine Möglichkeit direkt zu lesen oder zu schreiben?

Mit den MMU Debug und Test register kann ich die TLB nachprüfen, das ist 
klar. Den DCache Speicher kann man leichter testen das geht schon recht 
gut.

Um hilfreiche Infos bin ich sehr dankbar,
Gruß Sascha

von Microman (Gast)


Lesenswert?

Hallo Sascha,

was soll denn der Funktionstest am Ende aussagen? Ja, der ICache 
funktioniert generell oder aber der komplette Speicher vom ICache z.B. 
16kB funktioniert einwandfrei?

Gruß Microman

von Sascha (Gast)


Lesenswert?

Hallo Microman,
der Test muss sicherstellen, das jede Speicherstelle in dem 16K Cache 
funktionstüchtig ist. Das Genaue Bit oder wo der Fehler genau ist, ist 
nicht wichtig. Ist ja etwas mehr wie nur Speicher beteiligt.

Es geht darum, wenn ich den I-Cache verwende und er hat einen Fehler, 
wird ein Befehl nicht richtig ausgeführt und mein Programm hat ein 
anderes Verhalten. Somit würde bei einer Überwachungselektronik unter 
Umständen ein Menschenleben gefährdet, weil ein Alarm oder ein Notaus 
usw. nicht kommt.

Wird der Fehler aber festgestellt, kann die Steuerung in einen 
definierten Zustand gebracht werden (Störung).

Also muss als Testergebniss nur herauskommen, dass der I-Cache 
einwandfrei funktioniert.

Gruß Sascha

von ARMer (Gast)


Lesenswert?


von 123 (Gast)


Lesenswert?

darf man fragen, welcher baustein?

ggf kann man den cach auch als sram ansprechen, wenn dieser nicht für 
den cach verwendet wird. (hab das mal irgendwo so gesehen)

von Sascha (Gast)


Lesenswert?

Der Baustein ist ein Atmel AT91SAM9G10.
Aber als SRAM zum direkten anspechen würde nur die hälfte des Tests 
erbracht.
Auserdem kann ich mir das von der Struktur des Speichers nicht 
vorstellen.

Gruß Sascha

von Sascha (Gast)


Lesenswert?

Hallo,
so habe gerade den Link mal nachgelesen, ich vermute nur es handelt sich 
hier um einen 920er Kern und ich habe einen 926EJ-S. Die MMU ist leider 
nicht die gleiche. Aber dort würde es ohne Probleme gehen.

Gruß Sascha

von Stranger (Gast)


Lesenswert?

Hallo Sascha,

mich würde sehr interessieren, warum Du unbedingt die Caches so intensiv 
testen mußt? Was für einen Anspruch an den Sicherheitslevel besteht 
denn, bzw. welcher soll am Ende erreicht werden?

Gruß Stranger

von Sascha (Gast)


Lesenswert?

Hallo Stranger,
also Cache ist auch ein Speicher durch den Fehler entstehen können. Oder 
man benutzt ihn nicht. Dann bleibt es nur noch an den BUS Strukturen 
intern hängen, die werden aber bei einem normalen Memory Test sowieso 
getestet.
Also der Cache kann eine sehr komplexe Sache sein. Bin da nun auch schon 
sehr weit gekommen. Uff ist aber wenn man ins Detail geht etwas 
aufwendiger.

So, mein Programm muss Menschenleben retten, dabei brauche ich auch noch 
einiges an Rechenleistung alleine für die Grafik (SVGA). Keine Sorge ich 
mache keine automotive Entwicklung. Erreicht soll SIL 2 Anforderungen, 
die auch real eingeschätzt zu schaffen sind.

Das Programm läuft mit meinen optimierten Cache Einstellungen ca. 23 mal 
schneller als ohne Verwendung des Cache.
Aber der I-Cache,D-Cache und Write Buffer muss dann natürlich fehlerfrei 
sein. Woher willst du ohne zu testen wissen, ob dein Baustein 100% O.K. 
ist?
Bitte kein Gedanke daran zu verschwenden, "habe ich doch erst neu 
gekauft".

Dann kommt hinzu das mein Prozessor Strahlungen ausgesetzt ist und auch 
einen Schaden nehmen kann. Also muss auch im fortlaufenden Betrieb 
periodisch getestet werden.
Auche alle Register, die im Prozessor die Funktion des Programms 
beeinträchtigen, müssen permanent überbrüft werden.

Gruß Sascha

von 6A66 (Gast)


Lesenswert?

Hallo Sascha,

einen I-cache zyklisch zu testen ob er noch fehlerfrei ist um SIL2 zu 
erreichen stelle ich mir äußerst spannend vor da ja die Instruktionen 
zum test nicht gecached werden dürfen (könnten ja das Testergebnis 
selbst verfälschen). Dankbar wäre es, den Test in eine Phase des Ablaufs 
zu legen in dem der cache nicht gebraucht wird, diesen dann abzuschalten 
da sonst Dein Test gecached wird. Und jetzt brauchst Du einen 
intelligenten Algorithmus um einige wenige Zellen trotzden zugreifen zu 
können und diese zu testen. Danach Cache wieder an, Programm normal 
ausführen bis zum nächsten Mal. Das nächste Mal dann wieder ein Stück, 
.. Sowas wie Galpat auf den Speicher in kleinen Schritten nur auf den 
I-Cache. Kniffelig ist nur wie Du die Pattern in den I-Cache 
reinkriegst, aber vielleicht gibt es da ein Hintertürchen zum Cache?

rgds

von Marcus H. (mharnisch) Benutzerseite


Lesenswert?

Sascha schrieb:
> also Cache ist auch ein Speicher durch den Fehler entstehen können. Oder
> man benutzt ihn nicht. Dann bleibt es nur noch an den BUS Strukturen
> intern hängen, die werden aber bei einem normalen Memory Test sowieso
> getestet.

Ist es denn wichtig zu unterscheiden, ob der Fehler im Cache oder dem 
"richtigen" Speicher entstanden ist? Ich nehme an, Du bist bereits auf 
das cache lockdown register gestoßen (cp15, c9) damit Du die Testdaten 
im Cache auch zuverlässig wiederfindest.

> Also muss auch im fortlaufenden Betrieb periodisch getestet werden.
> Auche alle Register, die im Prozessor die Funktion des Programms
> beeinträchtigen, müssen permanent überbrüft werden.

Dynamische Tests der CPU Interna sind schwierig zu beurteilen. Jeder 
Einzeltest wird bestenfalls wahrscheinlich nur alle soundsoviel 
Millisekunden durchgeführt. Sollte in der Zwischenzeit ein Fehler, sagen 
wir mal in einem Register aufgetreten sein, dann kannst Du davon 
ausgehen, dass lange vor der möglichen Erkennung das Programm aufgrund 
des Fehlers bereits irgendwohingelaufen ist, wo Programme nun mal zum 
Sterben hingehen.

von Sascha (Gast)


Lesenswert?

Hallo Marcus und 6A66,
ja ich gebe euch recht, das ist in der Tad nicht ganz einfach, aber 
nehmen wir mal folgendes an: Ich schreibe ein Programm das von A nach B 
ableuft und mir in den Registern Ergebnisse bringt. Das Programm ist so 
groß das es genau in den Cache passt. Es greift auf keine Daten zu nur 
auf Literale.
Das Programm leuft einmal mit und einmal ohne Cache ab. Das Ergebniss 
ist sozusagen bekannt. Nun lässt sich das Ergebniss prüfen.
(wird natürlich noch etwas aufwendiger gemacht...)

Der Daten Cache ist einfacher zu testen, in dem man so groß wie der 
Daten Cache ist einfach über Read Modify Write einen Memory Test 
ablaufen lässt.
Auch der Galpad muss nicht sein oder Walking Bit, es gibt auch 
einfachere Testmethoden, die auch sicher genug sind.
Invalidiert man nun den Cache, so darf keine Veränderung im RAM sein, 
und nach Test und Clean muss der Richtige Inhalt ins RAM übertragen 
werden.
Auch die TLB Flags muss man dazu lesen und überprüfen.

Auch die TLB muss natürlich bezüglich der Speicherzuordnung überprüft 
werden.

Lockdown ist ein eigener Bereich im Cache, den ich nicht benutze und 
somit nur gestreift prüfe. So viel ich weiß ist der Lockdown Bereich 
aber nur dazu da um permanent Code oder Daten für schnelle repetirende 
Aufrufe bereit zu stellen.

Mein Problem mit dem Memory Test ist nur, ich habe 32Mbyte 
Arbeitsspeicher in meinem Chip zu 4 Bänke (SDRAM 32Bit) da wirds mit 
einem Galpad oder Walking Bit schon Zeitaufwendig.

So viel ich weiß sind aber keine speziellen Memory Tests für SIL 2 
vorgeschrieben. Einige sind hingegen empfholen und es ist auch immer von 
der Struktur des Speichers abhängig. Also mechanischer Aufbau Row/Column 
usw. Ich habe natürlich auch gelesen das SRAM bevorugt ist, aber SDRAM 
ist prinzipiell nicht verboten, man muss nur die Refresh Zeiten straffer 
einstellen. Ist aber alles gar kein Problem.

Das Problem, dass der Prozessor irgendwo hinleuft ist bei einem ARM9 
System, wenn es noch halbwegs geht abfangbar. Gerade deshalb auch die 
MMU.

Das System hat auch noch einen zweiten Prozessor, der die Taskabfolge 
des ARM9 überprüft. Ein Worst Case Zenario muss definiert sein, dass ist 
klar.

Gruß Sascha

von Marcus H. (mharnisch) Benutzerseite


Lesenswert?

Sascha schrieb:
> Lockdown ist ein eigener Bereich im Cache, den ich nicht benutze und
> somit nur gestreift prüfe. So viel ich weiß ist der Lockdown Bereich
> aber nur dazu da um permanent Code oder Daten für schnelle repetirende
> Aufrufe bereit zu stellen.

Nein, ich glaube das verwechselst Du mit den lock-down entries des TLB.
Beim Cache verhindert man damit allocation in bestimten ways, was Dir 
dabei helfen könnte einzukreisen, wo im Cache die Information liegt. 
Womit wir schon beim nächsten Problem wären: Ohne Kenntnis der 
Implementierungsdetails ist es schwierig überhaupt einen wirksamen Test 
zu erstellen. Daher arbeiten Firmen bei denen es tatsächlich drauf 
ankommt oft mit dem Prozessorhersteller zusammen.

> Das Problem, dass der Prozessor irgendwo hinleuft ist bei einem ARM9
> System, wenn es noch halbwegs geht abfangbar. Gerade deshalb auch die
> MMU.

Hmm, und den Code der das dann abfängt hast Du ausschließlich unter 
Verwendung der noch funktionierenden Register geschrieben?

> Das System hat auch noch einen zweiten Prozessor, der die Taskabfolge
> des ARM9 überprüft.

Wenn man den Prozessor extern überwacht, die Funktion dieser Überwachung 
nachgewiesen ist, bieten (vermeintlich) ausgefeilte Selbstests der CPU 
zur Laufzeit meiner Meinung keinen Mehrwert.
Insbesondere vermutlich häufigeren, sporadischen Fehler (Strahlung) 
lassen sich damit nicht aufdecken.

>  Also mechanischer Aufbau Row/Column usw.

Also in den 70ern mag es vielleicht noch einen direkten Zusammenhang 
zwischen Adresse und Ort der Speicherzelle gegeben haben, aber 
heutzutage darfst Du nicht davon ausgehen.

von Sascha (Gast)


Lesenswert?

Hallo Marcus,
danke deine Antwort bringt mich ein Stück nach vorne.
In der Tat muss ich zugeben, dass ich vermutlich das mit den TLBs noch 
nicht ganz verstanden habe. Aber die Doku von ARM ist nicht besonders 
hilfreich, oder wo gibts mehr Infos?
Bitte die MMU aber nicht mit der des ARM920 verwechseln. Diese ist 
einfacher in dem Punkt.

Das mit dem SDRAM Row/Column ist sicherlich eine gute Frage, ob es noch 
reale Angaben von den Herstellern gibt.
Wie dem, das ist auch momentan das etwas kleinere Problem.

Die zweite CPU überprüft keine Laufzeiten, das ist natürlich unsinnig 
bei dem Speed was der ARM9 hat.
Also egal was für ein Code beim Abflug des ARM9 irgendwo steht, er 
bringt keine richtige Sequenz mehr zum zeiten Prozessor, somit kann das 
System in einen definierten Zustand übergehen. Da sehe ich auch einmal 
das kleinere Problem drin.


Gruß Sascha

Literatur ???

von Marcus H. (mharnisch) Benutzerseite


Lesenswert?

Sascha schrieb:
> In der Tat muss ich zugeben, dass ich vermutlich das mit den TLBs noch
> nicht ganz verstanden habe.

Die TLBs speichern page translations, die ja sonst recht viel Zeit in 
Anspruch nehmen können. Bei kritischen pages (ISR, vector table) kann 
man den Vorgang dadurch deterministischer gestalten, dass man einen der 
lock-down entries selektiert, und dann die nächste translation dort 
gespeichert wird bis der selbe entry erneut selektiert wird.

> Die zweite CPU überprüft keine Laufzeiten, das ist natürlich unsinnig
> bei dem Speed was der ARM9 hat.

Ich meinte das auch gar nicht, sondern datenerhaltende Tests zur 
Laufzeit (im Gegensatz zu start-up Tests, die den Systemzustand im 
Allgemeinen beliebig umpflügen können).

> Also egal was für ein Code beim Abflug des ARM9 irgendwo steht, er
> bringt keine richtige Sequenz mehr zum zeiten Prozessor, somit kann das
> System in einen definierten Zustand übergehen. Da sehe ich auch einmal
> das kleinere Problem drin.

Genau.

von 6A66 (Gast)


Lesenswert?

Sascha schrieb:
> ja ich gebe euch recht, das ist in der Tad nicht ganz einfach, aber
> nehmen wir mal folgendes an: Ich schreibe ein Programm das von A nach B
> ableuft und mir in den Registern Ergebnisse bringt. Das Programm ist so
> groß das es genau in den Cache passt. Es greift auf keine Daten zu nur
> auf Literale.
> Das Programm leuft einmal mit und einmal ohne Cache ab. Das Ergebniss
> ist sozusagen bekannt. Nun lässt sich das Ergebniss prüfen.
> (wird natürlich noch etwas aufwendiger gemacht...)

Hallo Sascha,

damit ist die Funktion des Caches noch nicht geprüft. Wie stellst Du 
fest, ob nicht durch mehrere unabhängig voneinander existierende Fehler 
das Literal falsch geladen wird und oder der Prozessor eine Sprung an's 
Ende macht und dann "Fertig" signalisiert? Ich denke dass einzig die 
Möglichkeit besteht, mit einem Cache-externen Test einzelne Zellen im 
rollierenden Verfahren zu testen - also ein Speichertest. Schwierig wird 
des auf den Cache zu kommen. Und der test muss ja nicht zwangsläufig in 
1s durch sein (Siehe Speichertests). Was sagt eigentlich die 
zertifizierende Behörde (TÜV?) dazu, haben die Vorschläge?

rgds

von Sascha (Gast)


Lesenswert?

Hallo,
ja was sagt der TÜV dazu? Das ist sowieso das nächste Problem.
Eine SIL 2 ist auch wie CE eine Hersteller Selbsterklärung.
Ich will damit jetzt aber auf gar keinen Fall sagen, dass ich 
irgendetwas vernachlässigen will. Natürlich kann man eine Zertifizierung 
machen und dadurch wird es auch Sinnig. Bei Atex wird auch SIL2 als 
voraussetzung gebraucht und muss von der BAM abgenommen werden.
Kommt halt immer darauf an, in Welche Bereiche man mit der Zulassung 
rein will. Eigentlich brauche ich im Moment keine SIL 2 für mein 
Produkt, habe aber schon gehört es könnte verlangt werden.

So aber nun zurück zur Technik. Hat jemand eine Idee wie man den I-Cache 
testen könnte? Es geht mehr darum wie lese ich die Daten aus dem I-Cache 
aus?

Gruß Sascha

PS. mein core Test geht schon und ich habe einige Fehler bei Keil und 
IAR im Simulator gefunden. Die Compiler Software ist weit aus mit mehr 
Fehler behaftet als mir lieb ist. Zum Glück programmiere ich die ernsten 
Dinge mit Assembler.
Gibt es Zertifizierte Software Tools ???
Sind die dann auch Fehlerfrei ???

von Marcus H. (mharnisch) Benutzerseite


Lesenswert?

Sascha schrieb:
> Eigentlich brauche ich im Moment keine SIL 2 für mein
> Produkt, habe aber schon gehört es könnte verlangt werden.

Kläre das zuerst. Vermeide die deutsche Ingenieurstugend des 
over-engineering mit scheinbar perfekten Produkten die es zu spät oder 
gar nicht auf den Markt schaffen.

> PS. mein core Test geht schon und ich habe einige Fehler bei Keil und
> IAR im Simulator gefunden. Die Compiler Software ist weit aus mit mehr
> Fehler behaftet als mir lieb ist. Zum Glück programmiere ich die ernsten
> Dinge mit Assembler.

Wie hast Du die Fehler nachgewiesen? Bist Du sicher, dass es sich nicht 
um eine mögliche Fehlinterpretation des C Standards, bzw. des ARM ABI 
handelt? Davon abgesehen enthält jede Software Fehler. Auch Deine.

> Gibt es Zertifizierte Software Tools ???

Ja.

> Sind die dann auch Fehlerfrei ???

Das ist nicht Dein Ernst, oder?

von Sascha (Gast)


Lesenswert?

Hallo Marcus,
das mit dem C können wir definitiv ausklammern, da ich alle low level 
Routinen bis jetzt nur in Assembler schreibe. Würde in C auch gar keinen 
Sinn machen. Würde eh nur die C Anweisung ASM überall stehen.....

Und der Code muss zur Kontrolle vor und zurück übersetzt werden können, 
so steht das bei SIL 2. Also was ist dann einfacher C oder Assembler?
Aber bitte keine Grundsatzdiskusion über C oder Assembler das kann ich 
nicht mehr hören. Ich programmiere den ARM9 in Assembler im Schlaf, ist 
doch ein sehr einfacher und super durchdachter Befehlsatz.
Habe meine ganze Grafik GUI bis hin zu Bresenham Linie,Kreis,Fontausgabe 
und Bildausgabe alles super schnell in Assembler programmiert.
Wobei ich eigentlich eher von der CISC Schiene komme, als von der RISC.

Also z.B. zu einem Fehler des Simulator bei IAR QDADD und QDSUB stimmt 
das Ergebnis nicht wenn die Quelle negativ in Sättigung ist und man 
addiert man eine kleine positive Zahl drauf. Bei QDSUB ist das in 
entsprechender Richtung auch so.

Gruß Sascha

von Marcus H. (mharnisch) Benutzerseite


Lesenswert?

Sascha schrieb:
> [...]Grundsatzdiskussion[...]

Du hast geschrieben, dass Du Fehler in der "Compiler Software" gefunden 
hättest. Daher meine Frage. Andererseits ist mir schon aufgefallen, dass 
nicht ganz klar formuliert war, ob Du einen Fehler im Compiler oder dem 
Simulator vermutest.

> Also z.B. zu einem Fehler des Simulator bei IAR QDADD und QDSUB stimmt
> das Ergebnis nicht wenn die Quelle negativ in Sättigung ist und man
> addiert man eine kleine positive Zahl drauf. Bei QDSUB ist das in
> entsprechender Richtung auch so.

Reine Neugier: Du hast das mit dem "echten" Prozessor verglichen?

--
Marcus

von Sascha (Gast)


Lesenswert?

Hallo Marcus,
ich habe den Coretest auf dem echten Prozessor geschrieben, und wollte 
die Routine nur geschwind wegen einer CRC32 selbstüberprüfung auf dem 
Simulator testen dann kam das zum Vorschein. Ich war auch etwas 
verwundert ist aber so. Ich wundere mich da aber schon lange nicht mehr 
wirklich. Ich melde auch keine Fehler mehr, denn das entgegenkommen war 
all die Jahre super mittelmäßig. Es gibt da noch viel brutalere Fehler, 
die ich aber hier im Forum nicht rauslasse. Sonst könnten mir noch 
juristische Schritte drohen.
Wenn z.B. eine Firma XXX ein automotive Produkt damit entwickelt und die 
Floating Point Routine hat einen Fehler ist das echt schockierend. Auf 
der Messe habe ich dieses Problem angesprochen und bin dabei noch 
angeraunzt worden. Was soll ich da noch dazu sagen, man passt nicht ins 
Bild. Wer unbequem ist wird Heute aus dem System entfernt oder 
ignoriert. Deshalb mache ich meine Soße nur noch für mich alleine.

Gruß Sascha

von 6A66 (Gast)


Lesenswert?

Sascha schrieb:
> vor und zurück übersetzt werden können,
> so steht das bei SIL 2.

Hallo Sascha,

was meinst Du damit?

rgds

von Sascha (Gast)


Lesenswert?

Hallo 6A66,
ganz einfach DIN EN 61508-1 bis -7 oder genauer DIN EN 61508-3 der 
Softwareteil lesen. Unter anderem heißt es, die Tools zur Generierung 
des Codes müssen überprüft werden. D.H. es muss jeder Code der erzeugt 
wird auch rückwärts übersetzt werden (Kontrolliert werden) um sicher zu 
stellen, dass das was man haben will (an Code) auch dem entspricht was 
man programmiert hat. Es genügt nicht den Compiler,Assembler und Linker 
zu evaluieren, da die Kombination von aufeinandertreffenden Opcodes 
nicht vorhersehbar ist.
Dem kann ich nur zustimmen, wenn man bedenkt, was manche Produkte 
(Compiler usw.) durch ihre optimierungsphase alles verfälschen.

Was natürlich noch besser ist man arbeitet mit zwei verschiedenen Tools.
Z.B. GNU,Keil,IAR usw. man muss natürlich aufpassen das kein Tool vom 
anderen übernommen/abgeleitet oder weiterentwickelt wurde, sonst können 
ähnliche Fehler enthalten sein.

Gruß Sascha

von 6A66 (Gast)


Lesenswert?

Sascha schrieb:
> die Tools zur Generierung
> des Codes müssen überprüft werden. D.H. es muss jeder Code der erzeugt
> wird auch rückwärts übersetzt werden (Kontrolliert werden) um sicher zu
> stellen, dass das was man haben will (an Code) auch dem entspricht was
> man programmiert hat. Es genügt nicht den Compiler,Assembler und Linker
> zu evaluieren, da die Kombination von aufeinandertreffenden Opcodes
> nicht vorhersehbar ist.

Hallo Sascha,

das würde ich aber mit den zertifizierenden Stellen mal diskutieren! Bei 
einem Code von 128kB in C müssten 128kB Op-Code von Hand zu Assembler 
und C zurückinterpretiert werden und dann der Erfolg verifiziert werden? 
Das ist nach meinem dafürhalten NICHT die Intention der 61508! Dafür 
sollte es zertifizierte Compiler und Assembler geben!

rgds

von 6A66 (Gast)


Lesenswert?

Sascha schrieb:
> die Tools zur Generierung
> des Codes müssen überprüft werden.

Da hast Du recht. Aber das kann auch durch den Hersteller der Werkzeuge 
geschehen. Und du musst nicht das Ergebnis der Werkzeuge sondern die 
Werkzeuge selbst prüfen.

rgds

von maveric00 (Gast)


Lesenswert?

Hallo,

abgesehen davon gibt es auch andere Methoden als das Rückübersetzen, um 
das Ergebnis der Toolkette zu validieren. Richtig angesetzt fällt dann 
der Compiler und Linker häufig in die nicht zu qualifizierenden 
Bereiche. Ich habe schon Beispiele gesehen, bei denen aus einer 
Toolkette mit 40 verschiedenen Tools nur zwei als kritisch angesehen 
wurden. Und das waren Tools zum Verwalten von Requirements und zum 
Validieren der Testergebnisse.

Hinweise zur Toolqualifikation können auch die von der 61508 
abgeleiteten Fachnormen geben z.B. die ISO 26262 (Automotive) oder die 
DO-178C (Luftfahrt).

Zum ursprünglichen Thema: Hast Du den Hersteller Deines µC mal befragt, 
ob es schon fertige Ebene-3-Bibliotheken gibt? Denn das Problem, was Dir 
gerade in Form des I-Cache begegenet, gibt es eine Ebene tiefer noch zu 
Hauf in den Prozessoren: Pipelines, Out-of-Order-Execution, Branch 
Predictions,... die alle dafür sorgen (so sie einen Fehler enthalten), 
dass Dein Ebene-2-Code eventuell nicht mehr so funktioniert, wie 
erwartet.

So richtig beherrschen kann man das entweder nur mit Hilfe des 
µC-Suppliers, oder indem man so viele der laufzeitveränderlichen 
Elemente wie möglich abschaltet (Caches, MMU,...) und dann die 
Ebene-2-Software mit Testdatensätzen als Instruction-Set-Test 
durchrechnen lässt.

Allerdings kommt man damit auch in Bereiche, in denen normalerweise 
redundante Systeme eingesetzt werden. Apropos redundant: Wie stellst Du 
sicher, dass bei einem falsch arbeitenden µC trotzdem immer der sichere 
Zustand angesteuert werden kann? Watchdog oder kleiner Zweit-µC?

Ausserdem erweckt es den Anschein, als ob Du zwar Teile der 61508 
verwendest, um Dein Produkt zu designen, Du allerdings nicht die 61508 
vollständig umgesetzt hast. Als erstes wird nach der Item-Definition 
normalerweise eine Gefahren- und Risikoanalyse für das Zielsystem 
durchgeführt, und daraus dann der maximale SIL bestimmt, nach dem 
entwickelt werden muss. Damit entfällt dann in der Regel das "...habe 
aber schon gehört es könnte verlangt werden".

Ebenso scheinst Du noch nicht ganz sicher in der Interpretation der 
61508 zu sein - diese fordert aber, dass die Mitarbeiter entsprechend 
ihrer Aufgaben kompetent sind (und entsprechend weitergebildet werden). 
Ebenso muss ein entsprechender Sicherheitslebenszyklus aufgesetzt werden 
(siehe Teil 1 der Norm), inkl. unabhängiger Prüfung der erarbeiteten 
Ergebnisse (soviel zur Selbst-Zertifizierung). Ohne dass jedoch die 
ganze Norm abgearbeitet wurde, ist das System nicht IEC61508-konform und 
Du stehst ggf. mit einem Bein im Gefängnis, wenn Du die Verantwortung 
dafür übernimmst.

Insofern kann ich nur empfehlen, mit dem (oder einem möglichen 
zukünftigen) Auftraggeber die Anforderungen durchzusprechen und basieren 
darauf (auch mit den Zulieferern der Teile und Tools) die notwendigen 
Maßnahmen festzulegen (und Disassemblieren gehört dann ziemlich sicher 
nicht dazu...)

Schöne Grüße,
Martin

von Sascha (Gast)


Lesenswert?

Hallo Martin,
Ich habe alle Teile der DIN gelesenen, habe aber viele Anwendungen für 
das Gerät. Muss aber alles einbeziehen, damit die Hardwarebasis auch für 
eine SIL 2 Entwicklung hinreicht. Das alles hier im Vorum geschwind zu 
erklären würde den Rahmen sprengen. Ich arbeite schon ca. 16 Jahre in 
dieser Branche und kenne auch Produkte für SIL 1 und SIL 2. Da leider 
nicht nur mein Steuergerät in die Bewertung der gesammten Anlage 
eingeht, ist es unheimlich komplex. Eine SIL 2 wird meistens nicht 
verlangt, weil die Sicherheit an anderer Stelle des Systems erzeugt 
wird. Nur geht meine Weiterentwicklung die kommenden Jahre Richtung ATEX 
mit BAM Zulassung, und da ist SIL 2 verlangt. Ich werde mich in der Tat 
nach einem Berater umschauen müssen, der die SIL2 Geschichte begleitet.
Gruß Sascha

von 6A66 (Gast)


Lesenswert?

Sascha schrieb:
> Hallo Martin,
> Ich habe alle Teile der DIN gelesenen, habe aber viele Anwendungen für
> das Gerät. Muss aber alles einbeziehen, damit die Hardwarebasis auch für
> eine SIL 2 Entwicklung hinreicht. Das alles hier im Vorum geschwind zu
> erklären würde den Rahmen sprengen. Ich arbeite schon ca. 16 Jahre in
> dieser Branche und kenne auch Produkte für SIL 1 und SIL 2. Da leider
> nicht nur mein Steuergerät in die Bewertung der gesammten Anlage
> eingeht, ist es unheimlich komplex. Eine SIL 2 wird meistens nicht
> verlangt, weil die Sicherheit an anderer Stelle des Systems erzeugt
> wird. Nur geht meine Weiterentwicklung die kommenden Jahre Richtung ATEX
> mit BAM Zulassung, und da ist SIL 2 verlangt. Ich werde mich in der Tat
> nach einem Berater umschauen müssen, der die SIL2 Geschichte begleitet.
> Gruß Sascha

Hallo Sascha,

vielleicht hilft Dir so etwas:
"IAR hat ARM-Workbench nach IEC61508 zertifiziert".
http://marketing.iar.com/acton/rif/1011/s-0478-1304/-/l-sf-rpt-00O30000005pcvK-6988:52e/l-sf-rpt-00O30000005pcvK-6988/showPreparedMessage

rgds

von Sascha (Gast)


Lesenswert?

Hallo 6A66,
Ja super, der Link ist klasse, das bringt mich auch mal in die richtige 
Richtung. Die SIL Einstufung und Bewertung kann ich bei meinem Projekt 
nicht alleine bestimmen sondern bekomme die Vorgaben von meinem 
Prüfingeneur (Projektingeneur), der die Systemberwertung macht 
vorgegeben. Ich muss nur alle Maßnahmen dafür ergreifen, das mein Part 
sozusagen conform ist.

Danke,
Gruß Sascha

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.