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
Gibt es vielleicht noch ein übergeordnetes globales Interrupt-Enable-Bit?
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:
1 | #include <xexception_l.h> |
2 | |
3 | int main(void) |
4 | {
|
5 | ...
|
6 | XExc_mEnableExceptions(XEXC_ALL); |
7 | ...
|
8 | }
|
Ansonsten guck mal auf der Xilinx-Seite, die strotzt von Dokumentation, unter anderem: http://www.xilinx.com/bvdocs/appnotes/xapp778.pdf
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
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.