Hallo zusammen, ich habe ein Problem mit einem älteren Embedded-System und komme alleine nicht mehr weiter. Generell ist zu sagen, dass wir nur eine Firma sind welche dieses System nutzt wir sind nicht der Hersteller. Dieser stellt sich aber leider quer und möchte uns nicht wirklich mit unseren SD-Karten Problemen helfen. Daher bin ich als einziger Softwareentwickler in dieser Firma nun in das Embedded System eingetaucht und versuche aktuell die Ursache unseres Problemes zu finden. Es geht um einen sogenannten „Batcorder“ (Fledermaus-Detektor), der wohl ursprünglich um ~2004 entwickelt wurde. Verbaut sind u. a.: ein AVR-Mikrocontroller (vermutlich ATmega128A) ein FPGA (Xilinx Spartan-6) SD-Karten-Slot (kein SPI, sondern SD-Mode) Die SD-Karte wird also im nativen SD-Modus angesprochen. Ich komme auch gleich zu unserem Problem: Ältere Karten (z. B. SanDisk Ultra 64 GB, gekauft ~2023) → funktionieren immer neue Karten (gleiche Serie, gekauft ~2025/2026) → in ca. 98 % der Fälle Fehler beim Start („SD Card Error“) → in seltenen Fällen (~2 %) funktioniert dieselbe Karte ganz normal, aber auch nur bis zu einem Restart dann funktioniert sie meistens nicht. Die neuen Karten selbst sind in Ordnung, am PC und in Kameras funktionieren sie einwandfrei. Was ich bisher gemacht habe Ich habe die Firmware decompiled und mithilfe von KI interpretieren lassen, ich bin schnell zu dem Entschluss gekommen, dass die SD-Karten Initialisierung über den FPGA läuft, das habe ich mir auch von einem Bekannten bestätigen lassen, der sich mit embedded Entwicklung auskennt. Ich habe die Kommunikation zwischen Gerät und SD-Karte mit einem Logic Analyzer (Kingst LA2016) aufgenommen und mit sigrok/PulseView dekodiert. Dabei sehe ich im Prinzip zwei Verläufe: Fall 1 – funktioniert CMD13 CMD0 CMD8 (Antwort kommt korrekt zurück) danach mehrere CMD55 / ACMD41 irgendwann geht es weiter mit CMD2, CMD3, CMD7 usw. Fall 2 – funktioniert nicht CMD13 CMD0 CMD8 (auch hier kommt eine Antwort zurück) danach CMD55 / ACMD41 in einer Schleife die Karte kommt aber nie aus dieser Phase raus es geht nicht weiter zu CMD2/CMD3 Auffälligkeiten Die Kommunikation an sich funktioniert, es kommen Antworten von der Karte CMD8 wird korrekt beantwortet, also scheint Spannung / Kartentyp grundsätzlich zu passen Das Problem scheint bei der Initialisierung (ACMD41) zu liegen. Ich habe dort eine Sache beobachten können, und zwar wird von dem Host das Busy Bit falsch mitgeschickt zumindest sollte es laut "SD Specifications Part 1 Physical Layer" 0 sein und nicht 1. Hier die Quelle zu der PDF https://www.sdcard.org/downloads/pls/pdf/?p=Part1_Physical_Layer_Simplified_Specification_Ver9.10.jpg&f=Part1PhysicalLayerSimplifiedSpecificationVer9.10Fin_20231201.pdf&e=EN_SS9_1 . Ich vermute aktuell eher ein Problem mit der Art, wie die Initialisierung implementiert ist Evtl. reagieren neuere Karten empfindlicher auf bestimmte Parameter oder Abläufe? Ich bin mir aber nicht sicher, ob ich da auf dem richtigen Weg bin. Wir brauchen eine Technisch fundierte Aussage, damit der Hersteller seine Geräte die einen Stück Preis von 3-4k€ haben endlich fixen… Ich hänge euch noch die Sigrok mitschnitte an. "SD_2023_200MHz_5GSamples" ist ein Mitschnitt von einer 2023 Karte die immer funktioniert "SD_2026_200MHz_5GSamples" ist ein Mitschnitt von einer 2026 Karte die fast nie funktioniert "SD_2026_200MHz_5GSamples_funktioniert?" Ist ein Mitschnitt wo es beim Testen 1-2 mal funktioniert hat, den ich zum Glück mitschneiden konnte :D Fragen Hat jemand schon einmal ein ähnliches Verhalten gesehen, dass: Neuere SD-Karten auf älterer Hardware nur sporadisch initialisieren? Die Initialisierung in einer CMD55/ACMD41-Schleife hängen bleibt? Oder gibt es bekannte Stolperstellen bei der SD-Initialisierung (SD-Mode, nicht SPI), die bei neueren Karten problematisch sind? Danke schon mal für eure Hinweise!
:
Bearbeitet durch User
Deine ganze Vorgehensweise ist grosser Misst. Besorg dir den Source, stelle fest an welcher Stelle etwas schief laeuft, verstehe warum das so ist und verbesser die ganze Sache. Der Grund wieso die meisten Leute keinen Bock haben SD-Karten selber zu programmieren sondern lieber eine fertige Libary (elm-chan) nutzen liegt darin das es wohl tausende von unterschiedlichen SD-Karten gibt die sich alle in irgendwelchen Kleinigkeiten unterscheiden. Ich hab anfang der 2000er mal sowas programmiert und hatte da bestimmt 20-30 unterschiedliche Karten zum testen. Heute brauchst du vermutlich 10-100x soviele. Da ist natuerlich fremder Code den 10000Leute im Internet mit jeweils 20 verschiedenen Karten genutzt haben und da auf unterschiedlicher Hardware irgendwie robuster. Und es muss auch keinesfalls an dir liegen wenn etwas nicht geht. Es kann durchaus auch Karten geben die an einer Stelle etwas neben der Spec liegen. Besonders hervorgetan haben sich da immer "intelligente" Karten. Also Karten die gleichzeitig SD-Karte und USB-Stick oder Wlan-Accesspoint sind. Es kann aber auch an der Hardware liegen. Es gab da ein paar Vorgaben zum Stromverbrauch in dem Moment wo man eine Karte einsteckt. Pruef also wenigstens mal wie die Spannungen aussehen wenn du das machst. Das wuerde dazu passen das dein Verhalten mit einer Karte nicht immer gleich ist. Alles in allem hast du da eine grosse Dose mit Wuermern geoeffnet. Viel Spass. :) Naja, und warum man fuer soetwas ein FPGA braucht wollen wir auch lieber nicht wissen. Vanye
Vanye R. schrieb: > Deine ganze Vorgehensweise ist grosser Misst. Kann sein, lässt sich aber auch etwas sachlicher formulieren. Ich komme ursprünglich aus der Softwareentwicklung und habe mit Embedded-Systemen bisher wenig Erfahrung, daher taste ich mich da gerade heran. Hintergrund ist, dass wir aktuell mit dem Hersteller der Geräte in Diskussion sind, der sämtliche Probleme pauschal auf die SD-Karten schiebt. Wir haben inzwischen Karten von 6 verschiedenen Herstellern und etwa 9 unterschiedliche Serien getestet. Bisher funktioniert von den neueren Karten nur eine (Intenso) zuverlässig. Die SanDisk Ultra Karten aus einer älteren Charge (~2023) funktionieren hingegen problemlos, die neueren (~2026) dagegen überwiegend nicht mehr. Vanye R. schrieb: > Besorg dir den Source, > stelle fest an welcher Stelle etwas schief laeuft, verstehe warum das so > ist und verbesser die ganze Sache. Da sich der Hersteller aktuell querstellt und alles auf die SD-Karten schiebt, gehe ich nicht davon aus, dass wir Zugriff auf den Source Code bekommen werden. Ich sehe uns als Kunden auch nicht in der Verantwortung, die Firmware eines solchen Geräts selbst zu debuggen oder anzupassen. Da der Hersteller aber aktuell keine Lösung anbietet, versuchen wir zumindest nachzuweisen, dass das Problem nicht einfach pauschal an „ungeeigneten SD-Karten“ liegt. Vanye R. schrieb: > Es kann aber auch an der Hardware liegen. Es gab da ein paar Vorgaben > zum Stromverbrauch in dem Moment wo man eine Karte einsteckt. Pruef also > wenigstens mal wie die Spannungen aussehen wenn du das machst. Das > wuerde dazu passen das dein Verhalten mit einer Karte nicht immer gleich > ist. Das ist ein guter Hinweis, danke dafür. :) Gerade weil dieselbe Karte gelegentlich funktioniert und meistens nicht, passt das tatsächlich gut ins Bild. Das werde ich mir als nächsten Schritt genauer anschauen. Vanye R. schrieb: > Alles in allem hast du da eine grosse Dose mit Wuermern geoeffnet. Viel > Spass. :) Ja, leider. Wir sind auf die Geräte angewiesen und haben davon auch entsprechend viele im Einsatz, daher ist das Thema für uns nicht ganz trivial. :/ Die Probleme bestehen schon seit Jahren, wurden aber bisher immer mit dem Hinweis auf „inkompatible SD-Karten“ abgetan. Inzwischen funktionieren jedoch fast keine neueren Karten mehr, während gleichzeitig empfohlen wird, die Karten regelmäßig durch neue zu ersetzen. Das macht die Situation natürlich nicht einfacher. Dadurch das ich seit einem Jahr als Softwareentwickler in der Firma bin, wurde ich nun darauf angesetzt… Eigentlich Programmiere ich nur Web-Apps und QGis Plugins :D
> Ich sehe uns als Kunden auch nicht in der Verantwortung, die Firmware > eines solchen Geräts selbst zu debuggen oder anzupassen. Da stimme ich dir zu. Im Zweifel schick dem doch 2-3 Problemkarten und bitte um eine Stellungnahme. Wenn ihr das so einkauft sollte das wirklich nicht euer Problem sein. Allerdings moechte ich auch kein Hersteller sein der garantiert das es mit jeder Karte laeuft. :) > Das werde ich mir als nächsten Schritt genauer anschauen. Pruef mal ob die Spannung beim reinstecken unzulaessig zusammenbricht. Ich bin da jetzt auch nicht mehr so drin, aber da gab es vorgaben zu bestimmten Kapazitaeten. Ich koennte auch vorstellen das gerade neue und sehr schnelle Karten viel Strom ziehen. Allerdings sollte das dann ja nicht schon bei der Initialisierung auftreten. Vanye
Yannick F. schrieb: > Ältere Karten (z. B. SanDisk Ultra 64 GB, gekauft ~2023) > → funktionieren immer > neue Karten (gleiche Serie, gekauft ~2025/2026) > → in ca. 98 % der Fälle Fehler beim Start („SD Card Error“) > → in seltenen Fällen (~2 %) funktioniert dieselbe Karte ganz normal, > aber auch nur bis zu einem Restart dann funktioniert sie meistens nicht. Sowas hatte ich auch mal. Beitrag "Intitialisierung einer SD-Karte" Beitrag "Re: Intitialisierung einer SD-Karte"
Moin, Yannick F. schrieb: > Da sich der Hersteller aktuell querstellt und alles auf die SD-Karten > schiebt, Koennt ihr nicht die SD-Karten ueber den Hersteller beziehen? Klar, kann schon sein, dass der dann Apothekenpreise dafuer aufruft, aber ihr habt dann das Problem vom Schuh, denn dann ist es zweifelsfrei seines. Gruss WK
Dergute W. schrieb: > Koennt ihr nicht die SD-Karten ueber den Hersteller beziehen? Klar, kann > schon sein, dass der dann Apothekenpreise dafuer aufruft, aber ihr habt > dann das Problem vom Schuh, denn dann ist es zweifelsfrei seines. > > Gruss > WK Würden wir ja liebend gerne, wenn sie das Anbieten würden. Ihre Aussage dazu war, dass sie keine SD-Karten empfehlen könnten, aufgrund von sich ständig wechselnder Qualität der SD-Karten… Wirklich im Thema sind sie da anscheinend auch nicht und es wird alles pauschal auf minderwertige SD Karten geschoben, das kann ja aber nicht sein, da jedes andere Gerät was wir mit SD-Karten nutzen, mit der neuen Charge funktioniert nur ihres nicht. Wenn sie sowas fahren würden wie Siemens es zum Beispiel tut und wir dafür funktionierende Karten hätten wären wir ja Happy. Auf deren Website schreiben sie nur Folgendes zu den SD-Karten: "Gespeichert werden die Aufnahmen auf SDHC/SDXC-Speicherkarten." Ich kann es verstehen, dass nicht alle SD-Karten unterstützt werden können, aber dann sollte man nicht sowas schreiben und dem potenziellen Käufer vermitteln das man handelsübliche SD-Karten verwenden kann und dann in der Realität Karten die vor 2-3 Jahren noch funktionierten in der neuen Charge plötzlich nicht mehr gehen.
:
Bearbeitet durch User
Yannick F. schrieb: > Würden wir ja liebend gerne, wenn sie das Anbieten würden. Ihre Aussage > dazu war, dass sie keine SD-Karten empfehlen könnten, aufgrund von sich > ständig wechselnder Qualität der SD-Karten… Wirklich im Thema sind sie > da anscheinend auch nicht und es wird alles pauschal auf minderwertige > SD Karten geschoben, Eine beliebte Standardausrede. ;-) > das kann ja aber nicht sein, da jedes andere Gerät > was wir mit SD-Karten nutzen, mit der neuen Charge funktioniert nur > ihres nicht. Eben. > Ich kann es verstehen, dass nicht alle SD-Karten unterstützt werden > können, aber dann sollte man nicht sowas schreiben und dem potenziellen > Käufer vermitteln das man handelsübliche SD-Karten verwenden kann und > dann in der Realität Karten die vor 2-3 Jahren noch funktionierten in > der neuen Charge plötzlich nicht mehr gehen. Das Problem liegt bei euch. Kann Software oder Hardware sein. Und normale SDHC/SDXC Karten sind ja nun weiß Gott keine Raktenwissenschaft. Man sollte versuchen, daß Problem einzukreisen. Erstmal nur mit einfachen, alten SDHC Karten testen. Dann mit neuen SDHC. SDXC zum Schluß.
Moin, Yannick F. schrieb: > Wirklich im Thema sind sie > da anscheinend auch nicht und es wird alles pauschal auf minderwertige > SD Karten geschoben, das kann ja aber nicht sein, das jedes andere Gerät > damit funktioniert nur ihres nicht. Ja, wuerd' ich dann auch so sehen, dass die selber im Dunkeln tapsen und es nicht gebacken kriegen. Dann wird wohl nur der Wechsel zu einem anderen Hersteller helfen koennen. Dass du da selber ohne Info/SW/HW-Unterlagen vom Hersteller verlaesslich auf was Zielfuehrendes stoesst, halte ich fuer ziemlich unwahrscheinlich. Gruss WK
Dergute W. schrieb: > Ja, wuerd' ich dann auch so sehen, dass die selber im Dunkeln tapsen und > es nicht gebacken kriegen. Dann wird wohl nur der Wechsel zu einem > anderen Hersteller helfen koennen. > Dass du da selber ohne Info/SW/HW-Unterlagen vom Hersteller verlaesslich > auf was Zielfuehrendes stoesst, halte ich fuer ziemlich > unwahrscheinlich. > > Gruss > WK Das habe ich mir leider schon fast gedacht, dass wir so nicht viel weiter kommen werden. Ich hätte nur gerne eine Technisch fundierte Aussage die ich dem Hersteller um die Ohren werfen könnte, um so Aussagen wie: > Man kann nicht sagen, dass wenn die eine SanDisk High Endurance 128GB gut funktioniert, dann muss die andere SanDisk High Endurance 128GB auch gut laufen! > Es geht nicht darum, dass bestimmte Marken oder Kartengrößen generell zu Fehler führen. oder: > meine Kollegin hat Sie ja schon darauf hingewiesen bitte keine Micro-SD zu verwenden. Micro-SD sind nicht 100% kompatibel mit SD-Karten! oder: > Vereinfacht gesagt gibt es weltweit einige wenige Firmen bei denen alle SD Karten Hersteller einkaufen, je nachdem wo Bauteile verfügbar oder günstig sind. Daher können in SD Karten desselben Herstellers ja sogar innerhalb der gleichen Charge unterschiedliche Bauteile verwendet werden, egal welcher Marke und egal ob billig im Discounter oder teuer im Fachhandel gekauft. zu entkräften. Aus meiner Sicht wird da viel mit nicht vorhandenem Wissen argumentiert und versucht sich aus der Verantwortung zu ziehen. Ich habe auch kein fundiertes wissen dazu, aber alles, was ich im Internet dazu finde und mir von Bekannten ran hole spricht eindeutig gegen ihre Aussagen...
Falk B. schrieb: > Sowas hatte ich auch mal. > > Beitrag "Intitialisierung einer SD-Karte" > Beitrag "Re: Intitialisierung einer SD-Karte" Danke das werde ich mir auch mal anschauen! :)
Ausreichende Stromversorgung ist für SD-Karten essentiell. Schnellere Karten haben oft einen schnelleren Prozessor und der zieht oft mehr Strom, vor allem beim Initialisieren. Da neuere Karten tendenziell schneller sind, kann das daher gut mit dem Alter korrellieren. Nimm doch mal ein Oszi, ordentliche Anbindung des Tastkopfes und keine Krokoklemme, und miss damit die Stromversorgung der SD-Karte beim Initialisieren. Am besten natürlich mit einer Power-Rail-Probe oder auch mit einer guten Differenziellen. Wie weit bricht da die Spannung ein? Dann vergleich das zwischen einer guten und einer problematischen Karte. Dann löte nen dicken Polymer-Elko, so 470µ aufwärts, genau an die Versorgungspins direkt an dem SD-Kartenschacht an und probier nochmal.
:
Bearbeitet durch User
Yannick F. schrieb: > > Ich habe die Firmware decompiled und mithilfe von KI interpretieren > lassen, ich bin schnell zu dem Entschluss gekommen, dass die SD-Karten > Initialisierung über den FPGA läuft, das habe ich mir auch von einem > Bekannten bestätigen lassen, der sich mit embedded Entwicklung auskennt. Ich nehme an es geht um die Geräte von ecoObs. Zumindest für die Firmware des GSM-batcorder 1.0 von hier https://www.ecoobs.de/firmwaregsm.html die auf einem AVR basiert erfolgt die Ansteuerung der SD-Card vom AVR, auch wenn vielleicht ein FPGA beteiligt ist (ich habe nur kurz in die Firmware geschaut). Man sieht auf jeden Fall dort auch die Initialisierung.
:
Bearbeitet durch User
Dieter S. schrieb: > Ich nehme an es geht um die Geräte von ecoObs. > > Zumindest für die Firmware des GSM-batcorder 1.0 von hier > > https://www.ecoobs.de/firmwaregsm.html > > die auf einem AVR basiert erfolgt die Ansteuerung der SD-Card vom AVR, > auch wenn vielleicht ein FPGA beteiligt ist (ich habe nur kurz in die > Firmware geschaut). Man sieht auf jeden Fall dort auch die > Initialisierung. Du bist fast richtig :D Es geht um die Batcorder 3.1 https://ecoobs.de/firmware31.html
Yannick F. schrieb: > > Es geht um die Batcorder 3.1 https://ecoobs.de/firmware31.html Und auch da initialisiert der AVR die SD-Card.
Dieter S. schrieb: > Und auch da initialisiert der AVR die SD-Card. Uuh das ist natürlich ein sehr guter Hinweis! Könntest du mir bitte verraten, wie du die Firmware dekompiliert hast? :) Evtl. habe ich da auch etwas falsch gemacht oder die KI hat einfach schlichtweg das, was dekompiliert wurde falsch interpretiert. Vielen Dank schonmal für deinen Beitrag :)
Jeder Disassembler kann das, man nimmt aber für solche Dinge üblicherweise Ghidra oder IDA Pro. Und man sieht mit entsprechender Erfahrung sofort dass z.B. das hier der Code für ein "CMD8" an die SD-Card ist:
1 | CMD_8: |
2 | |
3 | sbi PORTD, PORTD6 |
4 | nop |
5 | nop |
6 | nop |
7 | nop |
8 | cbi PORTD, PORTD6 |
9 | ldi r16, 0x48 |
10 | sts 0x1300, r16 |
11 | clr r16 |
12 | sts 0x1300, r16 |
13 | sts 0x1300, r16 |
14 | ldi r16, 1 |
15 | sts 0x1300, r16 |
16 | ldi r16, 0xAA |
17 | sts 0x1300, r16 |
18 | sts 0x1300, r16 |
19 | ret |
Die anderen SD-Card Kommandos findet man ebenfalls in der Firmware. Nur gut dass die KI ja alles kann...
Ich finde Ghidra ganz gut. Damit schau ich mir die FW der Vapes an, den Output durch die KI jagen geht auch sehr gut und bringt viel zu Tage. IDA Pro kostet halt Geld.
Dieter S. schrieb: > Nur gut dass die KI ja alles kann... Deshalb ist es gut, dass es so Menschen wie dich gibt! Vielen Dank das du da nochmal nachgeschaut hast und mich entsprechend korrigiert hast, das macht eine Anpassung der Firmware für den Hersteller theoretisch ja noch einfacher :D Genau für sowas habe ich mich auch an dieses Forum gewendet, KI kann eben nicht alles und man sollte das ganze auch nochmal hinterfragen. Grad, wenn einem die Erfahrung fehlt, kann da viel Mist bei Herumkommen. Wenn man in seinem Bereich Ahnung hat und dann die KI als Werkzeug nutzt um schneller zu einem Ergebnis zu kommen, kann dabei auch was Gutes bei Herumkommen. Aber ohne Expertise ist das meist schwierig einzuschätzen, ob das, was die KI ausgibt, auch richtig ist. Vielen Dank für deinen Beitrag! :)
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.