www.mikrocontroller.net

Forum: FPGA, VHDL & Co. IP core für Spartan3 FPGA mit gcc-Unterstützung


Autor: Andreas N. (poolspieler)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
ich suche gerade einen passenden IP core für ein XC3S400 FPGA.
Am besten wäre der core in VHDL geschrieben - kann aber zur Not auch 
Verilog sein.
Es soll vom gcc unterstützt werden - evtl. auch nach aufspielen eines 
Toolchains.
Falls es einen anderen C-Compiler gibt, wäre es auch eine Möglichkeit.
Es sollen mindestens 64k Program Memory und 64k Data Memory unterstützt 
werden.

Ich habe mir bei www.opercores.org z.B. den 8051 oder den OpenRISC 1000 
angesehen - was haltet Ihr davon? Sollte es damit (in endlicher Zeit) 
möglich sein, sich eine anständige Entwicklungsumgebung aufzubauen???

Oder mit welchen Softcore Prozessoren arbeitet Ihr (MIT C-Compiler)?

Beste Grüße,

Andreas

Autor: Roger Steiner (edge)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hatte schon den LEON3 von Gaisler im einsatz.

http://www.gaisler.com/cms/

Laeuft gut, compiler ist ein gcc, debugging und ISP recht einfach ueber 
verschiedene interfaces. Kann dir aber nicht sagen ob das in einem 
XC3S400 gut Platz hat.

Arbeiten tu ich hauptsaechlich mit NiosII, aber das nuetzt dir wohl 
nicht viel.

Der Microblaze wuerde deinen Anforderungen wohl am besten gerecht, 
ausser es muss eine 'gratis' Loesung sein.

Cheers, Roger

Autor: Andreas N. (poolspieler)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Roger,
vielen Dank für Deine Antwort!
Den Microblaze habe ich mir auch schon angeschaut. Eine 'gratis' Lösung 
(wie z.B. der zu kleine PicoBlaze) muss es nicht unbedingt sein - aber 
unnötige Kosten möchte ich meiner Firma halt auch ersparen...
Wenn ich mir sicher wäre, dass MicroBlaze für meine Ansprüche gut 
funktioniert, dann würde ich mir evtl. auch das EDK kaufen.
Oder würde ich dann auch das SDK von Xilinx brauchen???

