Forum: Compiler & IDEs Migration von MIDE51 (Windows) zu MCU8051IDE (Linux)


von Robert S. (efyzz)


Lesenswert?

Nabend,

ich habe den (hoffentlich) endgültigen Entschluss gefasst, mich von 
Windows zu verabschieden und habe Kubuntu auf meinem Laptop installiert. 
Obwohl ich nur sehr wenig Ahnung von Linux habe, läuft bisher alles 
recht zufriedenstellend :)

Nun möchte ich aber weiterhin meinen AT89S8252 programmieren können, was 
ich unter Windows mit MIDE51 gemacht habe. Daher habe ich unter Kubuntu 
die MCU8051 IDE installiert.

Beim ersten Versuch, mein sehr umfangreiches ASM-Programm zu 
"kompilieren", gab es wie erwartet haufenweise Fehlermeldungen. Hier ein 
paar Beispiele:

TempSensor      EQU P0.0
-> Given register does not belong to the bit addressable area: P0.0

LCD_PORT        EQU P2
-> Undefined symbol name: p2
-> Invalid expression `P2'

MOV P1,#11111000b
-> Symbol not defined: p1

CLR exf2
-> Symbol not defined: exf2

Textuhr:        DB "Uhrzeit         ",0
-> Invalid expression: `"Uhrzeit'


Also so manches kann ich ja verstehen, aber dass er noch nicht mal P1 
oder P2 kennt, macht mich etwas nervös...

Unter MIDE51 musste ich eine Include-Datei für die SFRs angeben. Braucht 
MCU8051 so etwas auch? Und wenn ja, wo finde ich die?

Beim Erstellen des Projektes habe ich den AT89S5283 ausgewählt. Den 
abgekündigten 5282 gibt's dort gar nicht mehr, aber die sollten ja voll 
kompatibel sein, soweit ich weiß.

Interessanterweise kann ich eine ASM-Datei problemlos kompilieren, die 
nur dies enthält:
mov P1, #0fh

Da kennt er P1 dann plötzlich...


Freue mich über alle Tipps!
Gerne nehme ich auch eine andere IDE, wenn diese "kompatibler" ist. Es 
muss ja nicht MCU8051 sein.

Danke euch!

von Peter D. (peda)


Lesenswert?

Robert S. schrieb:
> Unter MIDE51 musste ich eine Include-Datei für die SFRs angeben. Braucht
> MCU8051 so etwas auch? Und wenn ja, wo finde ich die?

Ja natürlich.
Such mal nach *.h, *.inc, *.def oder schau ins Example-Verzeichnis, wie 
die heißen.

von Robert S. (efyzz)


Lesenswert?

Moin Peter,

tja, da ist ja das Problem. Es werden C- und ASM-Beispiele mitgeliefert 
(bzw. ein Beispiel-Projekt, das beide Typen enthält). Bei den C-Dateien 
taucht z.B. sowas auf:

#include <at89x51.h>

Aber erstens finde ich diese Datei nirgends auf der gesamten Festplatte 
(mag an meinen Linux-Kenntnissen liegen...) und zweitens sind .h-Dateien 
ja nur für C-Programmierung notwendig, richtig?

Bei den mitgelieferten ASM-Dateien taucht kein include oder ähnliches 
auf.

Ich vermute ja auch, dass das evtl. schon mit der Auswahl des uC beim 
Projekt Erstellen erledigt ist. Warum sollte ich sonst einen uC 
auswählen?

Außerdem lässt sich ja wie gesagt mein 1-zeiliges Testprogramm 
fehlerfrei übersetzen.

: Bearbeitet durch User
von Peter D. (peda)


Lesenswert?

Robert S. schrieb:
> Aber erstens finde ich diese Datei nirgends auf der gesamten Festplatte

Wenn, dann mußt Du in der 8051-Installation suchen.
Von Linux habe ich auch Null Ahnung.
Hat denn die 8051-Installation keine Hilfe oder Manual?


Robert S. schrieb:
> Außerdem lässt sich ja wie gesagt mein 1-zeiliges Testprogramm
> fehlerfrei übersetzen.

