Xilinx Microblaze

Der Xilinx Microblaze ist ein variabel synthetisierbarer Soft Core Processor von Xilinx und somit ein direkter Konkurrent der ebenfalls kommerziell vertriebenen Soft-CPU Nios II von Altera. Ein Vergleich beider Kerne soll an dieser Stelle nicht geführt werden, wenn er denn überhaupt seriös zu führen wäre. Vielmehr sollen die hier vorgestellten Ergebnisse den Startup mit dem Xilinx Microblaze erleichtern.

In Hinblick auf die Integration von freier Software stellt sich dies bisher immer noch als besondere Herausforderung dar. Im Gegensatz zum Altera Nios II gibt es noch immer keinen gelebten und geförderten Anlaufpunkt für die Community. Alle bisherigen Ansätze endeten in einer Kommerzialisierung. Ein erster Lichtblick ist das im Frühjahr 2009 unter wikidot.com entstandene Wiki oder das im Sommer 2010 unter microblaze.org entstandene Forum. Schade nur, dass es immer noch zu wenige von Xilinx direkt bezahlte Entwickler gibt …

Durch die zurückliegenden Arbeiten von John Williams Michal Šimek und John Linn hat sich der Einsatz von Linux als ein freies Betriebssystem für den Microblaze fest etabliert. Auch so konnten sich Drittanbieter wie BlueCat Linux oder aktuell PetaLinux formieren. ABER: Das sehr teure BlueCat Linux wird langfristig keine Unterstützung mehr für Microblaze bieten und der gut gemeinte Ansatz von PetaLinux mit einer frei verfügbaren Entwicklungsumgebung die Community an sich zu binden hat sein abruptes Ende mit Erscheinen der Version 1.1 im Herbst 2009 gefunden. Seither gibt es wieder keine frei verfügbare Linux Entwicklungsumgebung für Xilinx Microblaze.

Wo ist das Problem?

Obwohl nun die Quellen für Linux und alle wichtigen Hilfswerkzeuge wie Bootloader und Compiler als Open Source zur Verfügung stehen, stellt sich die erste Hürde bereits zu Begin des gesamten Design Flow in den Weg. Systemdesigns mit einem Soft Core Processor haben die „erwünschte“ Eigenschaft, ihre Spezifikation variable zu gestalten. Damit kann sich selbst in einem in sich abgeschlossenen Entwicklungsverlauf das Aussehen der Hardware ständig ändern. Grund genug, darüber nachzudenken, wie man diese stetige Varianz an die Bedürfnisse der Softwareentwicklung anpassen kann.

Die der FPGA und Hardwareentwicklung immer nachgelagerte Softwareentwicklung stützt sich auf Vorgaben der vorangegangenen Phasen in Form von maschinenlesbaren Daten, oft C Header oder Konfigurationsdateien. Es ist also notwendig, das FPGA Designwerkzeug zur Erzeugung der notwendigen Daten zu befähigen. Bei Xilinx kann man das mit eigenen MLD Dateien und zugehörigen TCL Scripten erreichen.

Dank der fruchtbaren Arbeit von Michal Šimek in den Jahren 2008 und 2009 kann Linux heute selber dem stetigen Veränderungsprozess der zugrunde liegenden Hardware Rechnung tragen. Er hat in dieser Zeit die bei Sun Microsystems, Inc. bereits Anfang der 1990er Jahren in der IEEE-1275 definierte Laufzeitkonfiguration über den Flat Device Tree (FDT) auf die Xilinx Architektur übertragen. Dadurch benötigt ein fertig kompilierter Linux Kernel nur noch einen FDT an die Hand und kann somit auf jeder denkbaren Microblaze Hardware ablaufen. Die Vorgaben für einen FDT können ebenfalls bequem über geeignete MLD/TCL Dateien erzeugt werden.

Ein Restproblem bleibt aber immer noch, woher kommen die notwendigen MLD/TCL Dateien für die Integration in die Xilinx FPGA Entwicklungsumgebung?

Lösung in Sicht

Nach einigem Stöbern in den Quellen von Michal Šimek auf seinen Seiten zur Integration von U-Boot und Linux 2.6 in ein eigenes Microblaze Design war es nur noch eine Fleissarbeit, alle Teile wie ein Puzzle zusammenzuführen. Nach zahlreichen aber fruchtbaren Programmiernächten ist das Projekt MicroBlaze References entstanden.

Die hier vorgestellten Ergebnisse wären ohne die folgenden Seiten nicht zustande gekommen:

Interessante Präsentationen:

Wichtige Git Repositories:

Wichtige Projekte:

Verschiedene Info-Links:

Wichtige Downloads: