www.mikrocontroller.net

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


Autor: Matthias J. (mello)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Harald Flügel (hfl)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Matthias J. (mello)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Florian V. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Harald Flügel (hfl)
Datum:

Bewertung
0 lesenswert
nicht 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

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.