ARM Cortex M0/M4 Simulator für Windows

#1
Hallo allerseits,

ich suche derzeit nach einem ARM Cortex M0 oder M4 Simulator für Windows. Nach ein paar Anläufen bei google, konnte ich jedoch keinen finden. (Nur für Linux)

Kennt da jemand zufällig was? :)
 
#3
Moin,

die beste Info scheint dies hier zu sein: Free ARM Cortex-M3 Simulation Software? | ARM Connected Community

Alternativ benutze BSD/Linux in einer VM und emuliere dort.

PS: Wenn das ein Freizeitprojekt ist, steige lieber auf AVR Chips um - da hat man es wesentlich leichter ;)
Hallo und vielen Dank für die Mühe,
es ist leider kein Freizeitprojekt :( Ich schreibe meine mathematische Masterarbeit interdisziplinär in der Informatik über kryptographische Pairing auf einem ARM Cortex M4. Ich muss dazu auch sagen, dass ich bzgl. C-Programmierung keine nennenswerte Erfahrung habe und auch sonst noch nicht mit solchen Dingen arbeiten musste.

Da mir die Hardware zwar gestellt wird, es mir aber empfohlen wurde auf einer Simulationssoftware zu arbeiten, suche ich entsprechend diese. Die Hürde "wie packe ich das auf die Hardware" und "wie kann ich mir die Ergebnisse ausgeben lassen" und "wie benchmarke ich das überhaupt" stehen mir noch, neben der Implementierung, bevor.

Ich habe mir nun Ubuntu installiert (was mir optisch und funktional wesentlich besser als Windows gefällt) und muss auch leider hier sagen: Jede Software, die ich für Linux ausgewiesen sah, ist ein *.exe-Installer :(

Ich gehe mal deinen Link durch und gucke, was ich damit machen kann. Kennst du eine Seite, die mich anhand von Miniprojekten durch die Grundlagen von C führt? Ich verfüge noch über ein rudimentäres Wissen in Java, dass seit 5 Jahren unangetastet in der Versenkung schläft. :D

Viele Grüße und vielen Dank
 

Chromatin

Moderator
Mitarbeiter
#4
Moin,

also wenn du die Hardware hast, würde ich dir wirklich empfehlen auch darauf zu arbeiten. Ich nehme an, du hast dann einen STM32 auf irgendeinem Developer Board - vielleicht sogar mit einem ISP Programmer?

Ausgaben bekommst du relativ leicht via UART hin. Was deine C Skills angeht, haste wohl noch was vor dir. Ich kann dir da lediglich "Kryptografie mit C und C++" empfehlen (Welschenbach). Für C im allgemeinen gibt's ja jede Menge Tutorials. Allerdings würde ich da schon speziell nach ARM Code gucken denn wir haben auf den MCs eher selten die GNU Standardlibs für C zur Verfügung ;)

Poste doch mal dein Board, Programmer und ggf. IDE, dann wirds vielleicht konkreter.
 
#5
Moin,

also wenn du die Hardware hast, würde ich dir wirklich empfehlen auch darauf zu arbeiten. Ich nehme an, du hast dann einen STM32 auf irgendeinem Developer Board - vielleicht sogar mit einem ISP Programmer?

Ausgaben bekommst du relativ leicht via UART hin. Was deine C Skills angeht, haste wohl noch was vor dir. Ich kann dir da lediglich "Kryptografie mit C und C++" empfehlen (Welschenbach). Für C im allgemeinen gibt's ja jede Menge Tutorials. Allerdings würde ich da schon speziell nach ARM Code gucken denn wir haben auf den MCs eher selten die GNU Standardlibs für C zur Verfügung ;)

Poste doch mal dein Board, Programmer und ggf. IDE, dann wirds vielleicht konkreter.
Das werde ich machen, sobald ich die Randbedingungen selber kenne :D
Ich habe heute nach einer Preisliste angefragt, damit ich die Hardware in Vorauslage ordern kann, um der Wartezeit der Verwaltung aus dem Weg zu gehen...
Ich vermute aber, dass mein Betreuer derzeit nicht in D ist und daher erst wieder antwortet, wenn er zurück ist.
Das empfohlene Buch werde ich mir besorgen. Ich habe hier noch zwei Exemplare von "Applied Cryptographie" von Schneier rum liegen. (2 Exemplare daher, da ich erst später gecheckt habe, dass "Angewandte Krypto" die deutsche Version von "Applied Crypto" ist :D, war mein erstes Semester in der Uni als ich mir die Bücher gekauft hatte..)
 
#6
Hey, es wird ein STM32M4 sein. Ich habe heute das empfohlene Buch erhalten und habe in den letzten Tagen ein wenig mit C angefangen.

Ich stehe vollständig am Anfang der Sprache. Habe noch keine Seite gefunden, die mir eine Übersicht über alle Befehle, die Syntax und Beispiele liefert. Ähnlich wie php.net. Auch weiß ich nicht so recht, welche Bibliotheken existieren und welche Funktionen bereit gestellt werden.

Mathematisch ist mein Projekt keine Herausforderung.
 

Chromatin

Moderator
Mitarbeiter
#7
Da würde ich direkt auf ein C-Buch für Microcontrollerprogrammierung umsteigen, denn das komplette Adressierungsthema und die "Bedienung" der Pins und Ports ist Controllerspezifisch und hat mit C als solches nix zu tun.

Gutes Zeug und eine gute IDE (Sisys3)(gibts bei myavr.de - ist jedoch Geschmackssache.

Ansonsten kann ich dir noch das Board mikrocontroller.net wärmstens empfehlen :) Da hats auch eine ganze Reihe sehr hochwertiger Texte.
 
#8
Da würde ich direkt auf ein C-Buch für Microcontrollerprogrammierung umsteigen, denn das komplette Adressierungsthema und die "Bedienung" der Pins und Ports ist Controllerspezifisch und hat mit C als solches nix zu tun.

Gutes Zeug und eine gute IDE (Sisys3)(gibts bei myavr.de - ist jedoch Geschmackssache.

Ansonsten kann ich dir noch das Board mikrocontroller.net wärmstens empfehlen :) Da hats auch eine ganze Reihe sehr hochwertiger Texte.
Vielen Dank für die Infos :)
Ich habe ja noch gar keine Ahnung, wie so ein Mikrocontroller strukturiert ist und wie dort die Programmierung erfolgt. Ich weiß nur soviel, dass ich wohl eine Floatingpoint-Unit habe und für meine Rechnungen über den endlichen Körper F_p bzw. F_{p^{12}} nicht brauche. Daher stand die Idee im Raum, dieses zu "missbrauchen". Hast du darüber irgendwie eine Ahnung?

Ich gehe gerade die Liste auf Buchempfehlungen - Mikrocontroller.net durch. Vielleicht bestelle ich mir hier noch ein passendes Buch. (Vermutlich wird es direkt die erste Empfehlung sein..) Ich habe weiter unten ein Buch mit Bascom gelesen. Mit diesem Programm hatte ich auch bereits programmiert. Ich habe hier sogar so einen Roboterbausatz rumliegen. (Den hatte ich mir vor 3 Jahren zu Weihnachten gewünscht, aber seither keine Zeit gehabt überhaupt die Lötpunkte richtig zu setzen :( )

Im Punkto Microcontroller stehe ich irgendwie vor einer Mauer ohne Tür. Ich suche noch nach einem Einstieg, wo ich den Microcontroller vollständig erklärt bekomme. D.h. wie muss ich mir die Architektur vorstellen, was macht welches Bauteil, wie arbeitet der Prozessor, wie sieht es mit der RAM und cache-Verwaltung aus? (Nebenbemerkung: Ich bin kein Informatikstudent und hatte auch mit Rechnerarchitektur und co. nichts zu tun. Ich bin Grundlagenmathematiker mit Vertiefung in der Kryptographie, Zahlentheorie und der dazugehörigen Algebra)

Dank der projecteuler Seite habe ich nun ein wenig C-Erfahrung sammeln können.


Edit://
Die Buchempfehlungen lasse ich erstmal außen vor. Die Seite hat eine STM32 Sektion. Dort lese ich mir erstmal ein paar Dinge durch.
 
Zuletzt bearbeitet:

Chromatin

Moderator
Mitarbeiter
#9
Im Punkto Microcontroller stehe ich irgendwie vor einer Mauer ohne Tür. Ich suche noch nach einem Einstieg, wo ich den Microcontroller vollständig erklärt bekomme.
Das ist ja das schoene an den Dingern - sie sind EINFACH :)

Auf einem MC hast du alle wesentlich Komponenten eines Computers: Rechenwerk, Steuerwerk, RAM, "Cache" und notwendiges I/O ist direkt in den Chip integriert. Bei den meisten Modellen hast du sogar den Schwingquarz mit im Chip, sodass man die Teile lediglich mit Spannung versorgen muss. Ein A/D Wandler ist ebenso meistens mit dabei.

Über Speicheradressen adressierst du direkt die Pins - also die kleinen Drahtbeinchen - und kannst von extern Signale abgreifen oder geben.

Und auf den Dingern laufen meistens keine Betriebssysteme obschon es sowas gibt.

Bei deinem angekündigten Typ kannste mit den gleichen Datentypen arbeiten, wie auf einem normalen 32Bit PC und die FPU ist fest integriert.
Die FPU wird mit bestimmten Flags aktiviert und dann kannst du drauflos coden. Die FPU übernimmt bei Bearbeitung von FP Operationen automatisch die Rechenarbeit.

Als Buch würde ich dir eher dieses empfehlen: AVR Mikrocontroller - Programmierung in C von Heimo Gaicher - Fachbuch - buecher.de

Das ist ein beliebtes Standardwerk.
Und die Bücher von myavr sind auch richtig gut (auch wenn etwas teurer)
myAVR Mikrocontroller-Shop - mySTM32 Lehrbuch \ Komplettpakete, Software, Literatur

Allerdings wirst du bei deinem Projekt wohl damit auskommen, wenn du weisst, wie man die Dinger anschliesst (ISP Programmer) und irgendwie Daten irgendwohin sendest.
 

Chromatin

Moderator
Mitarbeiter
#11
Ich kenne das Buch selbst nicht. Für gewöhnlich liegt ein ein gutes "Cookbook" aber auf einem gehobenen Niveau mit wenig Erklärung einzelner Aspekte.
 
#12
Ich kenne das Buch selbst nicht. Für gewöhnlich liegt ein ein gutes "Cookbook" aber auf einem gehobenen Niveau mit wenig Erklärung einzelner Aspekte.
Guter Hinweis, habe noch nie ein "Cookbook" verwendet. Aber macht auch irgendwie Sinn, dass hier keine sonderlichen Grundlagen geklärt werden. Im regulären "Kochbuch" stehen ja idR auch keine Grundlagenhinweise ( Definitionen von Prise und co. ;) ) Ich werde mal gucken, was unsere lokale Bibliothek so zu bieten hat und mal in die genannten Bücher reinstöbern. Vlt genügt ja eine Leihgabe vorerst. Gefällt es mir so gut, dass ich es als Nachschlagewerk weiter verwenden will, werde ich wohl ein Exemplar erwerben. :)

Ich habe übrigens das C/C++ Kompendium sehr günstig erworben. Ich denke, dass dies ein gutes Nachschlagewerk ist.

Edit: Ich überlege mir auch selber ein STM32F4 zuzulegen. Dazu habe ich bei eBay dieses DiscoveryBoard gefunden: 272405771367 (Nummer bei ebay einfügen) brauche ich noch mehr Zubehör, um die Programmierung zu starten? Alternativ als deutscher Anbieter: STM32F47G-DISC1 | STMicroelectronics Entwicklungsplatine STM32F4, ARM Cortex M4 4, STM32 | STMicroelectronics

Auch würde ich gerne eine einfache XOR-Schaltung auf einem Steckbrett nachbauen. Welche Teile benötige ich dafür? Bei Amazon hätte ich mir zunächst dieses Steckbrett gekauft: Neuftech MB 12 Breadboard Kit - 83 Breadboard: Amazon.de: Elektronik
und als Zubehör vermutlich diese beiden Pakete.
- ETT Steckbrucken-Set, 14-teilig: Amazon.de: Elektronik
- LAOMAO Electronic Parts Pack KIT for ARDUINO component: Amazon.de: Computer & Zubehor

Ich würde gerne eine einfache Block- oder Stromchiffre oder Schieberegister nachbauen und würde gerne wissen, welche Teile ich für sowas benötige.
 
Zuletzt bearbeitet:
#13
Nochmal eine Antwort, um Dich auf das Thema aufmerksam zu machen.

Ich würde gerne hardwarebasiert ein wenig Kryptographie betreiben. (Ungeachtet meines anstehenden Projektes möchte ich mich ein wenig mit der E-Technik auseinader setzen.) Daher versuche ich mir gerade ein passendes Einsteigerset zusammen zu stellen. (Bei reichelt gibt es ja auch so einiges)
Bislang bin ich darauf durch AND, OR, NAND, NOR, XOR, XNOR, NOT platinenschaltung - Mikrocontroller.net aufmerksam geworden.

Welche Bauteile benötige ich, um erstmal eine einfache XOR-Schaltung zu realisieren? Möchte ich dies nun in ein Schieberegister erweitern benötige ich wieder neue Teile. Mein Ziel ist es Strom- oder Blockchiffren damit nachzubauen. (Jedenfalls geeignete) Kennst Du dich hiermit aus? Hast Du da einen Überblick?

Über Amazon hatte ich mir ein großes Paket zusammen gestellt, für ca. 30-40€. Aber das ist alles recht wirr und nicht wirklich zielführend. Eine gute Grundausstattung mit einer notwendigen Abgrenzung zu meinem "Projekt" hätte ich gerne.
 

Chromatin

Moderator
Mitarbeiter
#14
Ich würde gerne hardwarebasiert ein wenig Kryptographie betreiben.
Du kannst dir auch rein Hardwaretechnisch solche Schaltungen bauen - dafür brauchste nur ausreichend Transistoren und viel Erfahrung ;)
Aber für einen echten Zweck ist das nix.

Wenn du mit Microcontrollern anfangen willst, brauchst du:

- Einen Microchip (Atmega88 ist prima, schwingt selbst bei 8Mhz)
- ein Breedboard
- Stromversorgung 5V. Idealerweise baust du einen Spannungsregler mit dem Chip LM7805 auf, denn die Dinger reagieren sehr empfindlich auf Spitzen
- Einen Programmer: Ich empfehne den AVR Dragon
- eine Entwicklungsumgebung

Das teuerste ist der Programmer..die Chips gibts günstig.

Damit kannst du zumindest schonmal loslegen.
 
#15
Du kannst dir auch rein Hardwaretechnisch solche Schaltungen bauen - dafür brauchste nur ausreichend Transistoren und viel Erfahrung ;)
Aber für einen echten Zweck ist das nix.

Wenn du mit Microcontrollern anfangen willst, brauchst du:

- Einen Microchip (Atmega88 ist prima, schwingt selbst bei 8Mhz)
- ein Breedboard
- Stromversorgung 5V. Idealerweise baust du einen Spannungsregler mit dem Chip LM7805 auf, denn die Dinger reagieren sehr empfindlich auf Spitzen
- Einen Programmer: Ich empfehne den AVR Dragon
- eine Entwicklungsumgebung

Das teuerste ist der Programmer..die Chips gibts günstig.

Damit kannst du zumindest schonmal loslegen.
So einen Atmega8 habe ich hier sogar noch rumliegen. War in so einem Bausatz von Arduino enthalten. Ich wollte das gerne auf einem Steckbrett machen, da ich mir hier die Löterei ersparen kann und somit (zeit-)effizienter arbeiten kann.

Zur reinen Hardwarearbeit: Steckbrett, "Leitungen", Schalter, Transistoren? (Was ein Transistor ist, weiß ich zum Glück. Ich habe nur immer Probleme damit mir die genauen Namen zu merken. Funktionsweisen finde ich leichter.)

Soweit ich mit erinnere ist ein Transistor in drei Schichten (Tripol?) aufgebaut. Anode, Katode und Neutral. Gemäß der eingehenden Spannung (ob an Katode oder Anode angeschlossen) wird die Ausgangsspannung festgelegt. Damit ist solch ein Transistor als XOR Element gut brauchbar. (generell als logisches Element) Ich habe ein rudimentäres Grundwissen in der Elektrotechnik erworben durch das Basteln an Autos und einem sehr frühen (8 Jahre)- nicht geförderten - Interesses an elektronischen Teilen.
 

Chromatin

Moderator
Mitarbeiter
#16
Damit ist solch ein Transistor als XOR Element gut brauchbar.
Auf unterster Hardwareebene gibt es kein XOR "Element". Eine XOR Operation besteht in seiner inneren Logik aus AND und OR, sowie Schaltungen, die Negierungen erlauben.

Auf Hardwareebene würdest du also einen XOR Baustein bauen, welcher wiederum aus der für ein XOR nötigen AND/OR Logik besteht.

Hier hast du eine simple XOR Schaltung auf Hardware:
Elektronik-Projekte - Exclusiv-ODER mit Transistoren

Mit dem Dingen kannste theoretisch schon one-time Pad Krypto machen, wobei man mit Stift und Papier wohl schneller ist ;)

Du koenntest dir natuerlich eine rein analoge Einspeisung eines Binärstreams zusammenbasteln, zb als eine Art Lochstreifen. Dafür brauchste eigentlich nur einen kleinen Motor um das band gleichmässig irgendwo durchzufahren.
Die "Bits",, die als Loch dargestellt werden, kannst du ueber einen Phototransistor - oder noch simpler - über eine verkehrt herum eingebaute Leucht-Diode erkennen (verkehrt herum eingebaut induzieren sie einen schwachen Strom wenn sie angeleuchtet werden, welcher sicher über Transistoren verstärken lässt. So kann die als "Lichtmesser" funktonieren).
Das wäre also insgesamt ein realistisches Bastelprojekt.

Und hier nochmal ein WIKI zum XOR Gatter:
XOR-Gatter – Wikipedia

Soweit ich mit erinnere ist ein Transistor in drei Schichten (Tripol?) aufgebaut. Anode, Katode und Neutral.
In der Technik spricht man vom Basis-, Emitter- und Kollektor Anschluss (C,B,E). "Neutral" ist ein Begriff aus der Physik. Näherungsweise wäre das also Masse, also Minus ("Kathodenseitig").

Dass der Strom in Wirklichkeit anders herum fließt, muss man bei all dem Zeug vergessen ;)
 

Chromatin

Moderator
Mitarbeiter
#18
Man kann in der FPU beliebige Werte/Arrays speichern und sie später wieder aus der FPU laden?
Die FPU ist eine eigene Prozessoreinheit. Die gibt es als eigene Chips oder sie sind fest in anderen Chips integriert. Diese Chips konnten idr. sehr breite Register verarbeiten, während man bei reinen Softwarelösungen mit komplizierten Konstruktionen und Overlays arbeiten musste um große Zahlen bzw. Nachkommastellen abzubilden oder damit zu rechnen.

Der Zugriff auf solche FPUs erfolgt über Register, bzw. die CPU entscheidet selbst wann eine Operation an eine FPU uebergeben werden muss.

Mein Cortex M4 wird vermutlich eine FPU haben. Diese könnte ich bestimmt als "RAM-Erweiterung" missbrauchen?
Nein.


Wenn du so deep auf den Dingern Coden willst, solltest du dir dringend entsprechende Literatur reinziehen ;) Das alles ist etwas anders und "direkter" als auf einem PC zu programmieren, wo man es eigentlich nur mit Kernel-APIs und Syscalls zu tun hat.
 
#19
Ok, dann werde ich mich da erstmal genauer belesen, sobald der CPU exakt feststeht.

Ich soll im rahmen meines Exposés Vorschläge für notwendige Hardware machen. Aber bei der Angebotsauswahl wird einem ja schwindelig.

Schon alleine die Informationen für dieses Board ( STM32F47G-DISC1 | STMicroelectronics Entwicklungsplatine STM32F4, ARM Cortex M4 4, STM32 | STMicroelectronics ) sind groß und zeigen eine unglaubliche Auswahl.
Die Discovery-Platine basiert auf der STM32F407VGT6.
Hier habe ich auf anderen Seiten von noch weitere Modellen gelesen. Was hier die Vorteile der einzelnen sind und ob diese Vorteile für mich überhaupt relevant sind, kann ich derzeitig nicht ausmachen.


Weiter:
Die STM32F405, STM32F407, STM32F415, STM32F417 Produktfamilien von Mikrocontrollern (MCUs) basieren auf dem 32-Bit Hochleistungs-ARM Cortex-M4-RISC-Kern, der mit einer Frequenz von bis zu 168 MHz arbeitet.
zeigt mir, dass hier viele verschiedene Prozessoren existieren. Ich finde dazu aber keine geeignete Auflistung von Unterschieden, sodass ich sinnvoll abwägen kann, was ich benötige.

Einzige Information, die für mich in der Entscheidungstreffung wichtig sein könnte:
Die STM32F415, STM32F417 Geräte verfügen über eine zusätzliche kryptografische Beschleunigungszelle.
(Das sind zunächst nur die Informationen auf der verlinkten Verkaufsseite)

Auf der Seite von STM ( STM32F4 Series - STMicroelectronics ) ist so viel zu finden. Laut den Informationen auf der Verkaufsseite würde für mich wohl der STM32F417 in Frage kommen. Jedoch ist auf der STM Seite nichts von dem Kriptobeschleuniger notiert. :rolleyes:

Ich finde auch nicht wirklich ein Paper dazu, wo die Modelle vollständig vorgestellt werden. (Vermutlich durch Unwissen :( )

Hast du hier einen Ratschlag für mich? Ich muss ein wenig ECC, modulare Exponentiation und Geraden-/Punktberechnungen anstellen. (Thema: Pairings) Welchen MPU würdest du mir empfehlen?
Ich werde aller Voraussicht mit Eclipse arbeiten. Evtl. kann ich auf Windows / Linux + Wine eine Simulation ( STM32 CooCox Installation – Mikrocontroller.net ) durchführen. Aber auch hierfür sollte der MPU explizit gewählt werden.

Viele Grüße und vielen Dank!
 

Chromatin

Moderator
Mitarbeiter
#20
Hast du hier einen Ratschlag für mich? Ich muss ein wenig ECC, modulare Exponentiation und Geraden-/Punktberechnungen anstellen. (Thema: Pairings) Welchen MPU würdest du mir empfehlen?
Soweit du keine anderen Ansprüche hast, klingt das für mich erstmal so als wenn dein MC eine FPU bräuchte. Ich selbst arbeite bisher nur mit 8Bit MC von Atmega, deswegen kann ich dir zu STM Developer Boards nicht viel sagen.

Wenn du von Elektronik etwas Ahnung hast, brauchste (wie schon von mir erwaehnt) nur den Chip, etwas um die Eingangsspannung zu pegeln und einen Programmer (JTAG oder ISP). Dazu ein Breedboard und diverse LEDs, Widerstände und Stecker, um zb eine Serielle Schnittstelle anzusteuern. Ggf. Schwingquarze um den Chip höher zu takten.

Wenn du davon keinen Plan hast, gönn dir ein Lernpaket, du kannst die Chips durch falsche Programmierung/Beschaltung auch zuknödeln, sodass du die wegwerfen musst. Ich selbst habe seinerzeit mit einem Paket von myavr angefangen und damit eine ganze Menge gelernt. Mittlerweile brauche ich keine Entwicklerboards mehr sondern kann meine Boards, Motortreiber, Pegelwandler, Sensoren etc. komplett selbst bauen (ich baue einen Roboter der sich anhand von GPS orientiert und mal eine automatisierte Metallsucheinheit werden soll, die ich dann hier auf dem Land einsetzen will :D ).

Für die STM Reihe wäre hier ein solches Paket
myAVR Mikrocontroller-Shop - Systemvoraussetzungen für SiSy AVR

Ist nicht ganz günstig, aber das Material ist sehr gut und wenn du dich darin bilden willst, ist das kein schlecht investiertes Geld.
 
Oben