Forum: Mikrocontroller und Digitale Elektronik STM32 Simulation


von Christoph K. (chriskuku)


Lesenswert?

Gibt es gute (und preiswerte) Lösungen, um STM32 Projekte - 
möglicherweise innerhalb STM32CubeIDE zu simulieren? Ich stieß auf Wokwi 
und Proteus.

von Nemopuk (nemopuk)


Lesenswert?

Wozu soll das gut sein, ohne die Hardware drumherum?

von Christoph K. (chriskuku)


Lesenswert?

Nemopuk schrieb:
> Wozu soll das gut sein, ohne die Hardware drumherum?

Simulation ist ein nützliches Element des Design Workflows. Wer eine 
solche Frage stellt, disqualifiziert sich selbst

von Frank K. (fchk)


Lesenswert?

Genau.

Algorithmen und andere Codeteile, die keinen Zugriff auf die Peripherie 
brauchen, kannst Du genauso nativ auf einem Pi oder einem Olimex 
Olinuxino oder Beaglebone entwicklen. Für alles andere brauchst Du eh 
die reale Hardware und einen - idealerweise schnellen - Debugger. Da ist 
der STLINK V3 mit seiner High-Speed USB-Anbindung und dem STM32F7 schon 
nicht schlecht - vor allem für den Preis.

Wenn Du mehr brauchst, gibts ETM, die Embedded Trace Macrocell.
Das hier ist z.B. die Version für Cortex M7:
https://developer.arm.com/documentation/ddi0494/d/?lang=en

Die größeren STM32 haben die natürlich auch. Die Events kommen aus einem 
Interface mit 4 Bit Datenbus plus Clock raus. Dafür hat ARM einen 
20-poligen Steckverbinder im 0.05" Raster definiert, der SWD/JTAG und 
ETM kombiniert und eine Erweiterung des 10-poligen Cortex 
Debug-Connectors ist.

https://documentation-service.arm.com/static/5fce6c49e167456a35b36af1

Dafür brauchst Du dann einen JTrace Pro oder ULink Pro. Nicht ganz 
günstig.

fchk

von 900ss (900ss)


Lesenswert?

Mit QEMU sollte die Simulation möglich sein.

Edit: siehe
https://www.qemu.org/docs/master/system/arm/stm32.html

: Bearbeitet durch User
von Martin S. (strubi)


Lesenswert?

Ich werfe mal noch `renode` rein. Basiert im Grunde auf 
qemu-Technologie, es ist nur deutlich einfacher, virtuelle Hardware fuer 
die eigene Firmenplattform ranzuflanschen.

von Cyblord -. (cyblord)


Lesenswert?

Christoph K. schrieb:
> Simulation ist ein nützliches Element des Design Workflows. Wer eine
> solche Frage stellt, disqualifiziert sich selbst

Nicht im Embedded Umfeld. Solche Controller werden selten Simuliert.

Wenn dann werden einzelne Algorithmen simuliert, hat dann aber mit dem 
Controller selbst nichts zu tun.

: Bearbeitet durch User
von Jan K. (jan_k776)


Lesenswert?

Cyblord -. schrieb:
> Christoph K. schrieb:
>> Simulation ist ein nützliches Element des Design Workflows. Wer eine
>> solche Frage stellt, disqualifiziert sich selbst
>
> Nicht im Embedded Umfeld. Solche Controller werden selten Simuliert.
>
> Wenn dann werden einzelne Algorithmen simuliert, hat dann aber mit dem
> Controller selbst nichts zu tun.

Das stimmt nicht (mehr). Simulation und Emulation sind stark auf dem 
aufsteigenden Ast. Renode wurde schon genannt, ARM liefert mit ihren 
lizenzierten Compilern ebenfalls Simulatoren mit siehe 
https://www.arm.com/products/development-tools/simulation/fixed-virtual-platforms, 
und Correlium hat virtuelle Modelle für komplette embedded Systeme, 
siehe https://www.corellium.com/

