mikrocontroller.net

Forum: FPGA, VHDL & Co. Von Hw/Sw Co-sim zum Programm


Autor: Frederik B. (fbo)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

ich habe ein Problem bei meinem Projekt mit einem Xilinx Spartan6 FPGA 
das ich mit System Generator programmieren möchte.

Ich versuche Daten aus dem mit System Generator erzeugten Programm über 
UART auszugeben. Dazu habe eine funktionierende HW/SW Co-Simulation 
erstellt. Darin habe ich ein XPS Projekt erzeugt, in System Generator 
eine JTAG Co-Simulation erstellt und letzlich ein C-Programm im SDK 
geschrieben, dass aus einem FIFO Daten ließt und diese über UART 
ausgibt.

Bis dahin klappt alles, beim versuch das fertige Programm auf das Board 
zu laden, hänge ich aber total. Ich habe versucht das .elf Programm aus 
SDK direkt als Startprogramm des EDK Prozessors anzugeben und dann über 
ISE auf das FPGA zu laden... ohne Erfolg. Versuche ich das .elf im XPS 
als Startprogramm einzustellen, bekomme ich Fehlermeldungen beim 
kompilieren des Bitstreams (ERROR:Xflow - Program ngdbuild returned 
error code 2. Aborting flow execution...make: *** [__xps/system_routed] 
Error 1). Lasse ich von System Generator eine .bit erzeugen und lade 
diese mit iMPACT hoch, passiert nichts auf dem USB Port.

Also noch einmal kurz die Frage: Wie komme ich von einer 
funktionsfähigen HW/SW Co-Simulation zu einer Standalone Version, die 
ich auf das FPGA hochladen kann?

Vielen Dank für eure Hilfe,

fbo

PS: Habe das System Generator Modell angehängt. Der C-Code folgt hier:

#include <stdio.h>
#include "platform.h"
#include "xparameters.h"
#include "sg_axiiface.h"

int main()
{
    init_platform();

    // initialize variables
    uint32_t dout_empty, value;
    xc_iface_t *iface;
    xc_from_fifo_t *fromfifo_dout;

    // initialize the software driver
    xc_create(&iface, 
&SG_AXIIFACE_ConfigTable[XPAR_SG_AXIIFACE_0_DEVICE_ID]);

    xc_get_shmem(iface, "dout", (void **) &fromfifo_dout);
    if (fromfifo_dout == NULL) {
        print("FIFO 'dout' not found\r\n");
    }

    print("Start\n\r");

    while(1) {
    //  wait until 'dout' FIFO has data
    do {
      xc_read(iface, fromfifo_dout->empty, &dout_empty);
    } while (dout_empty == 1);
    // read data from 'dout' FIFO
    xc_read(iface, fromfifo_dout->dout, &value);

    xil_printf("%d\r\n", value);
    }

    print("Done\r\n");

    cleanup_platform();

    return 0;
}

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.