Damit kann nur keiner was anfangen.
Unter Programmierern ist es äußerst unhöflich, wenn Du nur Codebröckchen 
hinschmeißt.
Einen kompletten Fehlercode als Anhang und die dazu gehörenden 
Fehlermeldungen (die ersten 2-3 reichen).
Fehlermeldungen lassen sich oft erst im Kontext verstehen.
Deshalb auch nie Code und Meldung so ungefähr aus der Erinnerung neu 
schreiben, sondern den exakten vollständigen Wortlaut.

von MSD (Gast)


Lesenswert?

Hab gerade mal in Linux Mint nach geschaut. Der Installationsordner 
befindet sich dort unter "/usr/share/mcu8051ide". Im Unterordner "data" 
gibt es eine Datei "mcus.xml", wenn ich das richtig interpretiere werden 
daraus irgendwie die Definitionen erstellt.

von MSD (Gast)


Lesenswert?

Noch ein Nachtrag: Das Programm MCU8051IDE hat keinen eigenen C-Compiler 
sondern benutzt den SDCC. Dieser muss zuerst installiert werden. Sobald 
dies erfolgt ist, müssten sich die *.h - Dateien im Verzeichnis 
"/usr/share/sdcc/include" befinden.

von Robert S. (efyzz)


Lesenswert?

Hallo Peter,

Peter D. schrieb:
>> Außerdem lässt sich ja wie gesagt mein 1-zeiliges Testprogramm
>> fehlerfrei übersetzen.
>
> Damit kann nur keiner was anfangen.

Ich bezog mich hierauf:

Robert S. schrieb:
> Interessanterweise kann ich eine ASM-Datei problemlos kompilieren, die
> nur dies enthält:
> mov P1, #0fh

Sorry, ich wollte keinesfalls unhöflich sein, sondern habe meiner 
Meinung nach ausreichend Sourcecode und Fehlermeldungen angegeben.

Wenn es weiter hilft, kann ich ja ansonsten z.B. mal die ersten 100 
Zeilen meines Programms mit zugehörigen Fehlermeldungen posten. Würde 
das helfen?


Hallo MSD,

vielen Dank für die Tipps! Nach /usr/share/ bin ich auch schon irgendwie 
gestolpert, hatte da jedoch (für mich) nichts sinnvolles gefunden.

Diese XML-Datei enthält quasi die "technischen Daten" des uC. Darauf 
greift die IDE vermutlich beim Erstellen eines Projektes zurück. Was 
jedoch fehlt, ist die Zuordnung der SFRs auf Adressen. Sprich, "P1" muss 
ja in eine Adresse übersetzt werden. So eine Tabelle ist jedoch in der 
XML nicht enthalten.

C-Programmierung interessiert mich z. Zt. nicht, aber danke für den 
Hinweis!

Was machst Du denn so mit der MCU8051 IDE? Oder hast Du es jetzt einfach 
nur zum Spaß installiert?

von Robert S. (efyzz)


Lesenswert?

Problem gelöst!

Bin dahinter gekommen, dass MIDE51 (unter Windows) den ASEM-51 Assembler 
benutzt. Also habe ich diesen unter Kubuntu installiert und in der 
MCU8051IDE ausgewählt.

Dann noch die Includefiles für ASEM-51 runtergeladen und schon klappt es 
wunderbar, ohne dass ich auch nur eine Zeile Code ändern musste :)

Wenn man MIDE51 für Windows runterlädt, ist das alles in der Setup.exe 
enthalten und man muss sich um nichts weiter kümmern. Dadurch weiß man 
aber auch nicht, was im Hintergrund passiert ...

Trotzdem vielen Dank!

Hat jetzt vielleicht noch jemand einen guten Tipp, womit ich meinen 
AT89S8252 über Parallelport unter Kubuntu flashen kann? Unter Windows 
habe ich das immer mit PonyProg gemacht.

von Rolf M. (rmagnus)


Lesenswert?

Robert S. schrieb:
> Hat jetzt vielleicht noch jemand einen guten Tipp, womit ich meinen
> AT89S8252 über Parallelport unter Kubuntu flashen kann? Unter Windows
> habe ich das immer mit PonyProg gemacht.

Und unter Linux willst du das nicht mehr?
Von der Homepage:

"PonyProg is a serial device programmer software with a user friendly 
GUI framework available for Windows95/98/ME/NT/2000/XP and Intel 
Linux."

von Robert S. (efyzz)


Lesenswert?

Ja ... könnte man natürlich machen 8)

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.