Forum: FPGA, VHDL & Co. Leon3 auf Spartan6 bekommen (Probleme)


von Daniel S. (pod)


Lesenswert?

hi,

Ich versuche den freien Leon3 Prozessor auf den FPGA vom Spartan-6 SP601 
Evaluation Board von Xilinx zu bekommen.

Hier der Link zur GRLIB mit dem Leon3:
http://www.gaisler.com/cms/index.php?option=com_content&task=view&id=156&Itemid=104

Ich verwende Cygwin, gehe zum Ordner 
grlib-gpl-1.0.22-b4095\designs\leon3-xilinx-sp601 und führe make xconfig 
aus. Hier kann man die Einstellungen für den Processor vornehmen.
Danach kompiliere ich sie mit dem befehl make ise-map.
Dabei bekomme ich folgende Fehlermeldungen:

Error:XST:2937 - Processing TIMESPEC OFFSET: No signal name erx_clk 
found in design.

Error:XST:1489 - Constraint annotation failed.

Ich habe Ethernet deaktiviert, deswegen dürfte er die erx_clk garnicht 
erst verwenden. Er findet es nicht obwohl es sowohl beim Design, als 
auch beim Board angegeben ist.

grlib-gpl-1.0.22-b4095\designs\leon3-xilinx-sp601
grlib-gpl-1.0.22-b4095\boards\xilinx-sp601-xc6slx16\leon3mp.ucf

Hab auch schon versucht die erx_clk einfach auszukommentieren... nützt 
nichts.

Handelt es sich hierbei um einen Bug? Hat jemand einfach eine Zuweisung 
vergessen?

Gruß pod

von Duke Scarring (Gast)


Lesenswert?

Daniel Schembri schrieb:
> Error:XST:2937 - Processing TIMESPEC OFFSET: No signal name erx_clk
> found in design.
>
> Error:XST:1489 - Constraint annotation failed.
>
> Ich habe Ethernet deaktiviert, deswegen dürfte er die erx_clk garnicht
> erst verwenden. Er findet es nicht obwohl es sowohl beim Design, als
> auch beim Board angegeben ist.

Da ist xst schlampig programmiert, eine Warnung hätte gereicht.
Probier mal alle "erx_clk"-Vorkommen im .ucf auszukommentieren.
(Oder wahlweise Ethernet drinzulassen.)

Duke

von Daniel S. (pod)


Lesenswert?

danke für die Antwort.

Ich habs jetzt hinbekommen. Ich habe alles was mit erx_clk und etx_clk 
zu tun hatte rauskommentiert und die Variable lock.
Ich hab auch das komplette Ethernet und den DDR2 SDRAM (Der laut Gaisler 
noch nicht unterstützt wird) rauskommentieren müssen.

Jetzt konnte ich fehlerfrei mit make ise-map und make ise kompilieren.

Hab die bitfile über Impact auf den FPGA geschrieben bekommen =)


Aber jetzt das nächste Problem:

Ich möchte das nun mit GRMON hardwaredebuggen. Er erkennt den FPGA.

Aber ich bekommen immer die Fehlermeldung:

"AMBA Plug and Play not found"

Was hat es mit diesem AMBA (Ein Bus?) auf sich?

von Stefan R. (stefripp)


Lesenswert?

Bei mir hat GRLIB mit CYGWIN nie richtig funktioniert. Laut Jiri Gaisler 
kann er die Software nicht den laufenden Softwareupdates von Windows und 
Cygwin anpassen. Ich habe deshalb LINUX installiert und konnte dann 
relativ problemlos damit arbeiten.
Allerdings hatte mein Boarddesign auch einige kleinere Bugs. Die Boards 
sind meist selbst von Usern bereitgestellt und deshalb nicht immer ganz 
fehlerfrei.
Ich kann dir unbedingt empfehlen, dich der Mailingliste bei Yahoo 
anzuschließen.

von Duke Scarring (Gast)


Lesenswert?

Daniel Schembri schrieb:
> Ich möchte das nun mit GRMON hardwaredebuggen. Er erkennt den FPGA.
Gut. Welche Schnittstelle verwendest Du für GRMON?


> Aber ich bekommen immer die Fehlermeldung:
> "AMBA Plug and Play not found"
>
> Was hat es mit diesem AMBA (Ein Bus?) auf sich?
Ja. AMBA ist ein Bus-System (AHB, APB, AXI, etc.), welches von ARM 
entworfen wurde. Die grlib macht intensiven Gebrauch davon.

Duke

von Daniel (Gast)


Lesenswert?

Ich habe Xilinx USB (USB JTAG) verwendet.

Das Amba Problem hab ich gelöst. Ich hab die bereits vorgegebenen 
Einstellungen im Xconfig genommen. Habs nochmal neu Compiliert.

Jetzt meckert er aber im GRMON wegen eines fehlenden Stack Pointers. Da 
bin ich grad am rumprobieren. Debuggen kann ich. Ich sehe die 
Speicherbereich in Hex.
Aber ich kann z.B. kein HelloWorld Programm ausführen...

Ich glaub das liegt an den Xconfig Einstellungen. Das ist wohl ein 
gewisses feingefühl gefordert.

Bei der Mailingliste hab ich mich jetzt angemeldet.

Danke für die zahlreiche Unterstütztung =)

von Daniel (Gast)


Lesenswert?

ok das problem mit dem stackpointer hab ich auch gelöst, lag an ner 
Einstellung.

Jetzt kann ich aber immer noch kein hello world ausführen...

Er bringt immer diese Meldung: IU in error mode (tt = 0x02)

von Duke Scarring (Gast)


Lesenswert?

Daniel schrieb:
> Jetzt kann ich aber immer noch kein hello world ausführen...
>
> Er bringt immer diese Meldung: IU in error mode (tt = 0x02)

Ist Dein Programm richtig im Speicher abgelegt? (verify?)
tt = 0x02 heißt doch illegal instruction, oder?!

Duke

von Daniel S. (pod)


Angehängte Dateien:

Lesenswert?

Er legt das Programm immer bei 0x40000000 ab

die befehle "run" und go 0x40000000 bringen immer diese fehlermeldung.

Verify c:/helloworld/release/helloworld bringt auch Fehlermeldungen...

Ich hab hier mal ein paar Screenshots gemacht:

Der erste zeigt das Initialisieren und das runterladen des Programms an.
Das zweite die info sys
und das dritte den verify error

Kann es sein das ich überhaupt keinen Speicher habe? oder keinen 
Zugriff?


Ich steh irgendwie auf der Leitung...

von Duke Scarring (Gast)


Lesenswert?

Daniel Schembri schrieb:
> Kann es sein das ich überhaupt keinen Speicher habe?

Doch Du hast welchen, den "AHB static RAM". Aber der liegt bei 0xA000..
Bei 0x4000.... liegt laut Deiner memory map nichts. (Üblicherweise packt 
man dort den DDR-Ram hin.)

Duke

von Daniel S. (pod)


Lesenswert?

Duke Scarring schrieb:
> Doch Du hast welchen, den "AHB static RAM". Aber der liegt bei 0xA000..
> Bei 0x4000.... liegt laut Deiner memory map nichts. (Üblicherweise packt
> man dort den DDR-Ram hin.)

Und wie lad ich mein Programm in den "AHB static RAM"?

Ich find den Befehl nicht. Das wäre ja die Addresse 0xA000.

Wie komm ich dahin?

von Duke Scarring (Gast)


Lesenswert?

Schau mal ins Linkerskript. Da müssten die Adressen angegeben sein.

Duke

von Daniel S. (pod)


Lesenswert?

ich habe jetzt die addressen manuell geändert mit dem Compiler.
Aber ich glaube der Platz reicht nicht für eine HelloWorld Anwendung aus

Ich bekomme beim debuggen mit GRMONRCP einen Speicherbereich von 0x00 - 
0xfc angezeigt.

Für das Helloworld braucht er aber mindestens vierstellig.

Bekomme deshalb immernoch denselben fehler. Obwohl der Adressbereich von 
data und text anders ist.

von Duke Scarring (Gast)


Lesenswert?

Du könntest auch den AHB static RAM an die Adresse 0x4000.... legen.
Laut Deinem debug-Log sollte der RAM 4kB groß sein.

Duke

von Daniel S. (pod)


Lesenswert?

hm, hab ich jetzt auch mal probiert. hat sich nichts geändert.

illegal_instruction: UNIMP or other un-implemented instruction.

Hab schon einiges Probiert. Ich glaub nicht das es an der 
Hardwarekonfiguration liegt.

Vielleicht ist es ja ein Fehler von Softwareseite , ein 
Programmierfehler?
Aber der Compiler bringt mir keine Fehlermeldungen...

Naja mal schauen^^

Danke für deine Hilfe. Schönes Wochenende wünsche ich euch =)

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
Noch kein Account? Hier anmelden.