Ziel: Test und Validierung so schnell, so früh, so parallel, und so 
wenig wie möglich auf Hardware ausführen.

So wird das heutzutage gemacht…

von Martin S. (strubi)


Lesenswert?

Cyblord -. schrieb:
> Nicht im Embedded Umfeld. Solche Controller werden selten Simuliert.

Und wie in Embedded. Gerade da erst recht, weil man oft ein OS/Programm 
gegen Hardware zyklengenau und signalecht simulieren koennen muss, um 
die korrekte Funktion vorab gegen simulierte Stimuli zu testen.
Frueher war das einfach recht teuer oder mit GPL infiziert, inzwischen 
nicht mehr.

Beispiele: Generelles Debugging/Tracing, Unitialisierte Register, 
Verhinderung von Seitenkanalattacken, Timingverhalten von 
Hardware-Steuerungen.
Wer jetzt schreit, das braucht's nur fuer SILx: Inzwischen kann man von 
jedem Lieferanten erwarten, dass er Code abliefert, fuer den er haften 
kann.

von Cyblord -. (cyblord)


Lesenswert?

Martin S. schrieb:
> Beispiele: Generelles Debugging/Tracing, Unitialisierte Register,

Fällt unter statische Codeanalyse und hat mit Simulation nichts zu tun.

> Verhinderung von Seitenkanalattacken, Timingverhalten von
> Hardware-Steuerungen.

Sehr schwer zu simulieren weil man das Peripherievehalten ebenfalls 
simulieren müsste.

> Wer jetzt schreit, das braucht's nur fuer SILx: Inzwischen kann man von
> jedem Lieferanten erwarten, dass er Code abliefert, fuer den er haften
> kann.

Niemand braucht Simulation oder gar STM32 Emulation für irgendein SIL.

Jan K. schrieb:
> So wird das heutzutage gemacht…

Macht halt keiner.

: Bearbeitet durch User
von 900ss (900ss)


Lesenswert?

Cyblord -. schrieb:
> Niemand braucht Simulation

Weshalb weißt du so sicher, dass das niemand braucht? Da bist du 
ziemlich auf dem Holzweg.
Das ist vielleicht für dich so. In mehreren Projekten habe ich die 
Simulation entweder von einzelnen SW-Blöcken oder auch vollständige 
Systeme simulieren dürfen und es war eine große Hilfe. Alleine schon 
weil man auf funktionierende HW nicht angewiesen ist. Es erleichtert 
wirklich vieles. Das waren alles Raumfahrt-Projekte. Und die 
funktionieren trotz Simulation ;)

Und für andere die das verwenden, ist das sicher auch eine große Hilfe 
und Erleichterung.

Wenn du es nicht für notwendig erachtest,OK. Aber dann erzähle hier 
bitte nicht, niemand braucht das. Damit wirst du unglaubwürdig.

Cyblord -. schrieb:
> Macht halt keiner.

Das ist wirklich an der Realität vorbei.
Mach dich mal schlau.

von Cyblord -. (cyblord)


Lesenswert?

900ss schrieb:
>> Niemand braucht Simulation

Das Zitat ist entstellt. Sowas macht man nicht.

900ss schrieb:
> oder auch vollständige
> Systeme simulieren dürfen

Welchen STM32 hast du dort simuliert bzw. emuliert?

: Bearbeitet durch User
von 900ss (900ss)


Lesenswert?

Cyblord -. schrieb:
> Welchen STM32 hast du dort simuliert bzw. emuliert?

Das ist völlig irrelevant, was für eine Architektur das ist. Das ist das 
schöne wenn man die Simulation gut macht und das SW Design gut ist
Wenn man Zyklen zählen muss, wird es schwieriger aber auch das sollte 
man beim Design schon vermeiden und geht meistens.

Cyblord -. schrieb:
> 900ss schrieb:
>>> Niemand braucht Simulation
>
> Das Zitat ist entstellt. Sowas macht man nicht.

