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
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.
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.
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
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.