Ich habe mir (vor längerer Zeit) schon mal eine Trial heruntergeladen. 
Doch aus Zeitgründen konnte ich diese wahnsinnig mächtigen Tools gar 
nicht ausprobieren. Und jetzt dürfte die Version abgelaufen sein :-(

Kann mir evtl. jemand sagen, was für Tools (wenn man einen C-Compiler 
einsetzen will) für den MicroBlaze nötig sind?

Grüße,
Andreas

Autor: Roger Steiner (edge)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mein letztes MicroBlaze Projekt ist schon etwa vier Jahre her.
Der gcc/gdb war dann schon Bestandteil des EDK.
Software Entwicklung ging damit ziemlich flott (Heute vermutlich noch 
besser).
Alles in allem habe ich mit dem MicroBlaze sehr gute Erfahrungen 
gemacht.

Cheers, Roger

Autor: Klaus Falser (kfalser)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ein XC3S400 hat aber nur 288Kbits Block Ram, und diese sind zu 16 x 2Kx9 
bit organisiert.
Du hast intern also nur 32 KByte Speicher.
Wenn Du 64 KByte Programmspeicher und 64KByte RAM brauchst, musst Du 
externen Speicher ansprechen.

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also ich würde auch den MicroBlaze empfehlen. Da hat man alles aus einer 
Hand. Das EDK ist bissl gewöhnungsbedürftig, aber nach etwas 
Einarbeitung funktioniert es gut. Der Microblaze wird dann über 
Eclipse/GCC/GDB programmiert und debuggt. Debuggen geht über das normale 
JTAG Kabel von Xilinx. Musst halt schauen, dass du eventuell einen 
größeren Spartan nimmst, mit mehr Blockram, der 400er ist da schon arg 
klein.

Autor: Andreas N. (poolspieler)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
vielen Dank für Eure Antworten.
Ich bin gerade dabei, mir das aktuelle EDK herunterzuladen.

Die ersten Tests werde ich wohl mit dem XC3S400 machen und mich mit 
weniger Platz zufrieden geben.
Bei Erfolg muss ich dann wohl auf einen größeren umsteigen - ich wollte 
allerdings dem Ball Grid Arrays so lange wie möglich ausweichen...
Damit habe ich halt noch keine Erfahrung...

Beste Grüße,

Andreas

Autor: Klaus Falser (kfalser)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> ich wollte allerdings dem Ball Grid Arrays so lange wie
> möglich ausweichen..
Davor braucht man zumindest im professionellen Bereich keine Angst zu 
haben.
Ein guter Dienstleister für die Leiterplattenfertigung schafft das ohne 
Probleme.

Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Andreas N. wrote:
> Falls es einen anderen C-Compiler gibt, wäre es auch eine Möglichkeit.
> Es sollen mindestens 64k Program Memory und 64k Data Memory unterstützt
> werden.

T51-Core. Wird vom sdcc unterstützt, Anleitung zum Einstieg findest 
du im verlinkten Artikel.

Autor: Andreas N. (poolspieler)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Klaus Falser wrote:
>> ich wollte allerdings dem Ball Grid Arrays so lange wie
>> möglich ausweichen..
> Davor braucht man zumindest im professionellen Bereich keine Angst zu
> haben.
> Ein guter Dienstleister für die Leiterplattenfertigung schafft das ohne
> Probleme.

Hallo Klaus,
das ist schon richtig.
Ich lasse z.B. bei MVPCB fertigen. Die kriegen das mit Sicherheit hin.
doch bisher habe ich nur in zwei Layern (mit Target) gearbeitet und bei 
Bal Grids werde ich sicherlich mehrere Layer benötigen.
Das soll auch noch nicht das Problem sein.
Aber wenn ich jetzt eine für mich neue Prozessor-Technologie UND eine 
neue Leiterplatten UND Bestückungstechnik beginne, dann wird mir halt 
die Anzahl der Fehlerquellen langsam zu hoch...

Vielleicht sollte ich mich einfach mal mit unserem Bestücker 
kurzschließen... Der hätte sicherlich ein paar Tips für mich.

Gruß,
Andreas

Autor: Klaus Falser (kfalser)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> bisher habe ich nur in zwei Layern (mit Target) gearbeitet
Für den Betrieb eines XC3S400 im professionellen Einsatz würde ich 4 
Layer dringend empfehlen ...

Autor: Andreas N. (poolspieler)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
ich habe nun meine ersten Schritte mit dem EDK (+SDK) gemacht.
Ich bin schon mal so weit, dass ich Daten auf der LCD ausgeben kann (war 
ein Demoprojekt auf der Xilinx-Seite).
In einem von mir selbst erstellten Projekt kann ich Daten über die 
RS232-Schnittstelle ausgeben und die LEDs ansteuern.
Ich denke, dass ist schon mal einiges.

Mein Problem:
Warum funktioniert z.B. der printf-Befehl nicht - der abgespeckte 
xil_printf-Befehl aber schon?

Fehlermeldung des SDK für mein Programm MIT printf:
**** Full rebuild of configuration Debug for project MeineApplikation ****

make clean all 
rm -rf MeineApplikation_main.o  MeineApplikation_main.d  MeineApplikation.elf
mb-gcc -c -mno-xl-soft-mul -mxl-pattern-compare -mcpu=v7.10.a -I../../microblaze_0_sw_platform/microblaze_0/include -xl-mode-executable -g -O2 -oMeineApplikation_main.o ../../../MeineApplikation/src/MeineApplikation_main.c
 
Building target: MeineApplikation.elf
mb-gcc -o MeineApplikation.elf MeineApplikation_main.o    -mno-xl-soft-mul -mxl-pattern-compare -mcpu=v7.10.a  -L../../microblaze_0_sw_platform/microblaze_0/lib -xl-mode-executable   
Finished building: MeineApplikation.elf

************** Validating ELF File **************

Validating ELF Section Addresses with Hardware Address Map...
elfcheck -noheader -mhs C:/Workdir/Xilinx/Tests/meinTest/system.mhs -p xc3s500efg320-4 -xmpdir C:/Workdir/Xilinx/Tests/meinTest -pe microblaze_0 MeineApplikation.elf
ERROR:MDT - Section .text (0x50 - 0xEF53) does not fit completely into memory
   ilmb_cntlr (0x0 - 0x7FFF).
ERROR:MDT - Section .init located at address 0xEFA4 does not map to any memory
   found in the hardware design.
ERROR:MDT - Section .fini located at address 0xEFCC does not map to any memory
   found in the hardware design.
ERROR:MDT - Section .ctors located at address 0xEFEC does not map to any memory
   found in the hardware design.
ERROR:MDT - Section .dtors located at address 0xEFF4 does not map to any memory
   found in the hardware design.
ERROR:MDT - Section .rodata located at address 0xEFFC does not map to any memory
   found in the hardware design.
ERROR:MDT - Section .data located at address 0xF580 does not map to any memory
   found in the hardware design.
ERROR:MDT - Section .eh_frame located at address 0xFAB0 does not map to any
   memory found in the hardware design.
ERROR:MDT - Section .jcr located at address 0xFAB4 does not map to any memory
   found in the hardware design.
ERROR:MDT - Section .bss located at address 0xFAB8 does not map to any memory
   found in the hardware design.
ERROR:MDT - Section .stack located at address 0xFB24 does not map to any memory
   found in the hardware design.
ERROR:MDT - elfcheck failed!
INFO:MDT - Try using the linker script generation tools to generate an ELF that
   maps well to your hardware design.
make: *** [MeineApplikation.elf] Error 2
Build complete for project MeineApplikation

Wo anders im Netz habe ich gelesen, dass es wohl daran liegt, dass der 
printf-Befehl nicht ins BRAM passt (ich benutze KEIN SRAM - um alles am 
Anfang möglichst einfach zu halten...)

OK, selbst wenn es so ist, dass der printf-Befehl nicht passt - wo finde 
ich eine Referenz mit den portierten Xilinx-C-Befehlen wie z.B. 
xil_printf?

Wäre schön, wenn mir jemand ein paar Tips geben könnte.

Beste Grüße,

Andreas

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.