Auch bezogen auf STM32 wird die (deine) Aussage nicht besser. Auch in 
den Bereichen, wo STM32 überwiegend eingesetzt wird, lässt sich 
Simulation gewinnbringend einsetzen.

Wie gesagt, das ist Architektur unabhängig. Sehr sehr oft jedenfalls.

Und auch Peripherie lässt sich inzwischen hilfreich (gut) simulieren.

: Bearbeitet durch User
von Cyblord -. (cyblord)


Lesenswert?

900ss schrieb:
> Cyblord -. schrieb:
>> Welchen STM32 hast du dort simuliert bzw. emuliert?
>
> Das ist völlig irrelevant, was für eine Architektur das ist.

Nun es geht im Thread um den STM32, steht sogar in der Überschrift.

> Auch bezogen auf STM32 wird die (deine) Aussage nicht besser. Auch in
> den Bereichen, wo STM32 überwiegend eingesetzt wird, lässt sich
> Simulation gewinnbringend einsetzen.

Lässt sich, hätte, könnte.

Ich habe das noch nie in typischen STM32 Embedded Projekten gesehen. Das 
wird schon irgendwo vorkommen, aber flächendeckend wird es halt nicht 
gemacht.

> Wie gesagt, das ist Architektur unabhängig. Sehr sehr oft jedenfalls.

Nur wenn man hardwareunabhängige Softwarestücke simuliert. Diese 
Anwendung habe ich weiter oben selbst beschrieben. Darum geht es hier 
aber nicht.
Hier geht es aber um explizite Simulation eines STM32. Wobei der TE zwar 
Simulation schreibt, in Wirklichkeit aber wohl Emulation meint.

: Bearbeitet durch User
von Bruno V. (bruno_v)


Lesenswert?

900ss schrieb:
> In mehreren Projekten habe ich die
> Simulation entweder von einzelnen SW-Blöcken oder auch vollständige
> Systeme simulieren dürfen und es war eine große Hilfe.

Wirklich nur aus Neugier: Was genau testest Du damit? Den Compiler, die 
Laufzeit des Codes? Also was genau von der Prozessor-HW. Und welche IO 
bzw. IO-Emulation hast Du dafür?

Bei den PICs habe ich das mit Assembler genutzt (ist eben nicht 
Plattform-unabhängig).

von 900ss (900ss)


Lesenswert?

Cyblord -. schrieb:
> Hier geht es aber um explizite Simulation eines STM32.

Gut wenn man auf Registerebene runter muss, wird es schwieriger. Nicht 
nur beim STM sondern generell.
Aber auch machbar. Der Aufwand ist halt irgendwann hoch und dann muss 
man schauen, ob es sich lohnt.

Und was du noch nicht gesehen hast, gibt es nicht? Ziemlich gewagt oder?

von Cyblord -. (cyblord)


Lesenswert?

900ss schrieb:
> Und was du noch nicht gesehen hast, gibt es nicht? Ziemlich gewagt oder?

Habe ich nicht geschrieben. Im Gegenteil: Ich schrieb das kann es 
durchaus irgendwo geben, aber ich Maße mir an sehr viele Embedded 
Projekte an verschiedenen Firmen mit STM32 gesehen zu haben. Und niemand 
hat dort auf Controllerebene simuliert und gar emuliert.

von 900ss (900ss)


Lesenswert?

Bruno V. schrieb:
> die Laufzeit des Codes

Kann man selbstverständlich schwer simulieren. Geht aber schon wenn der 
Simulator dafür gemacht ist. War es bei mir nicht. Es war nicht 
notwendig. Die SW war so designed, dass Laufzeiten großzügig genug waren 
und es gut funktionierte. Und trotzdem war es ein Echtzeit-System.

Es war nicht notwendig, die Prozessor-HW zu testen. Der wurde als 
funktionierend vorausgesetzt.

IO (Peripherie) Simulation wurde tatsächlich gemacht. Das Verhalten der 
verschiedenen Peripherie-Gruppen wurde simuliert (programmiert). Soweit 
"runter" dass auch die Protokolle z.B. auf einem MilBus1553 genutzt 
werden können weil der Controller dafür auch simuliert wurde.

Es ist viel Aufwand aber an Ende lohnte es sich. Die Simulation wurde 
sogar für offizielle Tests genutzt.
Das hat entgültige Systemtests auf der realen HW an Ende natürlich nicht 
ausgeschlossen.

Grundsätzlich hat Simulation auch Grenzen und ist kein Wundermittel. 
Aber sehr hilfreich.

von 900ss (900ss)


Lesenswert?

Cyblord -. schrieb:
> 900ss schrieb:
>> Und was du noch nicht gesehen hast, gibt es nicht? Ziemlich gewagt oder?
>
> Habe ich nicht geschrieben. Im Gegenteil: Ich schrieb das kann es
> durchaus irgendwo geben, aber ich Maße mir an sehr viele Embedded
> Projekte an verschiedenen Firmen mit STM32 gesehen zu haben. Und niemand
> hat dort auf Controllerebene simuliert und gar emuliert.

Das möchte ich nicht in Zweifel ziehen. Heißt aber auch nicht, dass das 
niemand macht. Ich kann das deswegen jedenfalls nicht ausschließen.

von Bruno V. (bruno_v)


Lesenswert?

900ss schrieb:
> Es war nicht notwendig, die Prozessor-HW zu testen. Der wurde als
> funktionierend vorausgesetzt.
>
> IO (Peripherie) Simulation wurde tatsächlich gemacht

Nur zur Klarstellung: War es ein Controller, dessen interne Peripherie 
getestet wurd? Oder habt Ihr externe IO und den Zugriff darauf emuliert 
oder simuliert? Das wäre natürlich nicht unüblich sondern oftmals 
hilfreich. Aber etwas anderes als ich den TO verstanden habe.

: Bearbeitet durch User
von Martin S. (strubi)


Lesenswert?

Cyblord -. schrieb:
> Martin S. schrieb:
>> Beispiele: Generelles Debugging/Tracing, Unitialisierte Register,
>
> Fällt unter statische Codeanalyse und hat mit Simulation nichts zu tun.
>

Nein. Weder Trace noch irgend eine Coverage kannst du mit SCA erledigen. 
Und die SCA hat in die Registerstruktur keine Einsicht.


>> Verhinderung von Seitenkanalattacken, Timingverhalten von
>> Hardware-Steuerungen.
>
> Sehr schwer zu simulieren weil man das Peripherievehalten ebenfalls
> simulieren müsste.
>

Genau das mache ich tagtaeglich und finde a) eine Menge Fehler in den 
Binaerlibraries von Dritten, b) beschleunigt es die die Entwicklung der 
Eigenanteile immens. Nennt sich auch Co-Simulation, da reale Software 
gegen virtuelle Hardware zyklengenau simuliert wird.
Kann eine Weiterbildung zum Thema renode und Verilator nur empfehlen.

von 900ss (900ss)


Lesenswert?

Bruno V. schrieb:
> Oder habt Ihr externe IO und den Zugriff darauf emuliert oder simuliert?

Das war es eher, also Simulation externer IO. Aber schon recht 
detailvertieft.

Bruno V. schrieb:
> Das wäre natürlich nicht unüblich sondern oftmals hilfreich.

Eben. Meine ich ja.

Bruno V. schrieb:
> Aber etwas anderes als ich den TO verstanden habe.

Das will ich jetzt nicht ausschließen. Aber da hier auch allgemeiner 
über Simulation geschrieben wurde, hab ich meinen Senf mal 
dazugeschrieben. Ich bin halt ein Freund davon :)

von Cyblord -. (cyblord)


Lesenswert?

900ss schrieb:
> Aber da hier auch allgemeiner
> über Simulation geschrieben wurde

Du meinst NACHDEM du das speziell auf STM32 bezogene Zitat so gekürzt 
hast, dass es allgemeine Simulation adressiert hat?

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.