Gefälschte blaue Pille

Ich bin ein großer Fan des Blue Pill Breadboards. Sie sind sehr gut in Bezug auf Preis / Leistung. Eigentlich ist meine Liebe zu ihnen aus dem Artikel der Aprilscherze über Pedal-Firmware zum Spielen der Balalaika ersichtlich .



Öffnen Sie eine Schachtel mit solchen Brettern und nehmen Sie schnell eine, um einige Probleme zu lösen - in der Reihenfolge der Dinge. Das stimmt, vor kurzem habe ich das nächste Board genommen, es mit einer gut getesteten und getesteten „Firmware“ geflasht und ... ein nicht identifiziertes USB-Gerät bekommen. Ich nahm ein anderes Board, "blitzte" es, das Gerät funktionierte dort. Es würde ein Ende der Sache geben, aber ich frage mich, was die Sache ist. Als das Wochenende kam, begann ich daher eine detaillierte Studie darüber, warum es nicht funktioniert.

Im Allgemeinen stelle ich vor dem „Blinken“ der Platinen sicher, dass der vom Hersteller durchgeführte Test funktioniert: Die LED blinkt. Ich war mir also sicher, dass der Prozessor im Allgemeinen am Leben ist. Was ist dann schuld? Vielleicht USB-Leitungen oder Quarz.

Die Linien waren in Ordnung, der Quarz startete nicht. Aber es kann aus vielen Gründen nicht beginnen. Der Start erfolgt programmgesteuert, bereits im Darm der main () - Funktion. Nun gut, wir beginnen mit dem Debuggen des Programms.

Alles wäre in Ordnung, aber der Debugger wechselt nicht zur Funktion main () . Das Programm hängt irgendwo zwischen dem Start und dieser Funktion.



Wir stoppen das Programm: Wir erwarten, dass wir uns im HardFault- Handler befinden.





Was bringt uns hierher? Adresszähler zurücksetzen:



Und wir beginnen, das Programm sorgfältig zu verfolgen. Hier in dieser Zeile stirbt alles, wir verwenden mindestens Step- Operation, mindestens Step Over .



Jolly Keil ... Nun, nichts. Setzen Sie alles erneut zurück (RST), klicken Sie mit der Maus auf das Disassembler-Fenster und gehen Sie dorthin. In diesem Fall können wir verstehen, dass innerhalb der __scatterload- Funktion alles stirbt.



Wenn in dieser Funktion alles stirbt, gibt es im Allgemeinen bereits einen Grund zu prüfen, ob der Reglertyp verwirrt ist. Aber nein, das stimmt (ich habe auch die Einstellungen überprüft, aber diese Firmware funktioniert auf anderen Karten).



Gut. Wieder setzen wir alles zurück und verfolgen diese Funktion bereits. Nach ein paar Versuchen, Hängen und Erröten finden wir die Schuldlinie ...



Ja Ja. Alles stirbt, während Register auf dem Stapel gespeichert werden. Gleichzeitig ist links zu sehen, dass SP 0x200030A0 ist. Wir sehen uns die Dokumentation für den Controller an:



Mal sehen, welches Fenster für SRAM zugeordnet ist:



Alles ist richtig. Der Stapelzeiger (SP) liegt im zulässigen Bereich. Also, was ist schuld? Versuchen wir, den SP-Wert frech durch 0x200030A0 zu ersetzen, beispielsweise durch 0x200020A0, da der Debugger dies zulässt ... Chpok! Das Hängen an der angegebenen Leitung hat aufgehört! Unser Speicherchip ist also nicht 20 Kilobyte groß. Und wie viel? Nach mehrmaliger Überprüfung stellen wir fest, dass der letzte Arbeitswert von SP 0x20002800 ist. Das sind 10 Kilobyte. Dies entspricht dem STM32F103C6-Kristall. Vor uns liegt eine gesägte Mikroschaltung. Leider.

Alles wäre in Ordnung, aber die Bretter aus dieser Charge in meiner ziemlich großen Schachtel sind leicht zu unterscheiden. Sie haben eine spezielle Farbe von Pullovern und eine sehr schöne Smaragd-LED (der Rest hat einen weniger angenehmen Grünton). Daher können sie leicht aus dem Haufen anderer Boards zugeordnet werden. Natürlich habe ich sie überprüft. Natürlich wurde die ganze Party gekürzt (ich habe ein Dutzend genommen).

Was damit zu tun ist, ist nicht klar. Als ich drei Teile in einem Dutzend Boards bekam, die keinen regulären Test hatten: Die LED blinkte nicht (also überprüfe ich sie jetzt nicht selektiv, sondern vollständig), verbrachte ich eine Woche damit, den Verkäufer zu stoßen. Er "machte den Narren an." Ständig interessiert an dem, was ich tun möchte, versprochen, mit Rat zu helfen. Und ich wiederholte ihm immer wieder, dass ich mich dumm an die Stromversorgung angeschlossen habe, sieben Boards blinzeln ein Auge, drei - nein. Sie sind also tot. Und er hat wieder seine Drehorgel. Und so eine Woche. Aber da war alles offensichtlich. Hat den Mitarbeitertest nicht bestanden. Hier besteht der Vollzeit-Test, es wird nicht viel Speicher benötigt. Wie man beweisen kann, dass eine Fälschung kam, ist nicht klar. Und wenn Sie es beweisen können, müssen Sie trotzdem nach den Regeln von Ali Express die Ware zurückschicken. Im Allgemeinen sieht alles nach Hoffnungslosigkeit aus. Und vor allem hatte der Endverkäufer keine böswillige Absicht. Ich nahm ihm später eine weitere Charge ab. Dort ist alles gut. Er selbst wurde enttäuscht.

Auf die eine oder andere Weise informiere ich die Öffentlichkeit darüber. Überprüfen Sie die Boards nicht nur auf ihre Gesamtleistung, sondern auch auf die tatsächlichen Spezifikationen. Es stimmt, was mit einer Nichtübereinstimmung zu tun ist, ist nicht klar.

Der Artikel hat einen weiteren praktischen Vorteil. Es zeigt, wie Sie schnell den Grund finden können, warum die Karte plötzlich nicht mehr funktioniert, wenn es nicht um die vollständige Inoperabilität des Controllers geht (sie antwortet über den SWD-Debug-Port).

Source: https://habr.com/ru/post/de459136/


All Articles