Forum: FPGA, VHDL & Co. DE2 Cyclone IVE NIOS II hello world


von Himenek (Gast)


Lesenswert?

Hi,

ich habe das Forum hoch und runter durchsucht und finde nichts was mir 
weiterhilft.

Ich will das Tutorial hello_world mit Hilfe von NIOS II Eclipse 11.1 auf 
der Console anzeigen lassen. Im Grunde muss man selber nichts machen 
außer built und run. Jedoch wird bei mir in der NIOS-Console nichts 
angezeigt.


In der anderen Console von NIOS II Eclipse steht folgendes:

Processor is already paused
Reading System ID at address 0x00081018:
    ID value was not verified: value was not specified
    Timestamp value was not verified: value was not specified
Initializing CPU cache (if present)
OK

Downloading 00040000 ( 0%)
Downloading 00046F4C (76%)
Downloaded 28KB in 0.4s (70.0KB/s)

Verifying 00040000 ( 0%)
Verifying 00046F4C (76%)
Verified OK
Starting processor at address 0x000401B4


Ich habe System ID und Timestamp check ausgemacht.
Zudem habe ich die richtie .sopc eingebunden und diese auch correct 
erstellt, da ich mit Hilfe dieser Datei via Quartus II eine LED habe 
blinken lassen.

Warum verifiziert er nicht bis 100%? Und warum zeigt er nichts in der 
NIOS II Console nichts an?!

MfG
Himenek

von Johannes E. (cpt_nemo)


Lesenswert?

Himenek schrieb:
> Ich habe System ID und Timestamp check ausgemacht.

Warum? Wenn es hier einen Fehler gibt, solltest du den erst mal beheben.

> Zudem habe ich die richtie .sopc eingebunden und diese auch correct
> erstellt,

Das heist doch jetzt .sopcinfo und nicht mehr .sopc

Bevor du irgend etwas ausführst, prüf erst mal, ob im Bildschirm "Debug 
Configurations" keine Fehler angezeigt werden und dass die System ID und 
Timestamp korrekt sind.

von Harald F. (hfl)


Lesenswert?

Hallo Himenek,

1. Warum verifiziert er nicht bis 100%?
2. Und warum zeigt er nichts in der NIOS II Console nichts an?!

1. "Er" verifiziert bis zu 100%, denn "er" sagt ja Verified OK
2. Ich kann dir nicht sagen, warum keine Ausgabe in der Konsole erfolgt. 
Du hast offensichtlich "run as hardware" angewählt. Nimm mal "debug as 
hardware" und steppe durch den Code. Da sieht man dann etwas besser, 
woran es liegen könnte.

Timestamp und System ID sollten keine Auswirkung haben, die Checks 
schalte ich auch oft aus. Man muss sich aber schon sicher sein, dass das 
richtge sof-File in das FPGA geladen ist.

Grüße,
Harald

von Himenek (Gast)


Lesenswert?

@Johannes

stimmt es heißt .sopcinfo

@Harald & Johannes

Habe Debug as hardware gemacht und es kam keine Fehlermeldung.
Im debug werden lediglich die drei schritte angezeigt, welche er 
ausführt

zusammengefasst
 start()
 alt_main()
 main() hello_world

es steht aber auch, terminated exit value: 0

was mich ein wenig wundert, denn es sollte ja ("Hello from Nios II!\n")
herauskommen

von Günter (. (dl4mea)


Lesenswert?

Hallo,

in einem ähnlichen Fall war bei mir mal der Clock zu hoch. Schau mal 
nach der Synthese welche max. Clock dein FPGA schafft, und geh mit dem 
Clock für den CPU-Core um 25% drunter.

Ciao, Günter

von Johannes E. (cpt_nemo)


Lesenswert?

Himenek schrieb:
> @Johannes
>
> stimmt es heißt .sopcinfo
>
> @Harald & Johannes
>
> Habe Debug as hardware gemacht und es kam keine Fehlermeldung.
> Im debug werden lediglich die drei schritte angezeigt, welche er
> ausführt
>
> zusammengefasst
>  start()
>  alt_main()
>  main() hello_world
>
> es steht aber auch, terminated exit value: 0
>
> was mich ein wenig wundert, denn es sollte ja ("Hello from Nios II!\n")
> herauskommen

Man kann irgendwo einstellen, ob die Standard-Ausgabe per JTAG-Uart oder 
auf einem normalen Uart ausgegeben werden soll. Vielleicht gibt es hier 
ein Problem? Hast du überhaupt einen JTAG-Uart im System.

Kannst du das Programm im Einzelschritt-Modus debuggen?

von Himenek (Gast)


Lesenswert?

Also im Debug stoppt er bei mir beim printf(...) Befehl, da dort 
automatisch ein Brakpoint gesetzt ist (Warum auch immer). Lasse ich ihn 
dann weiter laufen, stoppt er beim jtag_uart und zwar in der 
WHILE-Schleife:

int altera_avalon_jtag_uart_close(altera_avalon_jtag_uart_state* sp, int 
flags)
{
  /*
   * Wait for all transmit data to be emptied by the JTAG UART ISR, or
   * for a host-inactivity timeout, in which case transmit data will be 
lost
   */
  while ( (sp->tx_out != sp->tx_in) && (sp->host_inactive < sp->timeout) 
) {
    if (flags & O_NONBLOCK) {
      return -EWOULDBLOCK;
    }
  }

  return 0;
}

will ich von diesen Punkt aus weiterlaufen lassen, verweilt er endlos in 
dieser Schleife vermute ich.

@Günter: Habe den Takt auf 37MHz runtergeschraubt und alles neu 
kompiliert

@Johannes: Habbe das DE2-115 mit Cyclone IV E Chip. Also ist JTAG Uart 
vorhanden.

von Johannes E. (cpt_nemo)


Lesenswert?

Himenek schrieb:
> @Johannes: Habbe das DE2-115 mit Cyclone IV E Chip. Also ist JTAG Uart
> vorhanden.

Mit meine Frage habe ich eigentlich gemeint, ob du im SOPC-Builder einen 
JTAG-Uart eingefügt hast und ob die Standard-Ausgabe auch darauf 
eingestellt ist.

von Himenek (Gast)


Lesenswert?

also den Jtag-Uart habe ich im SOPC eingebunden, jedoch weiß ich nicht, 
wo ich die Standardausgabe verändere.

Bewusst habe ich nichts verändert.

von Himenek (Gast)


Lesenswert?

@ Jochen:
In NIOS II fpr Eclipse in hello_world_BSP unter Properties-> BSP Editor. 
Ist in STDIN und STDOUT JTAG_UART angegeben.
Ist es das was du meintest mit Standardausgang?

Wenn nein, wo finde ich den Standardausgang?

Lg

von Johannes E. (cpt_nemo)


Lesenswert?

Himenek schrieb:
> Ist es das was du meintest mit Standardausgang?

Ja, das ist dann so richtig.

Aufgrund deiner Fehlerbeschreibung vermute ich, dass der Nios mit printf 
Zeichen in den JTAG-Uart schreibt, die Daten aus dem JTAG-Uart aber 
nicht abgeholt werden. Dadurch bleibt der Nios dann in der 
Endlosschleife hängen.

Hast du evtl. im Tab "Target Connection" die Checkbox "Disable Nios II 
Console View" eingeschaltet?

Bist du dir wirklich sicher, dass die richtige Konfiguration auf dem 
Altera läuft? Hast du System ID und Timestamp Check wieder 
eingeschaltet?

von Himenek (Gast)


Lesenswert?

@Johannes:

Habe unter "Target Connection" bei "Disable NIOS II Console" kein 
Häkchen, da ich es ja nicht disabled haben möchte.

System ID und Timestamp habe ich immer noch als ignore, da unter "System 
ID Properties" überall "not found" steht.

Muss ich, um System ID und Timestamp zu erhalten, in SOPC "sys id" 
hinzufügen oder wie kann ich diesen Fehler umgehen?

von Johannes E. (cpt_nemo)


Lesenswert?

Himenek schrieb:
> Muss ich, um System ID und Timestamp zu erhalten, in SOPC "sys id"
> hinzufügen oder wie kann ich diesen Fehler umgehen?

Ja, genau.

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.