Hallo Leute!
Ich möchte gerne die IRQ-Leitung des Power-PC-Prozessors des Virtex4
einschalten.
In der Doku steht MSR[EE]=1; // External Interrupts
Tolle Sache, nur funktioniert das nicht. Muss ich hierfür etwas
spezielles einbinden?
Danke für eure Hilfe!
Tschüss
Martin
Wie meinen, das funktioniert nicht? In welchem Kontext?
> MSR[EE]=1; // External Interrupts
Das klingt nicht nach plausiblem Quellcode - ich hoffe, niemand
definiert ein Makro mit dem Namen "EE", das ist viel zu gefährlich
(m.E.). Das sieht eher so aus, als wenn das eine kurze Beschreibung ist,
dass das Master Status Register ein External Enable Flag hat, das man
auf '1' setzen muss.
Welches BSP verwendest Du? Wenn standalone, guck Dir mal das Makro
XExc_mEnableExceptions in xexception_l.h an. Mit folgendem Code solltest
Du externe Interrupts bekommen:
Danke Bluehorn!
Ich habe mich jetzt Ewigkeiten rumgespielt und bin fast verzweifelt.
Das Prozessorsystem wurde fehlerfrei erstellt und auch die ganzen
Initialisierungen im C-Code sind korrekt gewesen.
Natürlich, wenn das ganze System jedesmal abstürzt, wenn man den
Bitstream downloadet bzw. wenn der erste IRQ ausgelöst wird, dann
kontrolliert man alles doppelt und dreifach.
Gott sei Dank habe ich ein funktionierendes Beispiel gefunden.
Alle Unterschiede des Beispiel und meines Projektes wurde penibel genau
untersucht.
Und ich kam dahinter was es war nach 8 Stunden:
Wenn man auf Applications klickt: Projekt mit der rechten Maus:
Set Compiler Options: - War "Use Custom Linker Script"
standardmäßig angekreuzt.
Damit aber die ganze Hütte bei einem Auftritt eines IRQs
nicht abstürzt muss man das Häkchen "Use Default Linker Script"
auswählen.
Nun habe ich bitte zwei Fragen:
Wozu dient diese Einstellung und warum ist sie falsch eingestellt!?!
Ich habe nämlich zusätzlich ein Microblaze-Projekt, wo auch "Use Custom
Linker Script" eingestellt ist. Dort funktionieren die IRQs auch mit
dieser Einstellung.
Danke
Tschüss
Martin
> Und ich kam dahinter was es war nach 8 Stunden:> Wenn man auf Applications klickt: Projekt mit der rechten Maus:> Set Compiler Options: - War "Use Custom Linker Script"> standardmäßig angekreuzt.
Nun ja, das ist eigentlich kein Problem. Habe bisher immer ein "custom
linker script" benutzt. Sonst generiert er wohl irgendwo eins und wer
weiss, wann sich das durch ein WebUpdate o.ä. mal ändert.
Es gibt irgendwo einen Menüpunkt, wo Du Dir das Linkerscript generieren
kannst. Dann mal kurz rüberschauen, ob es Sinn macht und abhaken :)
Zur Syntax der Linkerscripts siehe
http://sourceware.org/binutils/docs-2.17/ld/Scripts.html
Besagt eigentlich nur, auf welche Adressen der Code letztendlich
geschoben wird. Auf "herkömmlichen" Systemen kann man eigentlich immer
mit dem gleichen Script fahren, aber auf FPGAs ist ein bisschen viel
Bewegung im Design möglich...
Grützi, Torsten
Danke Bluehorn!
Ich verwende das ML403-Board.
Ein einfaches System kann ich schon bauen.
Doch jetzt wollte ich den DDR_SDRAM für das Programm
und für Daten nutzen.
Das Linker Script ist entsprechend den Default-Einstellungen
eingestellt.
Wenn ich jetzt downloaden möchte, dann erhalte ich folgende
Fehlermeldung:
Error: Data2MEM: 33 - Matching ADDRESS_SPACE for code segment #3 not
found in 'implementation\system_bd.bmm'.
Code segment #3 occupies [0x24000408:0x24000437]
ERROR:MDT - Data2Mem gnerated errors during execution
Ich habe nachgesehen und in diesem besagten File steht nur was von BRAM.
Wie kann ich diesen Fehler umgehen?
Wie kann ich das User-Progamm im DDR-SDRAM laufen lassen?
Ich bin für jeden kleinen Hinweis dankbar.
Danke.
Tschüss
Martin
> Wenn ich jetzt downloaden möchte, dann erhalte ich folgende> Fehlermeldung:> Error: Data2MEM: 33 - Matching ADDRESS_SPACE for code segment #3 not> found in 'implementation\system_bd.bmm'.> Code segment #3 occupies [0x24000408:0x24000437]
Dann passt das Linkerskript nicht zu Deiner BMM, oder Du hast von Hand
die Adresse angegeben (nehme ich mal nicht an).
Du kannst Dir ein neues Linkerscript bauen, indem Du im EDK den
Menüpunkt Software->Generate Linker Script aufrufst, IIRC kommt dann ein
Wizard, wo Du einiges einstellen kannst.
Gruss, Torsten
Ich habe folgendes eingestellt:
Im Wizard beim Erstellen des Projektes habe ich den 64Mx32 DDR_SDRAM
ausgewählt.
Das Programm MemoryTest wähle ich aus und lege Instruction, Data und
Stack/Heap in den DDR_DSRAM.
Dann stelle ich das Projekt fertig und versuche es downzuloaden und
jetzt erhalte ich den oben beschriebenen Fehler.
Wenn ich aber auf Generate Linker Script gehe und alles auf BRAM
umändere, dann funktioniert alles, aber das will ich nicht, denn wenn
die Applikation einmal größer wird oder ich größere Felder anlegen
möchte, dann hätte ich die gerne im DDR_DSRAM.
Danke für eure Mühe.
Tschüss
Martin
> Wenn ich aber auf Generate Linker Script gehe und alles auf BRAM> umändere, dann funktioniert alles, aber das will ich nicht, denn wenn> die Applikation einmal größer wird oder ich größere Felder anlegen> möchte, dann hätte ich die gerne im DDR_DSRAM.
Wieso änderst Du dann alles auf BRAM um? Die obige Fehlermeldung tritt
normalerweise auf, wenn das Linker-Script nicht zur Memory Map (BMM)
passt. Nach Generate Linker Script sollten die beiden wieder zueinander
passen (auch, wenn Du den Kram in den SDRAM legst).
Keine Ahnung, wie der Fehler überhaupt zustande kommt, aber die
Stabilität der Xilinx-Software ist nicht gerade rekordreif.
Gruss, Torsten
Wem sagst du das.
Man sitzt dann oft Stunden an einem kleinen Fehler, welcher von der
EDK-Software verursacht wird.
Es beginnt bei Fehlern im IRQ-System von IP-Cores, Fehlern bei der
Initialisierung von Treibern, Fehlern im Linker-Script.
usw.
Ist die 9.1 Version besser oder hat die auch wieder so
vieeieieieieieieeieieieieieieieiiele Bugs?
@Bluehorn
Wenn ich nun alle Einstellungen auf DDR-Ram ändere (bei generate linker
script), dann erhalte ich sofort wieder den altbekannte Fehlermeldung.
Tschüss
Martin
> Wenn ich nun alle Einstellungen auf DDR-Ram ändere (bei generate linker> script), dann erhalte ich sofort wieder den altbekannte Fehlermeldung.
Ohne weitere Info tappe ich da genauso im Dunkeln, wie Du. Schick mal
das Linkerscript, die .BMM-Datei und am Besten die .MHS-Datei.
Gruss, Torsten
>Ist die 9.1 Version besser oder hat die auch wieder so>vieeieieieieieieeieieieieieieieiiele Bugs?
Ich habe schon zwei Bugs im SDK(9.1) gefunden. Immerhin hat Xilinx
innerhalb von zwei Wochen ein Patch gemacht. Soweit ich weiss soll das
EDK 9.2 im September kommen.
Hallo,
ich habe die selbe Problemme hier. Ich habe eine Applikation die sehr
Groß ist, und dann muss ich legen fast alles um die RAM an. Ich habe
auch eingestellt die Linker_script von EDK Wizard. Ich habe keine Ahnung
vor was mache ich nachste.
Wenn Jemand mir helfen können, dann würde ich sehr froh zu sein :)
Viele grüße
--
David