-         

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 14

Thema: SOUP (Software Of Unknown Provenance)

  1. #1
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    05.11.2007
    Ort
    Berlin
    Beiträge
    526

    SOUP (Software Of Unknown Provenance)

    Anzeige

    Hallo zusammen,
    ich war mir jetzt nicht sicher wohin mit dem Beitrag, also ist er hier gelandet:

    Was zählt eigentlich zu SOUP ? Erbsensuppe nicht unbedingt

    Info gibt es natürlich hier:
    https://de.wikipedia.org/wiki/Soup

    Zählt IAP(In Application Programinng mit ROM Code) zu SOUP
    oder der interne Bootloader ?

    Dazu ein kurzer Ausschweif:
    Für meine medizinischen Geräte habe ich bisher nur eine Firmware.
    Der "gesamte" Source Code liegt vor.
    Es werden bei mir KEINE Bibliotheken verwendet,
    weder STDINT noch STDLIB oder Printf oder ähnliches.
    Alles wurde immer komplett NEU implementiert.
    Damit stehen ALLE Sourcen zur Verfügung und
    es gibt keine einzige Zeile Fremdcode.

    Nun habe ich ein Neues Projekt und setzte den LPC1347 von NXP ein.
    Dieser hat z.B. ein internes EEPROM.
    Um auf diesen zugreifen zu können, muss ich die ROM internen Funktionen verwenden.
    IAP Function....

    Dafür existiert aber kein Source Code (zumindest habe ich keinen Zugriff darauf)
    Also ist das in meinen Augen SOUP (Software unbekannter Herkunft)

    Jetzt muss ich in der Risikoanlyse also auch diese Software entsprechend bewerten,
    oder liege ich da falsch ?

    Nach einiger Recherche habe ich gefunden, dass der ROM Code eh nicht sonderlich
    ausgereift ist, man muss nämlich Interrupts sperren usw.

    Das hat NXP wohl auch bemerkt und liefert nun eine Bibliothek namens Libeeprom-LPC1347 nach.
    aber leider auch völlig ohne Source-Code.
    Wenn ich diese also dazulinke habe ich wieder das Thema "SOUP"
    Mir wäre es viel lieber die würden die Registerbeschreibungen veröffentichen für das EERPOM,
    dann könnte ich selbst die Funktionen dazu schreiben und bewerten, zumal ein EEPROM zu beschreiben ist
    ja nun wirklich kein Geheimnis.

    Ich würd gern mal Eure Meinung dazu hören.
    Siro
    Geändert von Siro (08.07.2016 um 11:09 Uhr)

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    22.06.2009
    Beiträge
    1.266
    Hey, ich denke man kann das ganze sehr zweischneidig sehen:

    Zum einen ist der Einsatz von Bibliotheken zu denen kein Sourcecode vorliegt ein wesentlichen Sicherheitsrisiko. Man kann an dieser Stelle keine Einfluss bzw. Kontrolle der implementierten Funktionen. Es ist eben wie in deinem Fall auch die Zertifizierung zu bedenken.

    Auf der anderen Seite muss man sich vorhalten: Kann man wirklich selber umfangreiche Bibliotheken selbst besser/korrekt implementieren. Gerade bei häufig benutzen Bibliotheken wie z.B. der std-lib sollte man nicht vergessen, dass aufgrund der breiten Verwendung und langjährigen Entwicklung durch erfahrene Entwickler viele auch eher seltenere Fehler gefunden und behoben werden. Zudem muss man bedenken, dass auch wenn alle Funktionen selber geschrieben wurden, bzw. der Sourcecode zu einer Bibliothek vorliegt, man bei weitem keine Sicherheit hat, dass der Code in die korrekte Binärfunktionalität übersetzt wurde. Abhilfe schafft hier nur ein zertifizierter Compiler, und zum Beispiel der Einsatz von MISRA C als Standard, um undefinierte Zustände die der normale C Standard erlaubt zu verhindern.

    Mein Fazit dazu ist:
    Man kann die Unsicherheit die durch Einsatz von Bibliotheken ohne vorliegenden Sourcecode entstehen, z.B. durch Opensource umgehen, Im Kommerziellen Umfeld kann man durchaus auch auf Anfrage bzw. Lizenzzahlung auch den Sourcecode erhalten. Alternativ ist z.B. der Einsatz von Bibliotheken die mit einem zertifizierten Compiler + MISRA C Standard + der Garantie des Herstellers für Korrektheit der Funktionen erstellt wurden.

  3. #3
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    27.08.2013
    Ort
    Region Basel
    Alter
    59
    Beiträge
    2.435
    Hallo Siro,

    In deinem Fall ist der Bootloader Bestandteil des Chips. Insofern stellt sich die Frage ob dieser Chip überhaupt für deine Anwendung verwendbar ist!
    Grundsätzlich lehnt NPX jegliche Verantwortung für die fehlerfreie Funktion des Chips ab.

    Grundsätzlich hat es Vorteile für den Programmierer und den Hersteller, wenn das Beschreiben von FLASH/EEPROM nur über den fest eingebauten Bootloader funktioniert. Der Hersteller kann jederzeit die Programmierparameter ändern und jegliche Software funktioniert problemlos auch auf den geänderten Chips. Vorstellbar ist sogar, dass die Chips in der Fabrikation vermessen werden und dann einen passenden Bootloader (Timing) verpasst bekommen.

    Interrupts muss man beim Programmieren von FLASH/EEPROM immer abschalten, andernfalls funktioniert das Timing nicht und die Bit-Zellen können verbrannt werden, bzw. erreichen die Lebensdauer nicht! Die Frage ist nur ob man dies in der Funktion macht oder dem Programmierer überlässt. Umgehen kann man dies nur durch zusätzliche Hardware, welche den Programmierablauf übernehmen würde. Das kostet aber eine Menge zusätzliche Transistoren und funktioniert auch nur, wenn eine bekannte Taktfrequenz vorhanden ist.

    MfG Peter(TOO)
    Manchmal frage ich mich, wieso meine Generation Geräte ohne Simulation entwickeln konnte?

  4. #4
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.12.2007
    Ort
    weit weg von nahe Bonn
    Alter
    33
    Beiträge
    2.383
    Medizinische Anwendungen sind ein heikles Gebiet, ich selber hab damit noch keinen Kontakt aber Kollegen von mir arbeiten an Medizinischen Entwicklungen und was ich bisher so erfahren habe, verlässt man sich i.d.R. auf zertifizierte Hardware bzw. zertifizierte Softwarekomponenten um Entwicklungszeit zu sparen.
    Der Aufwand ist enorm und die Zertifizierung (wie dir sicher bekannt ist) streng.

    Hut ab auf jeden Fall von mir, dass ihr keine stdlibs benutzt! Das grenzt schon fast an Assemblerprogrammierung

    OpenSource ist zumindest Zertifizierungstechnisch "umsetzbar" aber fertig Zertifiziert würde ich wo es geht vorziehen auch wenn es mehr kostet.
    Man spart sich Entwicklungs- und Zertifizierungszeit (letztere ist wohl besonders teuer) und man muss das Rad ja nicht zwingend neu erfinden, auch wenn deine Parameter nur "Rund, leichtläufig, hohe Haftung" lautet und das zugekauft Rad zusätzlich "Leichtmetall, Verchromt, 6 Speichen im Mercedes look" mitbringt.

    PS: Ich glaue in einem Projekt wurden sogar fremde (offene) Libs benutzt die dann mittels teurer Analysetools untersucht worden ist um die Code Coverage zu prüfen um die Zertifizierung zu erlangen.
    Es gibt 10 Sorten von Menschen: Die einen können binär zählen, die anderen
    nicht.

  5. #5
    Erfahrener Benutzer Lebende Robotik Legende Avatar von PICture
    Registriert seit
    10.10.2005
    Ort
    Freyung bei Passau in Bayern
    Alter
    66
    Beiträge
    10.970
    Hallo!

    Zitat Zitat von Ceos Beitrag anzeigen
    Medizinische Anwendungen sind ein heikles Gebiet ... grenzt schon fast an Assemblerprogrammierung
    Das stimmt. Ich war früher ein paar Jahre dort als Entwickler tätig und sage nur dazu, dass damals µC nur in Diagnostik und nichtinvasiven Therapien z.B. nicht in Herzschrittmacher nach Verlangen ("pacemaker on demand") benutzt werden dürften. Übrigens, ich programmiere bis heute nur im Assembler.
    MfG (Mit feinem Grübeln) Wir unterstützen dich bei deinen Projekten, aber wir entwickeln sie nicht für dich. (radbruch) "Irgendwas" geht "irgendwie" immer...(Rabenauge) Machs - und berichte.(oberallgeier) Man weißt wie, aber nie warum. Gut zu wissen, was man nicht weiß. Zuerst messen, danach fragen. Was heute geht, wurde gestern gebastelt. http://www.youtube.com/watch?v=qOAnVO3y2u8 Danke!

  6. #6
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.12.2007
    Ort
    weit weg von nahe Bonn
    Alter
    33
    Beiträge
    2.383
    eine Aussterbende Generation .. leider .. aber ich muss gestehen dass ich nur mit Assembler nicht fröhlich programmieren kann
    Es gibt 10 Sorten von Menschen: Die einen können binär zählen, die anderen
    nicht.

  7. #7
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    05.11.2007
    Ort
    Berlin
    Beiträge
    526
    Ersteinmal vielen Dank für Eure Anteilnahme.

    Mal eben zu den letzten Threads:

    Ich habe auch jahrelang NUR Assembler programmiert, musste notgedrungen auf "C umsteigen,
    wobei ich die neuen Generationen von Prozessoren auch nicht mehr nur in Assembler programmieren möchte,
    aber regelmässig mir den erzeugten Assembler Code vom C-Compiler anschaue und dann tatsächlich
    Fehler finde, was der Compiler falsch gemacht hat.....
    Natürlich nur weil ich es ihm nicht eindeutig erklärt habe was ich machen wollte.

    ----------------------------------------------------
    Gut getestete Bibliotheken die von zig Programmieren verwendet werden, haben natürlich
    viele Vorteile, eben weil Fehler bei dem einem oder anderem schon aufgetaucht wären
    oder sind und dementsprechend beseitigt wurden.

    Open Source hat auf jeden Fall Vorteile. Wobei bei größeren Projekten
    oder Bibliotheken das auch keiner mehr bis ins Detail nachvollziehen kann.

    Das Rad immer wieder neu erfinden ist wirklich SEHR zeitaufwändig, da kann ich ein Lied von singen.
    Und ich würde lügen, wenn da nicht etliche von Fehlern beseitigt werden musten, bis es "augenscheinlich" richtig funktionierte.
    Auch ich schaue gerne mal in fremden Code und schaue mir an wie andere das lösen.
    Dabei lernt man ja auch und auch da gab es "bessere" Lösungen an denen ich mich gerne orientiere.

    Die vielen Analyse-Tools, die man uns gerne "andrehen" möchte, ohne diese jetzt schlecht machen zu wollen,
    können schon div. Unzulänglichkeiten, Fehler usw finden.
    Leider ist eine sichere Funktion deshalb aber trotzdem nicht gewährleistet.
    Die Analyse Tools können nicht die Hardware abbilden und da liegt schon ein riesen Problem.
    Den Code durch einen Compiler jagen und mit dutzenden Parametern füttern ist sicher
    eine grobe Abschätzung aber z.B. Read/Modify/Write Probleme kann man damit nicht finden.
    Ebenso wird ein AnyseTool nicht die Problematik mit den Interrupts beim ARM Code aufzeigen.
    Wenn hier nämlich in der letzen Softwarezeile das IRQ-Bit gelöscht wird, kann,
    aber muss es nicht funktionieren, das hängt vom erzeugten Code ab.
    Da hilft nur Testpunkte/Oszilloskop und viel Geduld und Erfahrung.

    Ich brauch ja nur ein Häkchen im Compiler ändern und schwupps steht das ganze System.
    Deshalb werden bei mir die Tests mit "allen möglichen" Optionen auf Speed/Size usw durchgeführt.
    Die Software MUSS in allen Compilaten einwandfrei laufen.
    Das kostet richtig viel Zeit, aber ich fühle mich für meine Software auch verantwortlich.

    Wenn es um die Risikobewertung geht, muss ich ja auch die Hardware, also die Prozessoren selbst
    mit einbeziehen und ich kenne keinen, für den es nicht einen/mehrere Errata Sheets gibt,
    in denen Probleme beschrieben werden.
    Auch nach Jahren werden diese Dokumente immer länger, weil irgendwann irgendwer ein Problem
    unter bestimmten Bedingungen erkannt hat.
    Hier muss ich eigentlich regelmäßig gucken, ob es nicht neue Fehler gibt, welche mein
    System/Patienten gefährden könnten.

    Ein "zertifizierte Compiler" ist auch auch ein heikles Thema.
    Darf ich einen GNU-Compiler verwenden oder nicht ?
    Mit Sicherheit ein SEHR gut getesteter Compiler und Open Source.
    Wobei ich hier ja schon eine "speziell compilierte" Variante für die ARM Prozessoren verwende,
    wobei ich hier auch nicht weis was wie zusammengelinkt und compiliert hat.

    Wie Peter schon richtig schrieb: Ist die Benutzung der Prozessoren immer auf eigene Gefahr und
    nicht für Lebenserhaltene Systeme gedacht.

    Glücklicherweise konnte ich in meinen Geräten bisher immer eine zusätzliche Hardware einbauen,
    die im Fehlerfalle das System in einen unkritischen Zustand versetzt.
    Das steht auch in meiner Risikoanlyse, dass eine ausreichende Sicherheit ohne zusätzliche
    Hardwaremaßnahmen NICHT gewährleistet werden kann.

    Damit bin ich erstmal fein raus, da kann die Software oder der Prozessor machen was er will.
    Doppelte Sicherheit ist ja IMMER angesagt in unserem Bereich.

    ------------------
    Hier mal ein Ausschnitt aus meiner Rechtfertigung, der zusätzlichen Hardwaresicherung:
    Der benutzte Prozessor Kern CORTEX-M3 enthält Fehler, es gibt verschiedene Revisionen.

    Die Firma NXP verbaut diese fehlerhaften Kerne in einen Microcontroller, hiebei kommen weitere Fehler hinzu.
    NXP hat also auch verschiedenen Revisionen.

    Mit der Entwicklungssoftware (welche ebenfalls) Fehler enthalten kann, wird eine Geräte-Software entwickelt.
    Eine Sicherstellung auf einwandfreie Funktion von 93.582 Dateien in 9.967 Ordnern der IAR Entwicklungsumgebung ist unmöglich.

    Mit einer Programmiersoftware (z.B Flashmagic), welche ebenfalls Fehler beinhalten kann, wird der Chip programmiert und ausgeliefert.

    Die interne Bootloader des Chips (Software) könnte auch Fehler beinhalten.

    Die Endsoftware versucht Probleme mittels Checksumme zu ermitteln. Die Checksummen Funktion kann aber nicht alle Fehler erkennen, und/oder könnte selbst Fehlerhaft sein.

    Dann bleibt offen:
    Welche Revision des Controllers hat später der Bestücker verbaut ?
    Welcher CORTEX-Kern wurde dabei verwendet ?
    Mit welcher Revision wurde programmiert ?
    Und zum Schluss:
    Welche unentdeckten Fehler befinden sich in der Geräte-Software ?

    Eigentlich ein schier endloses Grab an Fehlermöglichkeiten.

    Eine ausreichende Sicherheit nur mittels Software kann NICHT gewährleistet werden.
    Es ist zwingend erforderlich ein zusätzliches mechanisches/elektromechanisches Sicherungssystem zu integrieren.

    Also eigentlich egal ob SOUP oder nicht, ich muss eh gegensteuern um ausreichende Sicherheit zu gewährleisten...

    Ich wünsche Euch ein erholsames Wochenende
    Siro

  8. #8
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.12.2007
    Ort
    weit weg von nahe Bonn
    Alter
    33
    Beiträge
    2.383
    sorry für die folgende Ausdrucksweise

    oh shit ... und ich hab schon die Ankündigung bekommen, dass da ein SIL2 Projekt am Horizont wartet >_< ... übernimmt das die Krankenkasse wenn ich mich dann einweisen lasse ?! Sollte ich eventuell mein Gehalt nachverhandeln? XD
    Es gibt 10 Sorten von Menschen: Die einen können binär zählen, die anderen
    nicht.

  9. #9
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    27.08.2013
    Ort
    Region Basel
    Alter
    59
    Beiträge
    2.435
    Hallo Siro,

    Auch ein netter Fehler:
    Mitte der 80er Jahre setzten wir die ersten statischen 8Kx8 Low Power RAM ein, die ganz normalen 6264.
    Diese hatte bei bestimmten Adressen-/Datenkombinationen Lesefehler.

    Normale Speichertests zeigten keine Fehler. Und der Zelleninhalt stimmte auch. War irgendein Problem mit Übersprechen auf den Chip-Lese-Leitungen.

    Dauerte aber ein paar Wochen, bis wir den Fehler finden konnten.
    Die Hard- und Software war schon im Einsatz und es wurde nur das RAM von 2Kx8 auf 8Kx8 erweitert.
    Wenn man die Software veränderte und sich dadurch die RAM-Adressen verschoben, war dann auch der Fehler meistens verschwunden.
    Allerding reagierte der Hersteller erst wirklich als eine Expertise aus dem BBC-Halbleiterlabor vor lag, welch den Fehler unabhängig von uns fanden.

    In der ersten Hälfte der 90er Jahre unterzog NS die NS16C450/550 UARTs einem Dieshrink. Dieser Baustein war damals in fast jedem PC enthalten.
    Bei einem Gerät in der laufenden Fabrikation es dann Probleme, weil die Baudraute manchmal plötzlich umschaltete, war aber alles sauber nach Datenblatt aufgebaut. Wenn man mit dem Oszilloskop gemessen hat trat der Fehler nie auf
    Ursache war auch hier ein Übersprechen, durch die steileren Flanken im Oszillator. Durch den Dieshrink wird nicht nur die Schaltung kleiner, sondern auch die MOS-Transistoren schneller.
    Abhilfe bestand dann in eine 10pF-Kondensator am Oszillator Ausgang, zumindest bis NS den Chip überarbeitet hatte.

    Du solltest also genau abklären was deine Krankenkasse alles als Berufskrankheit versichert und das Gehalt den Risiken anpassen lassen!

    Interessant bei den ganzen Problemen war dabei, dass ich direkten Kontakt zu den Chip-Entwicklern bekam und so auch andere Fragen beantwortet bekam

    MfG Peter(TOO)
    Manchmal frage ich mich, wieso meine Generation Geräte ohne Simulation entwickeln konnte?

  10. #10
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    05.11.2007
    Ort
    Berlin
    Beiträge
    526
    Der gute alte 8250
    Noch heute baut man die "uralte" 8 Bit Hardware in hochmoderne 32 Bit ARM Prozessoren.
    Hier hatte ich in den 80zigern schon Assembler/Pascal Routinen für die RS232-Software geschrieben,
    Das lief auch immer einwandfrei, bis ich meinen ersten "ARM" Contoller hatte.
    Da trat zum ersten mal das Read Modify Write Problem in mein Leben.
    Im RX Interrupt gab es die Zeile rx_count++;
    Das Hauptprogramm rief RX_Get auf und dort war rx_count--;
    Bei allen Prozessoren vorher war das kein Problem, denn die hatten "atomare" Befehle
    für inc und dec. Auch der 80286 in meinem PC-XT sowie die PIC-Controller noch heute.
    Nur der Arm Prozessor konnte/kann das bis heute nicht und das geht dann gehörig daneben.
    Er macht aus einem INC einen Dreizeiler, welche natürlich vom Interrupt unterbrochen werden kann....

    Aber auch die Umstellung von Assembler/Pascal auf C führte wieder zum Nichtfunktionieren,
    weil der C-Compiler die Umschaltung des D-LAB Bits weggekürzt hat, er sah da nicht so den Sinn drin
    ein Bit zu setzen ohne es zu benutzen und dann wieder zu löschen,
    das ist aber zwingend notwendig für die Registerumschaltung.
    Hier half dann das "volatile"

    Es gibt schon "schöne" Fehler .....

    Ich konnte schon mal einen Softwarefehler mit einem 100nF Kondensator beseitigen

    Tagelange Suche nach unerklärlichem Verhalten bei einem Board mit PIC-Controller.
    Endlich hatte ich die vermeintliche Softwarezeile gefunden.
    Kleine Änderungen und der Fehler war weg...
    Aber eigentlich war ich dann soweit fortgeschritten dass völlig
    unnützer Code den Fehler beseitigte.
    Es war mir völlig rätselhaft warum nun ein "NOP" die Software zum Absturz brachte.
    Timing Problem war nicht gegeben, da war überhaupt nichts Zeitkritisches.
    Ich habe mich dann nach "SEHR langem" suchen an Microchip gewendet und es gab da einen "Spezialisten"
    der hat das Problem recht schnell erkannt, bzw. vermutet.

    Der Flashspeicher im PIC war aufgeteilt in mehrere Bereiche, wobei nicht
    immer alle aktiv waren. Verschob sich nun der Programmcode im Speicher
    und es wurde die nächste Bank angesprungen, zog der Chip kurzzeitig mehr Strom.
    Da der "entscheidende" Entkoppelkondensator etwas zu weit vom den Chip entfernt war
    gab es einen Spannungseinruch/Störung...
    Es ging da also nur um etwas 1 cm Leiterbahn......
    Einen zusätzlichen 100nF an die Beinchen gelötet und das war es dann schon.

    Hier konnte man mal sehen wie wichtig diese kleinen Dinger sind.
    Nicht immer ist die Software schuld
    Also immer so dicht wie möglich an die Versorgungspins.

    Siro

Seite 1 von 2 12 LetzteLetzte

Ähnliche Themen

  1. USB AVR LAB - unknown device -HILFE
    Von blue-vision im Forum C - Programmierung (GCC u.a.)
    Antworten: 34
    Letzter Beitrag: 03.06.2010, 19:12
  2. Problem: Unknown Statement
    Von Robin1508 im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 2
    Letzter Beitrag: 17.05.2008, 19:06
  3. unknown interrupt source Error :85
    Von gesamtplan im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 1
    Letzter Beitrag: 01.11.2007, 02:27
  4. avr defekt durch CKSEL: Device missing or unknown device -24
    Von brundle im Forum AVR Hardwarethemen
    Antworten: 2
    Letzter Beitrag: 04.04.2007, 11:31
  5. "Unknown device" bei Programmierung über ft232bl
    Von Frikkie im Forum AVR Hardwarethemen
    Antworten: 6
    Letzter Beitrag: 25.01.2007, 21:14

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •