Hallo allerseits! hab eine Frage an die µVision3-Profis: ich habe einen SoftCore-8051(oregano mc8051, frei zum download) zu implementieren. Um den SoftCore-8051 zu Verifizieren, gabs zum Softcore eine .asm-Datei, die mittels µVision3 simuliert werden soll. Anschließend müssen wohl die Ergebnisse der Simulation in eine .hex-Datei geschrieben werden, die dann mit den Ergebnissen der VHDL-Simulation verglichen werden. kann mir jemand bitte erklären, wie ich vorgehen muß. Ich kenne mich mit µVision gar nicht aus. Soll ich einen neuen Projekt starten, und den .asm-File dem Projekt hinzufügen? welche Einstellungen soll ich im "options for Target 'Target 1' tätigen? eine schrittweise Erklärung wäre super! die asm-Datei habe ich angehängt, eventuell kann jemand diese bei sich ausprobieren, und mich danach klüger machen, ich hoffe sehr auf eine baldige Antwort
Da weiss ich im Moment gleich viel wie du. Aber musst du das Ding denn unbedingt verifizieren? Wenn es ein Hobby-Projekt ist, kannst du ja einfach mal dein eigenes Programm auf dem Core ausführen und schauen, ob es macht, was es soll. Dann musst du es ja nicht unbedingt anhand von diesem ominösen Assembler-File testen.
so wie ich das sehe musst du dir bloß ein neues projekt mit startup code in µVision erzeugen, evtl im startup code kleine änderungen, Speicherbereich etc. vornehmen und deinen asm. code als inline assembler einfügen. dann kannst du simulieren und dir auch ein Hex. file erzeugen!
klausy wrote: > so wie ich das sehe musst du dir bloß ein neues projekt mit startup code > in µVision erzeugen, evtl im startup code kleine änderungen, > Speicherbereich etc. vornehmen und deinen asm. code als inline assembler > einfügen. dann kannst du simulieren und dir auch ein Hex. file erzeugen! danke für den Tip, Klausy! die Sache mit inline assembler leuchtet mir nicht ein, kenn mich da nicht aus, kannst du mir eventuell ein beispiel geben?
Hi, das mit µV3 ist relativ einfach. Ich beschreibe dir das jetzt mal für einen ganz normalen 8051er, unter der Voraussetzung, dass du intuitiv das µV3 soweit bedienen kannst, dass ich die Schritte nicht einzeln erklären muss (kann ich aber bei Bedarf machen) Du musst ein neues Projekt erzeugen, für einen "Generic 8051" als Device Type. Die Frage, ob der Standard StartUp-Code hinzugefügt werden soll, beantwortest du mit "Nein". Die ASM Datei fügst du in den Projektbaum (Fenster auf der linken Seite) hinzu. Der oberste Eintrag heisst normalerweise "Target1" oder so ähnlich. Der nächste Eintrag ist die aktuelle Datei-Gruppe (dient zum Gruppieren von Dateien, die für einen bestimmten Anwendungsteil sind, z.B. Display). Zum Hinzufügen Rechtsklick auf die Gruppe und "Add File to Group" wählen (Dateityp muss evtl. umgestellt werden). Wenn die ASM Datei für µV3 geschrieben ist, sollte es jetzt bereits möglich sein, ohne Fehler zu assemblieren/linken. Dann noch auf Debug/Simulate klicken, und der Simulator sollte starten. Dann musst du noch die Ergebnisse vergleichen. Du kannst die "Ergebnisse" der Simulation nicht in eine HEX-Datei schreiben. Eine Hex-Datei stellt normalerweise das Programm selbst dar. Das heisst, wenn du die gleiche Hex-Datei in deinen FPGA lädst, sollte der Controller idealerweise das gleiche machen, wie ein realer Controller bzw. die µV3-Simulation. Was du dann vergleichen kannst wäre z.B. ob Variablen im RAM den gleichen Inhalt haben oder ob der Timer einwandfrei läuft. Da deine ASM Datei leider nicht kommentiert ist, weiss ich nicht, was genau sie machen soll, hab leider keine Zeit, mir das jetzt anzugucken. Wenn's nicht klappt, einfach Bescheid sagen. Ralf
Das ist doch eine nachvollziehbare Antwort, vielen vielen Dank, Ralf !!! Ralf wrote: > Hi, > > das mit µV3 ist relativ einfach. Ich beschreibe dir das jetzt mal für > einen ganz normalen 8051er, unter der Voraussetzung, dass du intuitiv > das µV3 soweit bedienen kannst, dass ich die Schritte nicht einzeln > erklären muss (kann ich aber bei Bedarf machen) > > Du musst ein neues Projekt erzeugen, für einen "Generic 8051" als Device > Type. Die Frage, ob der Standard StartUp-Code hinzugefügt werden soll, > beantwortest du mit "Nein". kannst du mir sagen, warum der Standard StartUp-Code nicht zugefügt werden soll? > Die ASM Datei fügst du in den Projektbaum (Fenster auf der linken Seite) > hinzu. Der oberste Eintrag heisst normalerweise "Target1" oder so > ähnlich. > Der nächste Eintrag ist die aktuelle Datei-Gruppe (dient zum Gruppieren > von Dateien, die für einen bestimmten Anwendungsteil sind, z.B. > Display). > Zum Hinzufügen Rechtsklick auf die Gruppe und "Add File to Group" wählen > (Dateityp muss evtl. umgestellt werden). > > Wenn die ASM Datei für µV3 geschrieben ist, sollte es jetzt bereits > möglich sein, ohne Fehler zu assemblieren/linken. +1! > Dann noch auf Debug/Simulate klicken, und der Simulator sollte starten. > Dann musst du noch die Ergebnisse vergleichen. hab den Debugmodus gestartet, und dort "Run" ausgeführt. gibt es nun eine Möglichkeit, die Inhalte des Daten- bzw Programmspeichers anzuschauen? > Du kannst die "Ergebnisse" der Simulation nicht in eine HEX-Datei > schreiben. Eine Hex-Datei stellt normalerweise das Programm selbst dar. > Das heisst, wenn du die gleiche Hex-Datei in deinen FPGA lädst, sollte > der Controller idealerweise das gleiche machen, wie ein realer > Controller bzw. die µV3-Simulation. > Was du dann vergleichen kannst wäre z.B. ob Variablen im RAM den > gleichen Inhalt haben oder ob der Timer einwandfrei läuft. > Da deine ASM Datei leider nicht kommentiert ist, weiss ich nicht, was > genau sie machen soll, hab leider keine Zeit, mir das jetzt anzugucken. du hast ja recht, so ist es auch bestimmt gedacht worden. kannst du mir sagen, wo ich die die entsprechende .hex-Datei zum .asm-Programm finde? > Wenn's nicht klappt, einfach Bescheid sagen. > > Ralf
> kannst du mir sagen, warum der Standard StartUp-Code nicht zugefügt > werden soll? Ein kleines Beispiel, was der Startup-Code macht, wäre das Löschen des internen RAMs, sodass jede Zelle 0x00 enthält. Das ist für C-Code nötig, weil in C jede Variable anfangs immer den Wert 0x00 enthält, es sei denn, sie würde beim Deklarieren auch gleich initialisiert werden. Desweiteren wird dann noch der Stack initialisiert usw. Der Startup-Code wird automatisch an die Programmadresse 0x0000 geladen und ausgeführt, bevor main() ausgeführt wird. Du solltest den Startup-Code deswegen nicht verwenden, weil das von dir gezeigte ASM Programm so aussieht, als ob es das alles selbst macht. Ausserdem ist es ein ASM-Code, kein C-Code. Würdest du den Startup-Code verwenden, wirds wahrscheinlich Fehler von µV3 hageln. Es müsste ohne Startup-Code klappen. > hab den Debugmodus gestartet, und dort "Run" ausgeführt. gibt es nun > eine Möglichkeit, die Inhalte des Daten- bzw Programmspeichers > anzuschauen? Du musst rausfinden, an welchen Speicheradressen die Variablen des ASM-Programms liegen. Dann kannst du das Programm mittels SingleStep Schritt für Schritt durchgehen, und über View->MemoryWindow das interne RAM anzeigen, indem du D:0x0000 als Adresse angibst. D steht hier für DATA, C würde für CODE stehen, usw. Ausserdem müsstest du auf der linken Seite die internen Register usw. sehen können. > du hast ja recht, so ist es auch bestimmt gedacht worden. kannst du mir > sagen, wo ich die die entsprechende .hex-Datei zum .asm-Programm finde? Brauchst kein HEX-File, da du ja mit Simulator arbeitest. Das File bräuchtest du nur, wenn du das in einen echten Controller schießen willst. Oder willst du dein FPGA damit füttern? Du musst die Erzeugung des HEX-Files aktivieren, dann wird es beim Assemblieren erzeugt. Das geht mit Rechtsklick aufs Target->Options for Target->Output->Create HEX File. Ralf
Ralf wrote: >> kannst du mir sagen, warum der Standard StartUp-Code nicht zugefügt >> werden soll? > Ein kleines Beispiel, was der Startup-Code macht, wäre das Löschen des > internen RAMs, sodass jede Zelle 0x00 enthält. Das ist für C-Code nötig, > weil in C jede Variable anfangs immer den Wert 0x00 enthält, es sei > denn, sie würde beim Deklarieren auch gleich initialisiert werden. > Desweiteren wird dann noch der Stack initialisiert usw. Der Startup-Code > wird automatisch an die Programmadresse 0x0000 geladen und ausgeführt, > bevor main() ausgeführt wird. > Du solltest den Startup-Code deswegen nicht verwenden, weil das von dir > gezeigte ASM Programm so aussieht, als ob es das alles selbst macht. > Ausserdem ist es ein ASM-Code, kein C-Code. > Würdest du den Startup-Code verwenden, wirds wahrscheinlich Fehler von > µV3 hageln. > Es müsste ohne Startup-Code klappen. ok, werde es in den nächsten Tagen ausprobieren, danke für die Hinweise! >> hab den Debugmodus gestartet, und dort "Run" ausgeführt. gibt es nun >> eine Möglichkeit, die Inhalte des Daten- bzw Programmspeichers >> anzuschauen? > Du musst rausfinden, an welchen Speicheradressen die Variablen des > ASM-Programms liegen. Dann kannst du das Programm mittels SingleStep > Schritt für Schritt durchgehen, und über View->MemoryWindow das interne > RAM anzeigen, indem du D:0x0000 als Adresse angibst. D steht hier für > DATA, C würde für CODE stehen, usw. > Ausserdem müsstest du auf der linken Seite die internen Register usw. > sehen können. Die Idee ist folgende: ich lasse asm-Programm in µVision ablaufen, den Hex-File zum asm-Programm würde ich in eine Textdatei mit binären Inhalten umwandeln, und diese in den ROM des µC-Cores laden, anschließend mit Modelsim simulieren und Ergebnisse in einem log-file abspeichern. Wenn ich Ergebnisse der Keil-Simulation in einem hex-file abspeichern könnte, würde ich anschleißend hex-file in Textfile umwandeln. nun könnte man die beiden Textdateien aus der Simulationen vergleichen. Wenn diese idetnisch wären, ist die funktionale Verifikation des Cores gelungen. >> du hast ja recht, so ist es auch bestimmt gedacht worden. kannst du mir >> sagen, wo ich die die entsprechende .hex-Datei zum .asm-Programm finde? > Brauchst kein HEX-File, da du ja mit Simulator arbeitest. Das File > bräuchtest du nur, wenn du das in einen echten Controller schießen > willst. Oder willst du dein FPGA damit füttern? Du musst die Erzeugung > des HEX-Files aktivieren, dann wird es beim Assemblieren erzeugt. Das > geht mit Rechtsklick aufs Target->Options for Target->Output->Create HEX > File. > Ralf ganz genau, FPGA muß ja auch gefüttert werden, das hungrige Ding ))) Vielen vielen Dank Ralf!!!
> Die Idee ist folgende: ich lasse asm-Programm in µVision ablaufen, den > Hex-File zum asm-Programm würde ich in eine Textdatei mit binären > Inhalten umwandeln, und diese in den ROM des µC-Cores laden, > anschließend mit Modelsim simulieren und Ergebnisse in einem log-file > abspeichern. > Wenn ich Ergebnisse der Keil-Simulation in einem hex-file abspeichern > könnte, würde ich anschleißend hex-file in Textfile umwandeln. > nun könnte man die beiden Textdateien aus der Simulationen vergleichen. > Wenn diese idetnisch wären, ist die funktionale Verifikation des Cores > gelungen. Nix zu machen, ein HEX-File ist das Programm selbst, nur eben in einem Standard-Format, sodass es mit den verschiedensten Programmier-Geräten gelesen werden kann. Das "Ergebnis" des Programms kannst du nur gegenprüfen, indem du z.B. Variablen-Inhalte miteinander vergleichst. Eine Möglichkeit wäre dann, dass du die Variablen sowohl im Simulator als auch im FPGA-Core auf die Ports ausgibst. Da du keine Doku zum ASM-Programm gepostet hast (gibts überhaupt eine?), kann ich es auch nicht ohne weiteres nachvollziehen. Der Sinn des ASM-Programms dürfte es eher sein, die prinzipielle Funktion zu prüfen. Ich würde als Prüfung eher irgendeinen komplexen Algorithmus im Simulator und im Core laufen lassen, und gucken, was dabei rauskommt. Zusätzlich noch mit den Timern und dem UART spielen, usw. Ich behaupte mal ganz frech, es wird bei einem FPGA-Core keine Möglichkeit, einen 100%-Test durchzuführen, geben, weil es ja auch sein kann, dass ein Fehler durch bestimmte Befehlsreihenfolgen erzeugt wird. Andersrum kannst du aber sicher sein, dass der Core schon ziemlich gut funktioniert, also ich will dir jetzt keine Angst machen. Wenn dir das ausreicht, dann vergleich die Register/Variablen-Inhalte nach dem jmp $-Befehl. Ralf
Leider ist der Assembler-file unkommentiert, alles was ich weiß, ist in der folgenden knappen Erklärung aus dem UG des Cores beschrieben: Verification of the core was accomplished by simulating the VHDL code and comparing the results of the executed program (i.e. ROM contents) with the results produced by an industry standard 8051 simulator (http://www.keil.com/demo/evaldl.asp?p=C51). After simulation the contents of a certain memory area is written to a file both for the standard 8051 simulator (using the command save keil.hex 0x00,0xFF) and the VHDL code simulation (e.g. using the script write2file.do, producing the file regs.log in the simulation directory). The resulting text files have to be identical. To be able to feed the compiled assembler file from the Keil development software to the VHDL code simulation a short C program is provided in the latest distribution of the IP core. It converts the Intel hex format file into a text file containing binary 8 bit data, suited for being read by the VHDL simulator (file mc8051_rom.dua in the simulation directory). da ich nun leider keine Erfahrung im Umgang mit den Softcores und Mikrocontrollern habe, fällt es mir schwer das ganze zu verinnerlichen, bin halt ein bluttiger Anfänger :(
servus, ich versuche auch mit keil µvisio3 ein code an lcd übertragen, ich kann aber nicht, hat jemand eine idea,wie das geht ?? grüß
Ja, ich weiss wie es geht. Und tschüss... Ernsthaft, glaubst du, du bekommst ohne Informationen zu liefern, irgendwas brauchbares zurück? Schaltplan? Bisheriger Code (ohne den wird dir keiner helfen, weil dann jeder glaubt, er solls für dich machen)? Zu behaupten, du weisst nicht, wo du anfangen sollst, wird auch nichts bringen, da wird man dir sagen, bei LEDs und Tastern. Stell konkrete, problembezogene Fragen, und du wirst brauchbare Antworten bekommen. Ralf
ok, ich verwende C8051F... microkontroller(Silabs), es ist schon auf einem Platin mit LCD 3x12 T123A zusammengebaut. habe ein RS232 serielleschnittstelle und toolstick(silabs). anbei gibt es einfaches projekt. wenn man es compiler macht,kriegt man keine warnung und error ja. wenn ich es starte, dann kriege ich : target failed to respond, system is being disconnected. Error: target DLL has been cancelled Debugger aborted. Außerdem habe ich anderes projekt,das ich eigentlich an LCD übertragen will. Da nutze ich printf,scanf und kriege speichererror und andere error. statt printf,scanf soll ich sprintf,sscanf oder putchar,getchar nutzen,sagte das jemand so. ich weiss aber nicht ,wie das geht, und wie ich mein projekt umschreiben kann?? wenn du deine mail adresse geben kannst, wäre besser. danke und tschüss :) grüß
Hab ich das jetzt richtig verstanden, du hast ein bereits fertiges Board, auf dem auch ein Display ist? Ist das ein gekauftes Entwicklungsboard, oder was selbstgemachtes? Wenn es ein fertiges E-Board ist, waren keine Demo-Codes dabei? Wenn du Error-Meldungen bekommst, brauchst du normalerweise gar nicht versuchen, das Programm zu laden - es dürfte nicht mal übersetzt werden. Versuch statt dessen, rauszufinden, was die Error-Meldungen verursacht, und beheb das Problem. Welches Programm verwendest du für den Download? Keil, die Silabs-IDE oder das separate Flash-Tool? Bezüglich dem Umschreiben von (s)printf, usw. diese Funktionen basieren alle auf der putchar.c. Kopiere diese Datei in dein Projektverzeichnis, und füge sie dem Projekt hinzu. Dann kannst du die putchar() so ändern, dass sie die Ausgabe auf dein Display macht. Ralf
Hi, es war schon fertig,also gekauftes Board und verwende ich Keil µVison3 sofware. wenn ich compiler mache kriege ich keine fehler,also null error null warnung ja, dann starte ich Start/Debug , danach lauf das nicht und kriege ich ,was ich oben beschriebt habe. ist ok aber,wie programmiert man mit Putchar ?? das weiss ich nicht und seit ein paar tage suche ich Imformation am internet,ich konnte leider noch ein laufendes Programm finden, das ist das mein problem. ich will erst sehen, wie man ein Program mit Putchar programmiert und wie es lauft und was es macht? Hallo.zip ist einfaches Program, aber lauft bei mir nicht,ich weiss nicht ob du auch Keil verwendest, wenn ja,kannst du runterladen und bei dir versuchen ob es lauft ?? gruß
Es bringt nichts, wenn ich mir ein Programm angucke, zu dem ich das Board nicht habe. Kannst du von einem funktionierenden Projekt mal die Dateien reinstellen? Dann kann man vergleichen. Ich habe den Keil nicht. Ralf
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.