GNU Toolchains
Hier muss noch viel geschrieben und sortiert werden. Ich will aber einfach beginnen, meine Informationen zu notieren und hier zu sammeln.
Xilinx MicroBlaze Unterstützung
Die durch Xilinx und PetaLogix gelebte Bereitstellung und Pflege der GNU Compiler Collection für MicroBlaze war lange Zeit ein wunder Punkt. Bis heute hat man immer wieder beteuert, dass man alle Ergebnisse in den Up-Stream der FSF einpflegen und damit einen ordentlichen Zugriff auf die Quellbasis bereitstellen wolle. Mitte 2009 gab es erste Regungen durch Michael Eager für die MicroBlaze Unterstützung in den Binutils. Durch seine Arbeiten bis Ende 2010 und mit Erscheinen von gcc-4.6.0 im März 2011 steht heute eine erste freie Implementierung der GNU Tools für MicroBlaze zur Verfügung. Diese kann aber ausschließlich nur für die „standalone“ Programmierung auf Basis der Newlib genutzt werden.
GNU Compiler Collection für Linux/Glibc
Trotz erster Erfolge steht für ein Linux Zielsystem mit GNU Lib C noch immer keine Up-Stream Unterstützung zur Verfügung. Xilinx und PataLogix arbeiten daran – verschiedene Originalzitate bekräftigen das:
Michael Eager, März 2011 (alles):
I understand that Xilinx is interested in upgrading the Linux tool chain to the same version in the GNU tree and presumably submitting any changes to FSF. I don't have any details on the when this might happen; the status on this has not changed in many months. Naturally, updating the GNU tree gdb and gdbserver to work on correctly on MicroBlaze Linux doesn't require Xilinx's involvement, the projects are open source. It does require a suitable environment and someone to do the port.
John Williams, Februar 2011 (alles):
Moving forward we are discussing with Xilinx on how to best get the MicroBlaze toolchains properly supported and maintained upstream. This is a work in progress so there are unlikely to be tanglible results from this effort for a little while yet. Once the toolchain sources are upstream, then it opens the way to get standard toolchain builders such as crosstool-ng knowing about MicroBlaze. This in turn should greatly reduce the pain factor for individuals to build their own MicroBlaze toolchains.
John Williams, April 2012 (alles):
The release is imminent. We are ironing out the last few remaining issues in testing now. Getting it upstream is also part of the plan, along with securing a commitment to maintain it there.
Stay tuned!
Xilinx Binärpakete
Für die Bereitstellung und Pflege einer GNU Compiler Collection auf Basis der aktuellen FSF Quellen besteht daher immer noch Handlungsbedarf durch Xilinx bzw. der Mithilfe von PetaLogix. Die einzige heute funktionstüchtige Toolchain stammt von John Williams (PetaLogix) und basiert auf den mittlerweile historischen Versionen binutils-2.16.1, gcc-4.1.2 und glibc-2.3.6.
Xilinx stellt fertig übersetzte Binärpakete bereit:
- Version 2.0 (März 2011) obsolete :
- MicroBlaze Big Endian Linux Developer Binaries: microblaze-unknown-linux-gnu.tgz
- MicroBlaze Little Endian Linux Developer Binaries: microblaze-unknown-linux-gnu.tgz
- Version 1.0 (Dezember 2010) obsolete :
- MicroBlaze Little Endian Linux Developer Binaries: microblazeel-unknown-linux-gnu.tar.gz
- Version 1.0 (Oktober 2009) obsolete :
- MicroBlaze (Big Endian) Linux Developer Binaries: mb_gnu_tools_bin.tar.bz2
PetaLogix Patch Set
Seit Februar 2011 stellt John Williams (PetaLinux) nun endlich seine hierfür notwendigen Patch Sets der Öffentlichkeit zur Verfügung – das ist ein lang ersehnter und erfreulicher Schritt für die Programmiergemeinde:
- obsolete GNU binutils 2.16.1 plus MicroBlaze patches (Git: git://git.monstr.eu/toolchain/binutils.git)
- obsolete GNU gcc 4.1.2 plus MicroBlaze patches big and little-endian support (Git: git://git.monstr.eu/toolchain/gcc.git)
- obsolete GNU glibc 2.3.6 plus MicroBlaze patches big and little-endian support (Git: git://git.monstr.eu/toolchain/glibc.git)
AVR 8-bit Unerstützung
Nativ vorhanden:
- c't-Bot Distribution (c't Projekt)
- CrossToolchain:Avr (OBS Projekt)
Zilog Z80 Unterstützung
Für mein alt geliebtes PC/M Eigenbauprojekt beobachte ich seit mehr als 10 Jahren die verschiedenen Versuche und Aktionen in Richtung Z80 Unterstützung durch die GNU Compiler Collection. Einzige bisher wirklich funktionstüchtige Aktion war die Integration des Assembler und Linker sowie der OBJ-Manipulationsprogramme in die BIN Utilities.
- gcc-z80 patch (gcc-2.95.2)
Linksammlung
- Entwurf eines Compilerbackends für…, Hannes Klas 2010
Interna Quellcode
BIN Utilities (binutils)
Die BIN Utilities beinhalten den GNU Assembler, Linker, Archiver und die OBJ Werkzeuge.
Bezugsquellen
Versionsnummern
Die Versionsnummer wird über die Autoconf Variable bfd_version_string
zum Übersetzungszeitpunkt als CPP Define BFD_VERSION_STRING
in die Quellen eingebracht. Die damit in Verbindung stehende Versionsvariable VERSION
wird in bfd/configure
zugewiesen.
Die Ablage erfolgt in der Datei:
- aktuell in:
bfd/Makefile.in
(bzw.bfd/Makefile.am
) als Inhalt der zu erzeugenden Dateibfdver.h
- bis zum 2004-05-22 in:
bfd/configure
(bzw.bfd/configure.in
)
GNU Compiler Collection (gcc)
Die GNU Compiler Collection beinhalten den GNU C, C++, Objective-C, Fortran, Java, and Ada (GNAT) Compiler sowie hierfür notwendige Bibliotheken (libstdc++, libgcj,…).
Bezugsquellen
Versionsnummern
Die Versionsnummer wird über die Variable version_string
zum Übersetzungszeitpunkt in die Quellen eingebracht. Die damit in Verbindung stehenden Versionsvariablen BASEVER
, DATESTAMP
und DEVPHASE
werden in gcc/Makefile.in
zugewiesen und entsprechen den Inhalten der Dateien gcc/BASE-VER
, gcc/DATESTAMP
und gcc/DEV-PHASE
. Die Variable version_string
wird in der Datei gcc/version.h
zum Übersetzungszeitpunkt mit dem CPP Define VERSUFFIX
erweitert (Nutzung durch Redistribution).
Die Ablage erfolgt in der Datei:
- Basisversion in:
gcc/BASE-VER
- Zeitstempel in:
gcc/DATESTAMP
- Entwicklungsphase (optionaler Text) in:
gcc/DEV-PHASE
- Vertriebskennung in:
gcc/version.h
als CPP DefineVERSUFFIX
GNU Debugger (gdb)
Der GNU Debugger beinhalten den GNU Source-Level Debugger für lokale, entfernte und post-mortem Programmkontrolle.
Bezugsquellen
GNU C Library (glibc)
Die GNU C Library ist die unter POSIX Systemen, wie Linux oder BSD Unix, am häufigsten benutzte ANSI/ISO C Programmierbibliothek mit mathematischer Erweiterung und C-plus-plus Unterstützung.
Bezugsquellen
Embedded GNU C Library (eglibc)
Die Embedded GNU C Library ist eine Variante der GLIBC speziell für die Benutzung in eingebetteten Systemen (Embedded Systems). Die EGLIBC wird ausschließlich über ein Subversion Repository bereitgestellt. Es gibt keine Quellcode Pakete zum Herunterladen.
Bezugsquellen
RedHat New Library (newlib)
Die New Library ist eine einfache ANSI C Programmierbibliothek mit mathematischer Erweiterung und einer Kollektion von verschiedenen BSP.