Forum: Mikrocontroller und Digitale Elektronik Compiler(bau) II.


von Ampfing (Gast)


Lesenswert?

Hallo zusammen,

hatte vor einiger Zeit unter Beitrag "Compiler schreiben" 
schonmal wegen der Programmierung eines Compiler gepostet.
Mittlerweile habe ich mich etwas mehr mit dem Controller beschaeftig - 
es handelt sich um einen Beck-IPC auf einen Evaluation Kit E61 (naehere 
Infos dazu unter http://www.beck-ipc.com/de/products/sc1x3/ek61.asp ).
Kleiner Nachteil des Ganzen ist, dass es zwar einen Compiler fuer diese 
Controller gibt, dieser aber um die 900 Euro kostet, die ich nicht 
wirklich ausgeben moechte.
Allerdings habe ich in der Doku zu der API des auf dem Chip laufenden 
RTOS gesehen, dass das BS mit DOS EXE-Dateien arbeiten kann (zumindest 
soweit ich das richtig verstanden habe). Allerdings muessten die 
Adressen in den EXE Dateien von 20 auf 24 Bit angepasst werden (auf der 
Seite http://www.beck-ipc.com/files/api/scxxx/program.htm der letzte 
Punkt ist der, den ich meine). Koennte ich also mein C Programm mit 
einem 'normalen' DOS C-Compiler compilieren und anschliessend die 
EXE-Datei per Hand so aendern, dass sie auf dem Controller bzw. dessen 
BS korrekt laeuft? Oder stelle ich mir das wieder mal zu einfach vor - 
warum sonst sollte jemand die 900 Euro fuer die Entwicklungsumgebung 
ausgeben...

Danke schonmal fuer die Antworten und viele Gruesse

von Andreas K. (a-k)


Lesenswert?

Ein Real-Mode 80186-Compiler als Basis passt im Prinzip schon. Der Haken 
ist, dass die Segmentierung anders arbeitet als beim Original von Intel. 
Dem Compiler ist das egal, aber dem Library-Code und insbesondere dem 
Linker eher nicht. Einfach nur das EXE zu hacken wird da nicht reichen.

von Sebastian (Gast)


Lesenswert?

Ich hab was für die "alten" sc1x programmiert da gabs noch den Borland 
Compiler gratis dazu, die IDE war zwar nicht gerade comfortabel aber 
funktioniert hat es.
Da die Borland jetzt nicht mehr mitliefern wird es wohl nicht mehr 
möglich sein damit Programme für die neuen sc1x3 zu schreiben denke ich. 
Irgendwas habe ich da glaube ich auch mal gelesen.
Bei den sc1x brauchte man im Prinzip nur einen 80186 Compiler, ausser 
man will die API nutzen, dann wäre es etwas schwieriger geworden. Für 
den Borland Compiler war die API extra ausgelegt und hat problemlos mit 
dem zusammen gearbeitet.
Wie es bei den neuen ist weiss ich leider nicht.

von Ampfing (Gast)


Lesenswert?

Hi,

@Sebastian: Ja, von dem Borland habe ich auch schon gelesen. Der ist 
aber eben nur fuer die SC1x und SC2x, nicht fuer die SC1x3. Die haben 
einen groesseren Adressbus, weil sie mehr als 1 MB Speicher ansprechen 
muessen/koennen.

@Andreas Kaiser: Das mit der Segmentierung habe ich auch gesehen (auf 
der Seite von Beck), muss mich aber wohl erstmal genauer damit befassen 
um zu verstehen, was es damit auf sich hat. Wenn ich Dich richtig 
verstehe muesste ich sozusagen im Linker was aendern, damit der schon 
vor der Erstellung der EXE weiss, dass es 24 Bit-Adressen sind, oder?

Als Basis koennte man ja den Open Watcom Compiler verwenden, der kann 
zumindest DOS EXE-Dateien erstellen (und auch Extended DOS, was aber 
dann 32 Bit heisst und nicht 24, oder?). Ausserdem waere der Source Code 
verfuegbar (mal sehen wie lange ich brauchen wuerde um ihn zu 
verstehen). Wie ich ja schon im ersten Thread beschrieben hatte, mir ist 
klar, dass das ein laengeres Projekt wird und habe mir jetzt mal als 
Zeitraum ein Jahr gegeben, wenn es laenger wird dann wirds halt 
laenger...

Wuerde mich ueber weitere Antworten freuen

von Ein Name (Gast)


Lesenswert?

Der GCC sollte oder hatte mal ein ia16 Backend mit 80186-Support. 
"Sollte", weil ich gerade keine Lust habe nachzusehen :-)

Dann gibt es OpenWatcom. Der Watcom-Compiler hatte einen guten Ruf. 
http://www.openwatcom.org/index.php/Main_Page

Bruce's C compiler bcc (nicht zu verwechseln mit Borland C) sollte es 
auch tun. Wobei der keinen berauschenden Ruf hat. 
http://dir.filewatcher.com/d/FreeBSD/4.2-release/i386/bcc-1995.03.12.tgz.79915.html

Borland bietet den alten Turbo-C Compiler kostenlos an, allerdings nur 
als Binary. http://dn.codegear.com/article/20841
Zum Hacken duerften die anderen Compiler, fuer die es Sourcecode gibt, 
besser geeignet sein.

von Andreas K. (a-k)


Lesenswert?

Ampfing wrote:

> muesste ich sozusagen im Linker was aendern, damit der schon
> vor der Erstellung der EXE weiss, dass es 24 Bit-Adressen sind, oder?

Korrekt. Der Linker plaziert Code/Daten im Adressraum und modifziert 
dort enthaltene Adresseinträge entsprechend. Und genau das hängt 
natürlich von der Pagegrösse der Segmente ab.

> Als Basis koennte man ja den Open Watcom Compiler verwenden

Das wäre ein möglicher Ansatz. Viel wird nicht zu ändern sein, das wird 
die übliche Nummer beim Aufwand: 1% für's Ändern, 99% dafür zu wissen 
wo.

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.