Hallo, ich bin gerade dabei mich in Xilinx FPGA und v.a. in den PowerPC einzuarbeiten. Es geht darum, dass ich Software für den PowerPC schreiben soll/darf ;) Die Hardware selber, also die Konfiguration des Boards bzw. des FPGAs ist nicht meine Aufgabe, bei mir geht es nur darum C Code für den PowerPC zu schreiben. Die Xilinx Website habe ich schon gut durchforstet, auch sonst alles mögliche, was Google mir liefert, jedoch bin ich noch nicht sooo weit gekommen. Bei mir geht es wahrscheinlich in die Richtung, dass ich eine Art Bootloader für den PowerPC schreiben soll, d.h. den PowerPC initialisieren. Jedoch weiß ich noch nicht ganz genau, inwieweit es da viel/etwas zu initialisieren gibt ^^ Hat auch jemand Erfahrungen mit dem Xilkernel von Xilinx? Da bin ich auch noch nicht ganz dahinter gestiegen. Zum Einarbeiten werde ich wohl nur ein paar simple Programme schreiben, die über die serielle Schnittstelle Daten ausgeben bzw. einlesen; die LEDs auf dem Board blinken lassen; Schalter einlesen ... also recht triviale Dinge :) Vielleicht hat jemand von euch ein bisschen Beispielcode für leichte Sachen oder grundlegende Sachen, die einem helfen, sich mehr einzuarbeiten ... zwar bietet Xilinx auch ein bisschen was an, das läuft aber doch meistens nicht wirklich auf C Code hinaus. Vielen Dank schon einmal! :)
Auf welche Softwaretools von Xilinx hast du denn Zugriff / mit welchen arbeitest du? Habe schonmal ein Virtex4 incl. Powerpc von einem Flash booten lassen. Xilinx liefert da schon recht viel fertiges mit. Hast du ein Flashprom von dem der Code booten soll, oder wie ist deine Hardware geplant? Thorsten
Hallo, vielen Dank fü deine Antwort. Prinzipiell habe ich Zugriff auf alle Softwaretools von Xilinx, d.h. vor allem ISE/EDK/SKD, bald auch ModelSim zur Simulation. Wie der genaue Aufbau des Boards sein wird, kann ich im Moment noch sagen, es wird auch kein Standard-Board (Evaluation Board) sein. Aber ein non-volatile memory wird auf jeden Fall zur Verfügung stehen, in welcher Form weiß ich jedoch momentan noch nicht. Mir geht es vor allem darum, zu wissen, was genau "gemacht" werden muss, um den PowerPC zu "booten", welche Möglichkeiten mir da zu Verfügung stehen Achja, es handelt sich um ein Virtex-4 FX100 FPGA, also mit PowerPC 405. Vielen Dank & Gruß!
Es gibt von Xilinx ein Board Support Package für den PPC. Und Beispiele gibt es auch einige. Die meisten sind für das ML405 bzw. ML403. An deiner Stelle würde ich mir ein ML405/403 zulegen. Eine Bootloader gibt es meines wissens auch schon. Das sollte alles beim EDK dabei sein. PLC2 bietet auch Schulungen in dem Bereich an.
^^ Du hast es erfasst, ich mache eine Art Praktikum :) Ich bin auch der erste, der sich damit beschäftigt, daher gibt es auch noch keine ersten Erfahrungen oder Informationen. Wie meinst du, dass ein Bootloader schon beim EDK dabei ist? Das folgende habe ich angefangen zu schreiben und habe dann selber einiges an "Doku" gefunden, dir mir schon weiterhelfen. Ein Beispiel von Xilinx:
1 | #include "xgpio.h" |
2 | #include "xparameters.h" |
3 | #include "xuartlite.h" |
4 | #include "xtime_1.h" |
5 | |
6 | main() { |
7 | XGpio gp_out; |
8 | XGpio gp_in; |
9 | XUartLite uart; |
10 | int i, k, j=0; |
11 | |
12 | // Initialize UART-Lite
|
13 | XUartLite_Initialize(&uart, XPAR_MYUART_DEVICE_ID); |
14 | |
15 | // Initialize GPIO used as an output for the LED
|
16 | XGpio_Initialize(&gp_out, XPAR_MYGPOUT_DEVICE_ID); |
17 | XGpio_SetDataDirection(&gp_out, 0x00000000); |
18 | |
19 | .....
|
Sehe ich das richtig, dass meine einzige Referenz auf die verwendeten Funktionen in den Source/Header Files sind, und wie ich eben rausfand, die automatisch generierten html-docs aus den Source/Header Files!? Den Rest muss ich mir dann irgendwie aus den Datenblätter zusammensuchen, z.B. wie in dem Beispiel die "DataDirection"? In dem obigen Beispiel bedeutet das also, dass z.B. XPAR_MYUART_DEVICE_ID durch den vergebenen Namen festgelegt wurde? Ich steig da momentan noch nicht so ganz hinter alles bzw. mir fehlt gerade eine klare Referenz/Doku auf die Programmierung ^^ Ich seh schon, dass das eine langes Suchen wird. Vielen Dank & Gruß!
Der Virtex4 kann von selber nicht direkt von externem Flash (z.b.) booten. Macht aber nicht viel, wenn du erstmal den PPC grundlegend zum laufen kriegen willst. Du musst dir im EDK dein Hardwaresystem zusammenklöppeln. Das geht recht einfach mit dem Base System Builder für fertige Xilinx Evalboard bzw. noch einigermaßen komfortabel für eigene Hardware (hab das ganze Prozedere mit einem VFX20 auf eigener Platine durch). Hierbei musst du allerdings alle Pins im ucf File selber definieren für deine Hardware. Für den Anfang reicht es erstmal einen recht großzügigen (~32kb und mehr) Blockram als Daten und Instruktionsspeicher zu nehmen. Der Vorteil ist, dass dein Programm gleich mit ins Xilinx Prom mit reinkann (PPC startet dann wirklich direkt nach dem Einschalten mit dem Programm). Wenn du mit dem EDK ein neues xmp Projekt erstellst bekommst du eigentlich 2 Softwareprojekte als Beispiel miterstellt. Meistens "TestApp_Memory" und "TestApp_Peripheral" evtl. noch "ppc405_bootloop". Da kannst du eigentlich schon drin losprogrammieren. Zum externen Flashprom für Xilinx-Kernel (spätestens mit Xilkernel reicht der interne Blockram nicht mehr aus, da brauchst du was externes wie DDR-1 oder 2 RAM für den Arbeitsspeicher) könntest du im EDK mal das Datenblatt für den "XPS Multi-Channel External Memory Controller / xps_mch_emc" anschauen. Da läuft mein 4MB Flashprom dran. Zur Xilinx Dokumentation sag ich jetzt mal nichts.... Die Sourcefiles hast du ja schon gefunden :) viel mehr gibts oft nicht Thorsten
Thorsten, danke für deine Antwort! Das Hardwaresystem wird ein anderer zusammenklöppeln, ich krieg das dann hingestellt :) Werd da selber nichts machen, auch nicht in der udf o.ä. :) Momentan arbeite versuche ich mich halt an einem ML403 zumindest in hinsicht Simulation ... die auch noch nicht wirklich funkioniert ^^ [quote]
1 | Für den Anfang reicht es erstmal einen recht großzügigen (~32kb und |
2 | mehr) Blockram als Daten und Instruktionsspeicher zu nehmen. Der Vorteil |
3 | ist, dass dein Programm gleich mit ins Xilinx Prom mit reinkann (PPC |
4 | startet dann wirklich direkt nach dem Einschalten mit dem Programm). |
[/quote] Das frage ich mich eh, wie das dann ist, wenn ich mehrere "Applicaion Projects" habe, wie z.B. die von dir erwähnten TestApp_Peripheral und _Memory und dann vll noch ein eigenes ... er führt ja dann nicht alle aus. Da sag ich ihm ja dann mit dem Haken "Mark to initialize BRAM", welches er dann gleich laden soll. Richtig? :) Ich weiß nun sicher, dass auf dem Board definitiv ein DDR-Ram sein wird und ein Flash-Speicher, außerdem ein USB-Interface. Aber das dauert noch ein bisschen, muss ja erstmal die grundlegenden Sachen verstehen und dann irgendwann hinkriegen :) Vielen Dank & Gruß!
>>
Das frage ich mich eh, wie das dann ist, wenn ich mehrere "Applicaion
Projects" habe, wie z.B. die von dir erwähnten TestApp_Peripheral und
_Memory und dann vll noch ein eigenes ... er führt ja dann nicht alle
aus. Da sag ich ihm ja dann mit dem Haken "Mark to initialize BRAM",
welches er dann gleich laden soll. Richtig? :)
<<
Genau richtig.
Der Teil der als BRAM Init markiert ist, wird dann später in ISE unter
dem Build-Punkt "Update Bitstream with Processor Data" in das Bitfile
integriert und wandert somit mit ins Xilinx Bootprom.
Später wird dann wahrscheinlich an der Stelle der Bootloader stehen (Den
Xilinx für übliche parallele Flashprom mitliefert), der dann das
Programm aus dem Flash ins DDRRam lädt und dorthin springt.
Was ich noch nicht ganz mitbekommen habe ist, ob du wirklich ein ml403
bei dir auf dem Tisch hast? Wenn ja, kann man damit mit dem EDK ein
System zusammenbauen lassen um sich dort einige Sachen abzugucken. So
bin ich das ganze angegangen.
Gruß
[quote]
1 | Genau richtig. |
2 | Der Teil der als BRAM Init markiert ist, wird dann später in ISE unter |
3 | dem Build-Punkt "Update Bitstream with Processor Data" in das Bitfile |
4 | integriert und wandert somit mit ins Xilinx Bootprom. |
5 | Später wird dann wahrscheinlich an der Stelle der Bootloader stehen (Den |
6 | Xilinx für übliche parallele Flashprom mitliefert), der dann das |
7 | Programm aus dem Flash ins DDRRam lädt und dorthin springt. |
[/quote] Gut, dann habe ich das richtig verstanden :) Aber ich stell mir jetzt einfach folgendes vor. Ich hab jetzt 3 "Application Projects" und eines davon ist als Init BRAM markiert, d.h. das wird dann automatisch geladen ... kann jetzt mein Bootloader sein oder sonst was. Wie krieg ich es dann hin, dass es die anderen 2 "Programme" auch lädt, also wie greif ich auf die zu? Muss ich die seperat (z.B. auf den Flash) übertragen und dann an die Adresse springen? Das ist mir noch nicht ganz klar. Nein, ich habe leider kein ML403 vor mir stehen, auch wenn ich es gerne hätte ^^ Ich habe mir mit dem BSB ein ML403 erstellt, auf dem ich momentan teste und dann ein bisschen simulier bzw. das Simulieren funktioniert noch nicht wirklich ^^ Das richtige Board, das irgendwann mal vor mir stehen wird, dauert noch ein bisschen. Vielen Dank & Gruß!
>> Wie krieg ich es dann hin, dass es die anderen 2 "Programme" auch lädt, also wie greif ich auf die zu? Muss ich die seperat (z.B. auf den Flash) übertragen und dann an die Adresse springen? << Dafür hat Xilinx die XMD Debug Konsole dabei. Dafür brauchst du im PPC Design ein Debug Module. Das sollte eigentlich standartmäßig vom System Builder dabei sein. Mit dem XMD kannst du den PPC kontrollieren, stoppen, ein neues *.elf File hochladen und dass dann starten. Wenn du XMD übers EDK aufrufst, verbindet er sich afaik automatisch mit deinem Board übers Xilinx JTAG Kabel. Wenn du XMD aus dem SDK startest muss man noch in der console mit "connect ppc hw" oder "connect mb mdm" (ppc <-> microblaze) auf den Prozessor zugreifen. paar nützliche Befehle: stop - stoppt prozessor dow <filename.elf> - lädt neue software hoch run - startet den prozessor wieder an startaddresse Wie man mehrere Programme z.b ins Flash oder Xilinxprom bekommt weiß ich nicht. Habe es wie oben beschrieben immer nur zum debuggen benutzt. Gruß
Danke für die Hilfe, Thorsten. Du hast mir schon sehr viel geholfen. Wenn ich Glück habe, kann ich diese Woche schon anfangen auf dem Board ein bisschen zu arbeiten, oder erst nächste Woche. Dann bin ich mal gespannt, ob das mit dem Debuggen/JTAG auf Anhieb funktioniert ... ich glaubs ja noch nicht wirklich ;) Das Simulieren habe ich jetzt auch hinbekommen, so dass ich jetzt wenigstens ein bisschen damit rumspielen kann :) Hast du mit dem Xilkernel auch schon was gemacht? Die Frage, ob es sinnvoll ist, den zu benutzen, kann ich mir eigentlich sparen, das kommt ja drauf an, was ich damit machen will und das weiß ich selber noch nicht genau :) Aber gut, was steht mir mit dem Xilkernel alles für Möglichkeiten offen, das würde mich mehr interessieren. Vielen Dank & Gruß!
Hi, ja ich habe Xilkernel schon benutzt im zusammenhang mit Ethernet über die XPS_ll_temac und lwip. Auf der einen Seite ist es sehr angenehm mit Threads zu arbeiten um so eigenständige sachen in eigene Funktionen auszulagern, die dann so vor sich hin laufen. Auf der anderen Seite kann man sich damit geschwindigkeitsmäßig auch ganz gut ins eigene Bein schiessen, je nach dem welchen Schedulermodus man verwendet (Priorisert / Round-Robin). Da muss man die Vor und Nachteile für seine Anwendung abwägen. Xilkernel selber ist auch ein ziemliches Durcheinander was Dokumentation von Xilinx angeht, aber das ist ja nichts neues. Viel Glück Thorsten
Hi, ich schreibe grad Diplomarbeit und habe mich zu Beginn auch kurz mit der EDK beschäftigt (microblaze implementiert und reference designs laufen lassen). Für mich war damals diese Seite ganz hilfreich, so als Einstiegshilfe: http://www.fpgamac.com/html/edk.html Da gibts ein paar Tutorials zu EDK, Modelsim, und auch zum XMD mit den ganzen Befehlen und so. Vielleicht bringt es dir ja was. Gruß, Christoph
Hi! Ok, ich denke, der Xilkernel wird dann wahrscheinlich nichts für mich sein, so weit soll es doch nicht gehen :) fpgamay.com kenne ich schon, aber dennoch vielen Dank, Christoph. Sie Seite hat mir schon weitergeholfe. Ich habe momentan nur noch ein paar Probleme mit ModelSim bei der Simulation, aber dafür mache ich lieber einen neuen Thread auf. Dank euch für alle Antworten, ihr habt mir schon sehr geholfe. Gruß.
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.