Hallo, ich habe für meinen FPGA einen kleinen Microcontroller geschrieben. Jetzt wollte ich ein kleines Programm schreiben, welches für den Ablauf des Mikrocontrollers zuständig ist. Es stehen 16 Maschinenbefehle zur Verfügung. Zum Beispiel JMP entspricht dem HEX Wert 7. Mit welchem Programmiersoftware könnte ich ein Programm schreiben? Wie kann ich sicherstellen dass die Programmiersoftware meine Befehle richtig umwandelt? Danke für Eure Hilfe.
Du suchst also einen Assembler. Den solltest Du mit jeder gängigen Programmiersprache schreiben können. Es empfiehlt sich eine Sprache zu verwenden, wo schon diverse Parserbilbiotheken verfügbar sind, um das Rad nicht neu zu erfinden. Um zu checken, ob alles richtig gemacht wird, gibt es das Konzept der Testbenches. (http://en.wikipedia.org/wiki/Test_bench) Rick
Hi, gibt es auch fertige Assembler bei denen ich angeben kann, wie der Assembler das Mnemonics in eine Hexadezimale Zahl umwandeln soll? (Z. B. Jmp => 7) Wenn ja, wo finde ich die? Danke
Ich fürchte da mußt Du selber ran. Eventuell findest Du an Universitäten etwas dokumentiertes/quelloffenes. Die Quellen zu avr-as oder sdcc dürften auch recht interessant sein, sind aber bestimmt nicht trivial. Etwas einfacher dürfte der picoblaze-Assembler sein (ftp://ftp.icarus.com/pub/eda/pbasm). Rick
Bei einem Compiler hast du einen Lexer und eine Parser der den Source Code bearbeitet. Für deinen kleinen Microcontroller könntest du eine Scriptsprache nehmen. Damit kannst du in der Regel schneller ein Ergebnis erreichen. Python hat ein parsing module, dass recht elegant ist. http://pyparsing.wikispaces.com/ Damit kannst du deinen Source Code parsen, Fehler behandeln und dann in hex code umsetzen. Eine Scriptsprache ist auch sehr gut um die Ausgabe anzupassen. Eine Möglichkeit ist ja den Hexcode direkt in VHDL oder Verilog mit einzubinden.
@alban Ja ich möchte dann diesen Hexcode direkt in vhdl einbinden. Leider habe ich noch nie was mit einer Skriptsprache gemacht. Ist das einfach? Habe bisher nur ein bisschen C Programmierung gemacht.
@HI Die Syntax ist sehr ähnlich, teilweise einfacher. Auch muss das Program nicht immer erst Compiliert werden, sonder kann direkt gestartet werden. Kleines Beispiel:
1 | printf("Hello World\n"); |
In Python:
1 | print "Hello World" |
Großer Vorteil der Scriptsprache ist das es dynamische Speicherverwaltung bietet. Du musst also nicht erst mit malloc Speicher zur Verfügung stellen. So kann z.B. ein String ganz einfach erweitert werden:
1 | meinString = "Hello" |
2 | meinString += " World" |
3 | print meinString |
4 | |
5 | >>Hello World |
Der String kann natürlich auch ganz einfach in eine Datei geschrieben werden. Das Problem hier ist die Art und Weise zu verstehen wie das Parsing funktioniert.
Man kann auch eine Scriptsprache direkt verwenden, ohne einen eigenen Parser zu schreiben. Dadurch bekommt man Funktionalität wie Makros, Berechnung von komplexen konstanten Ausdrücken usw. ohne Aufwand "kostenlos" dazu. Hier findest du ein Beispiel wie man einen Assembler in Ruby implementieren kann: Beitrag "Re: 16-bit Mikroprozessor"
Diese kleinen Aufwaende lassen die Leute ueblicherweise fertige Cores verwenden. Dann weiss man, dass der ASM und allenfalls ein Compiler schon passt.
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.