====== Xilinx Microblaze ====== Der Xilinx [[wp>MicroBlaze|Microblaze]] ist ein variabel synthetisierbarer //Soft Core Processor// von Xilinx und somit ein direkter Konkurrent der ebenfalls kommerziell vertriebenen Soft-CPU [[wp>Nios_II|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 | --- //[[linz@li-pro.net|Stephan Linz]] 2010/10/03 09:42//++ 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 [[http://xilinx.wikidot.com/|wikidot.com]] entstandene Wiki oder das im Sommer 2010 unter [[http://microblaze.org/|microblaze.org]] entstandene Forum. Schade nur, dass es immer noch zu wenige von Xilinx direkt bezahlte Entwickler gibt ... ===== Linux für Microblaze ===== Durch die zurückliegenden Arbeiten von ++John Williams | [[http://www.petalogix.com/]]++ ++Michal Šimek | [[http://www.monstr.eu/]]++ und ++John Linn | [[http://xilinx.wikidot.com/]]++ hat sich der Einsatz von Linux als ein freies Betriebssystem für den Microblaze fest etabliert. Auch so konnten sich Drittanbieter wie ++BlueCat Linux | [[http://www.lynuxworks.com/embedded-linux/embedded-linux.php]]++ oder aktuell ++PetaLinux | [[http://www.petalogix.com/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 | [[http://www.monstr.eu/]]++ 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) | [[monstr.eu>fdt:fdt:doc]]++// 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 | [[monstr.eu>uboot:uboot]]++ und ++Linux 2.6 | [[monstr.eu>fdt:fdt]]++ 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. {{indexmenu>.#2|context}} ===== Linksammlung ===== Die hier vorgestellten Ergebnisse wären ohne die folgenden Seiten nicht zustande gekommen: * [[monstr.eu>start|U-BOOT, eCos, Device Tree, Qemu and Linux for Microblaze]] LOL * [[wdot.xilinx>start|Xilinx Open Source Wiki]] :-) * [[wdot.xilinx>u-boot-new|MicroBlaze U-boot]] * [[wdot.xilinx>microblaze-linux|Microblaze Linux]] * [[wdot.xilinx>device-tree-generator|Device Tree Generator]] * [[wdot.xilinx>mb-gnu-tools|Microblaze GNU Tools]] * [[http://www.wesleypeck.com/tutorials/fpga|Tutorials by Wesley Peck]] :-) * [[http://www.wesleypeck.com/tutorials/fpga|FPGA Tutorials]] * [[http://www.wesleypeck.com/tutorials/microblaze|MicroBlaze Tutorials]] * [[http://www.labbookpages.co.uk/fpgas/linux/xupv2proMBLinux.html|MicroBlaze Linux on XUP-V2Pro by Dr. Andrew Greensted]] :-| * [[http://www.aclevername.com/articles/linux-xilinx-tutorial/|PPC Linux on XUP-V2Pro by David Baird and Tim Sander]] :-| Interessante Präsentationen: * [[http://www.austriancubes.at/index.php/downloads.html?file=tl_files/Dokumente/Saison%202007/2007-03_Paper%20Xilinx%20Microblaze%20Microcontroller_Stefan%20Boeck.pdf|Case Study: Xilinx MicroBlaze Microcontroller]] :-) * [[http://www.eepw.com.cn/event/images/EEPWKevinXilinxppt.pdf|MicroBlaze BlueCat Linux Workshop]] :-| Wichtige Git Repositories: * [[http://git.xilinx.com/|John Linn in Kooperative mit und bei Xilinx]] LOL * [[http://git.denx.de/?p=u-boot/u-boot-microblaze.git;a=summary|Microblaze U-Boot Custodian Tree von Michal Šimek]] LOL * [[http://git.monstr.eu/git/gitweb.cgi|Michal Šimek in Kooperative mit PetaLogix]] :-) Wichtige Projekte: * [[http://aalonso.wordpress.com/tag/xilinx-virtex5-ml507-linux-angstrom-openembedded/|Openembedded für Xilinx Virtex 4/5]] :-) * [[http://gitorious.org/~aalonso|Adrian Alonso bei Gitorious]] * [[http://github.com/aalonso|Adrian Alonso bei GitHUB]] * Diplomarbeiten an der Fachhochschule Augsburg :-) * [[http://elk.informatik.fh-augsburg.de/da/zba-1|Ein Audio-Player unter FreeRTOS in einem Low-Cost-FPGA]], David Stecher 2010 * [[http://elk.informatik.fh-augsburg.de/da/zba-2|Ein Audioplayer unter Linux in einem Low-Cost-FPGA]], Florian Richter 2010 * Meyer Sound D-Mitri I/O and DGPIO modules :-| * [[http://github.com/jdkoftinoff/mb-linux-msli|mb-linux-msli]] * [[http://github.com/jdkoftinoff/mb-gcc4-msli|mb-gcc4-msli]] * [[http://github.com/jdkoftinoff/mb-gcc3-msli|mb-gcc3-msli]] Verschiedene Info-Links: * Open Firmware: * [[http://www.openfirmware.org/|Open Firmware Home Page]] (OpenFirmware.ORG) LOL * [[http://playground.sun.com/1275/|IEEE 1275 Open Firmware Working Group]] LOL * [[http://www.firmworks.com/QuickRef.html|Open Firmware Quick Reference]] :-| * Flattened Device Tree (FDT): * [[http://www.kernel.org/doc/ols/2008/ols2008v2-pages-27-38.pdf|A Symphony of Flavours: Using the device tree to describe embedded hardware]] LOL * [[http://ozlabs.org/~dgibson/papers/dtc-paper.pdf|Device trees everywhere]] :-) * [[http://devicetree.org/Device_Tree_Usage|Device Tree Usage]] :-) * [[http://elinux.org/Device_Trees|eLinux.org über FDT]] :-| * Userspace I/O (UIO): * FIXME (link missing): Userspace I/O drivers in a realtime context LOL * [[http://www.kernel.org/doc/htmldocs/uio-howto.html|The Userspace I/O HOWTO]] :-) * [[http://www.celinux.org/elc08_presentations/uio080417celfelc08.pdf|Using UIO in an embedded platform]] :-| * [[http://web.archive.org/web/*/http://developer.petalogix.com|PetaLogix Developer Portal]] Web Archive (2007/2008) LOL * [[http://web.archive.org/web/20080803090820/http://developer.petalogix.com/|Wiki 2008-Aug-03]] * [[http://web.archive.org/web/20071230120324/http://developer.petalogix.com/|Wiki 2007-Dec-30]] * [[http://www.xilinx.com/publications/xcellonline/|Xcell Journal]] * [[http://www.xilinx.com/publications/archives/xcell/issue74/using-xilinx-tools-command-line-mode.pdf|Xperts Corner: Using Xilinx Tools in Command-Line Mode]] Wichtige Downloads: * [[http://www.iar-conicet.gov.ar/~fernandoph/pub/petalinux-v0.40-final.tar.gz|petalinux-v0.40-final.tar.gz]] (566M, 20-May-2010 13:48) LOL {{tag>xilinx microblaze links u-boot linux embedded}}