Forum: FPGA, VHDL & Co. NIOSII Programm startet nicht


von Matthias J. (mello)


Lesenswert?

Hallo,

ich bin Anfänger in sachen Altera FPGAs und NIOSII. Ich benutze das 
Altera CycloneIII Starter Board ( NEEK ) mit einem Cyclone III EP3C25 
FPGA.

Ich habe mit dem SOPC-Builder ein System zusammengestellt, dass folgende 
Komponenten hat:

- onchip_memory
- cpu (NIOSII/s)
- tri_state_bridge
- SRAM_Controller (cypress CY7C1380C SSRAM)
- interval timer
- PIO für leds und Taster
- altpll für den SRAM clock
- system id

Ich hab das System mit Quartus 10.0 sp1 synthetisiert und auf das FPGA 
geladen, ohne Fehlermeldungen.

Ich hab ein einfaches C-Programm mit der NIOSII EDS geschrieben, welches 
lediglich eine LED Toggelt. Beim Compilieren des Projekts gibt es keine 
Fehler, aber wenn ich das Programm auf dem NIOSII ausführe passiert 
garnichts. Als würde er das Programm nicht ausführen. Wenn ich das 
Projekt debugge, erscheint kein cursor im Codefenster und auch in den 
Abschnitten Disassembly, Variables oder Registers wird nichts angezeigt.

Kann es sein, das der Processor an der falschen Adresse steht, wo kein 
Programmcode enthalten ist??

Kennt jemand das Problem oder kann mir jemand ein Tip geben wie ich bei 
der Problemlösung weiter verfahren könnte??

Vielen Dank
grüße Matthias

von Harald F. (hfl)


Lesenswert?

Hallo Matthias,

wenn ich das richtig sehe, hast Du zwei Möglichkeiten, wo die IDE (SBT 
?) das Programm hinlinken könnte: on-chip RAM und SSRAM. Man muss bei 
der CPU ja den Reset-Vektor festlegen, was hast Du da ausgewählt? Passt 
das zu der Einstellung des Linkers? Und schau mal bitte die Takte an, 
ich denke, es ist nicht korrekt, wenn nur die eine Komponente SSRAM 
Controller mit einem anderen Takt läuft. Schau mal in ein Beispieldesign 
für NEEK rein, in dem der SSRAM Controller benutzt wird.

Grüße,
Harald

von Matthias J. (mello)


Lesenswert?

Hallo Harald,

zunächst vielen Dank für deine schnelle Antwort.

Ich hab den Reset Vector im SOPC-Builder auf den on-chip memory gelegt, 
hab allerdings dann beim ausführen des Programms bemerkt, dass der 
Processor aus dem ssram startet ( anhand der Adresse, welche die SBT 
console ausgibt 'starting Processor at address 0x... ). daraufhin hab 
ich im BSP-Editor im Tab 'Linker Script' alle Linker Sections auf das 
on-chip memory gesetzt. Hatte allerdings keine Auswirkung.

Was mich zu einer Frage bringt:
Warum werden die Linker Sections alle automatisch auf das ssram gelegt, 
bzw. kann ich das noch anderweitig festlegen als im nachhinein über den 
BSP-Editor??

Danke für den Tip mit dem Beispieldesign, werd ich gleich mal 
ausprobieren.

Allerdings benutze ich in meinem Programm das ssram noch garnicht, d.h. 
ich greife nicht darauf zu. Kann sich ein falscher Takt dennoch so 
gravierent auf das Programm auswirken??

Ich bin bis jetzt davon ausgegangen, dass wenn etwas mit dem Speicher 
nicht stimmen sollte, ich das erst bei Speicherzugriffen bemerke. Leider 
bin ich bis jetzt noch nicht soweit gekommen.

Grüße
Matthias

von Florian V. (Gast)


Lesenswert?

Matthias J. schrieb:
> Warum werden die Linker Sections alle automatisch auf das ssram gelegt,
> bzw. kann ich das noch anderweitig festlegen als im nachhinein über den
> BSP-Editor??

Als ich das letzte Mal einen Nios benutzt habe, hat man das in der 
Eclipse-IDE einstellen können. Irgend eine Projekteinstellung. Dort 
wurde das "was kommt wo hin" eingestellt. Frag mich nur nicht wo genau 
das war.... aber ich musste auch suchen. Auf alle Fälle zeigt Dir das 
auch sämtliche Adressbelegungen an.

Konnte man den Resetvektor nicht auf das JTAG-Interface stellen, für's 
debuggen? Das ist bei mir leider schon alles länger her.

Ich denke mal dass die Standardeinstellung "Start aus dem großen RAM" 
halt den Hintergrund hat, dass letztendlich alle größeren Projekte in 
einem externen RAM laufen. Intern wird es schnell zu knapp.

von Harald F. (hfl)


Lesenswert?

Matthias J. schrieb:
> Was mich zu einer Frage bringt:
> Warum werden die Linker Sections alle automatisch auf das ssram gelegt,
> bzw. kann ich das noch anderweitig festlegen als im nachhinein über den
> BSP-Editor??

Das sind genau genommen zwei Fragen:
Warum werden die Linker Sections alle automatisch auf das ssram gelegt?

Weil der Programmierer der IDE/BST das so gemacht hat. :-)
Ohne Scherz: Per default wird das Programm auf die Adresse des größten 
Speichers gelinkt, der am Instruction Master hängt.

> bzw. kann ich das noch anderweitig festlegen als im nachhinein über den
> BSP-Editor??

Nein, anders geht das nicht. Das ist die richtige Methode, so macht man 
das.

Grüße,
Harald

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.