Möchte ein JTAGUART hello world mit dem NIOS auf nem MAX10 machen. Aktuell 2 Probleme: 1. beim Platform designer muss ich beim onchip_memory "initialize memory content" deaktivieren!?! (ansonsten läuft der buildprozess nicht durch) Nun meine Frage: Was hat das für auswirkungen? Wird der Nios code nachwievor mit dem bitfile runtergeladen? 2. Im eclipse läuft das simple hello world (putchar) beim builden durch. Das normale hello world (nutzt printf) jedoch nicht mit dem Error bei: ALTERA_AVALON_JTAG_UART_INIT ( JTAG_UART_0, jtag_uart_0);
Steffen schrieb: > Bitte lesen! Steht beides in der Doku ... Wo? Link? Nun dein Beitrag ist unspezifisch da 1000e Seiten Doku bestehend sind. Eine Antwort wäre ein grösserer Beitrag...
Tatsächlich steht das da. Wenn Du mit einem MAX10 umgehen willst, wäre es schon hilfreich, wenn Du die Doku lesen würdest. Das kann dir niemand abnehmen. Aber schau' dir mal unter Device Options die Auswahlmöglichkeiten mit "with Memory Initialization" an.
Markus F. schrieb: > Tatsächlich steht das da. Wenn Du mit einem MAX10 umgehen willst, > wäre > es schon hilfreich, wenn Du die Doku lesen würdest. Das kann dir niemand > abnehmen. > > Aber schau' dir mal unter Device Options die Auswahlmöglichkeiten mit > "with Memory Initialization" an. Nun ok, das FPGA kompliziert wird mit dem musste ich rechnen. Aber dass nicht mal das Intel Demoprojekt Hello World auf anhin läuft ist schon fraglich. Dann Doku suchen für Hello World? BTW: Zuerst habe ich Quartus 19.1 installiert. Dieser funktioniert nicht mal. Nach der Installation lässt sich eclipse nicht starten!?!. 18.1 läuft zumindest aber ja, die beiden Fragen bestehen, und bitte zumindest ein Verweis auf das richtige pdf geben, damit ich die doku lesen kann um das Intel Hello World zum laufen zu bringen.
Sorry, aber zu dem Thema gibt es tausende klicki-klacki Beschreibungen im Netz. Wie wäre es wenn du mal in die Doku zu deinem board schaust. Wenn du schon einen Verweis auf die richtigen Dokumente und pdf's forderst, wie wäre es wenn du erstmal verkündest welches Board du überhaupt nutzt? Welche Demo-Projekte funktionieren nicht?? Was soll an Quartus 19.1/18.1 nicht funktionieren?? Natürlich funktioniert das ...
Markus F. schrieb: > Aber schau' dir mal unter Device Options die Auswahlmöglichkeiten mit > "with Memory Initialization" an. Ok: da wären Enable non-default init file sowie enable partial reconfig init mode Ansonsten habe ich gesucht, der Init vorgang ist mir nachwievor unklar. Der Nios code wird (auch ohne initialize memory content hacken gesetz) beim Startup vom MAX10 Flash in das On-Chip Memory (brams) geladen und dann, wenn die Konfiguration des Max abgeschlossen ist, startet der Nios direkt vom On-Chip memory? Steffen schrieb: > Sorry, aber zu dem Thema gibt es tausende klicki-klacki > Beschreibungen > im Netz. Wie wäre es wenn du mal in die Doku zu deinem board schaust. > Wenn du schon einen Verweis auf die richtigen Dokumente und pdf's > forderst, wie wäre > es wenn du erstmal verkündest welches Board du überhaupt nutzt? EK-10M08E144 > Welche Demo-Projekte funktionieren nicht?? Nun hello world, gmeacht nach https://www.youtube.com/watch?v=1a_cD6FBROA (Den CLK eingang natürlich aufs board angepasst.) > Was soll an Quartus 19.1/18.1 nicht funktionieren?? Natürlich > funktioniert das ... Wenn ich auf ein frisches Win7 System 19.1 installiere und NIOS II Software build tools for Eclipse auswähle kommt nichts. 18.1 funktioniert.
Prüf mal was für einen Max10 du hast. Es gibt welche, bei denen kann der Blockram nicht initilisiert werden. Warscheinlich ist das Config-Flash im Baustein zu klein dafür. Das sieht bei dir sehr danach aus. Zu deinem Punkt 1: das geht ganz sicher nicht. Irgendwo muss der Nios2 Code herkommen und wenn das Onchip Ram leer ist geht das nicht. Warscheinlich kann man den hinterher per JTAG runterladen und ggf hast du auch ein externes Ram? Ich arbeite jedoch nicht oft mit dem NIOS2/Exclipse, deswegen kann ich dir da konkret nicht weiter helfen.
FPGAzumSpass schrieb: > Zu deinem Punkt 1: > das geht ganz sicher nicht. Irgendwo muss der Nios2 Code herkommen und > wenn das Onchip Ram leer ist geht das nicht. Danke. Genau diese Info habe ich gesucht. Nun verstehe dann das feature "initialize memory content" deaktivieren zu können nicht. Ohne initialisiertes mem (program) macht der ganze nios keinen Sinn. FPGAzumSpass schrieb: > Warscheinlich kann man den hinterher per JTAG runterladen und ggf hast > du auch ein externes Ram? Der MAX10 hat mein Aufsehen erregt, dass er keine externe Beschaltung braucht (der grosse vorteil), und sowohl SW als auch logik in einem Chip macht. Nun habe die FPGA welt vor ca. 10Jahren verlassen, weil ich mich über die damals bescheuerten Xilinx EDA Tools aufgeregt habe. Nun der wiedereinstieg mit Altera/Intel ist aktuell nicht so gelungen. ca. 7h investiert -> nicht mal Hello World läuft. Quartus 19.1 läuft auch nicht. Naja insgesammt noch schlimmer als meine erinnerung an den Microblaze vor 10 Jahren...
Allgemein sind 7 Stunden wirklich nicht viel. Du machst ja auch nicht viel im FPGA, sondern vor allem Software mit NIOS2. Ein reines FPGA Hello-World (z.b. Blinklicht) ist in der Zeit machbar. Den Nios irgendwie mal laufen zu sehen kann man mit Beispielen auch schaffen, aber wenn Unwägbarkeiten dazukommen, die sonst halt kaum jemand hat, weil fast alle FPGAs das Blockram einfach initialisieren können...dann kann es halt knifflig werden. zu Quartus: 19.1 habe ich noch nicht probiert, kann es sein das es auf Win7 nicht mehr läuft?
Hallo Zu Frage 1: ...(ansonsten läuft der buildprozess nicht durch) ... warum läuft der Build Prozess nicht durch? Evtl. Weil er die HEX files nicht findet? Was ist die Fehlermeldung? Die NIOS firmware kann, wie schon erwähnt, später per JTAG aus dem Eclipse heruntergeladen werden. Zu Frage 2: Du musst im QSYS noch den JTAG Uart Core einfügen. Zu Quartus: Ich verwende 16.1.2 auf Win7
Intel schrieb: > Wenn ich auf ein frisches Win7 System 19.1 installiere und NIOS II > Software build tools for Eclipse auswähle kommt nichts. Direkt unter dem Download Link steht fast unübersehbar: "Nios II EDS on Windows requires Ubuntu 18.04 LTS on Windows Subsystem for Linux (WSL), which requires a manual installation." - WSL gibt es bei Win7 IMHO nicht. Dazu nochmal in den Release Notes: "Support for Microsoft Windows 7 is removed" Wenn man mit FPGAs spielen will, kommt man nicht umhin, sich zumindest einen Überblick über die Doku zu schaffen und dann gezielt die relevanten Teile zu lesen. Klar ist es unmöglich die gesamte Doku zu lesen und zu verstehen, aber ganz ohne geht nunmal auch nicht. Das mindeste ist, dass man wissen muss wo man nachschauen kann.
So nun läuft hello world und ebenfalls PIO. Was ich nachwivor nicht verstehe: Wie und wann wird mein SW build in das SOF/POF miteingebuildet. Und wie steht dies im zusammenhang mit "initialize memory content". Anscheinend habe ich es einmal geschafft die Sowftware ins pof miteinzukompilieren. Nun kann ich dies nicht reproduzieren. Aktuell muss ich immer von eclipse die SW auf Hardware target startet. Wie funktioniert die .hex einbindung genau ins pof/sof? Muss jedesmal im Quartus neu assembled werden? Oder kann die POF/SOF generation direkt aus eclipse gemacht werden?
Vor genau diesen Problemen stand ich auch schonmal. In dem Dokument AN730 (bei Google findet man so eine PDF) steht alles gut beschrieben. Ich habe bei mir 'Option 2' umgesetzt. Dafür habe ich 'Initialize flash content' deaktiviert. Eclipse kann dann das Flash image als hex generieren, und mit dem 'Convert programming file' tool wird es nach Änderung zusammen mit der sof in eine pof gepackt, die dann auf den FPGA gespielt werden kann. Wenn du 'Initialize flash content' aktivierst, musst du jedes mal wenn sich die NIOS-Software ändert die komplette Hardware neu kompilieren. Wenn du in Eclipse die Software debugst, wird sie soweit ich weiß direkt in den Ram gespielt. Daher ist sie nach einem Neustart des FPGAs nicht mehr vorhanden.
:
Bearbeitet durch User
A. G. schrieb: > Vor genau diesen Problemen stand ich auch schonmal. In dem > Dokument > AN730 (bei Google findet man so eine PDF) steht alles gut beschrieben. > Ich habe bei mir 'Option 2' umgesetzt. Dafür habe ich 'Initialize flash > content' deaktiviert. Eclipse kann dann das Flash image als hex > generieren, und mit dem 'Convert programming file' tool wird es nach > Änderung zusammen mit der sof in eine pof gepackt, die dann auf den FPGA > gespielt werden kann. Wenn du 'Initialize flash content' aktivierst, > musst du jedes mal wenn sich die NIOS-Software ändert die komplette > Hardware neu kompilieren. > > Wenn du in Eclipse die Software debugst, wird sie soweit ich weiß direkt > in den Ram gespielt. Daher ist sie nach einem Neustart des FPGAs nicht > mehr vorhanden. Danke! Genau nach den habe ich gesucht gehabt! Nun das funktioniert jetzt. Nächste Auffälligkeit: Ich habe dem NIOS einen PLL vorgesetzt. Diesen kann ich beliebig hochschrauben (z.b. 250MHZ) im Systembuilder die frequenz entsprechend eintragen. Den Fitter scheints nicht zu jucken. Der NIOS läuft dann einfach nicht mehr (ohne warnung oder error des fitters oder der Timing analyse)!?!
Intel schrieb: > Diesen kann ich beliebig hochschrauben (z.b. > 250MHZ) im Systembuilder die frequenz entsprechend eintragen. Den Fitter > scheints nicht zu jucken Bei mir steht folgendes im Constraintfile:
1 | derive_pll_clocks -create_base_clocks |
Wenn dann noch der Eingangstakt richtig spezifiziert ist, sollten die Constraints automatisch erzeugt werden. Duke
Intel schrieb: > Hat jemand ein gutes bsp. eines Nios2 UART command line parsers? Das ist ja kein NIOS-spezifisches Problem. Hier hat Karl-Heinz Buchegger vor 10 Jahren skizziert, wie man das umsetzten kann: Beitrag "Re: Befehlsinterpreter auf MC und diverser anderer Kram" Duke
Duke Scarring schrieb: > derive_pll_clocks -create_base_clocks Das funktioniert danke. Nun im timing analyzer habe ich: inst3|altpll_component|auto_generated|pll1|clk[0] nun mit der korrekten frequenz stehen. Wenn ich diese nun unrealistisch hoch schraube, läuft die sysntese ohne fehler durch. Das einzige was auffällt ist, dass dann überall negativer slack ist. Design wird natürlich nicht laufen. Anyway wieso läuft der fitter durch. (sollte er nicht das timing beachten?)
Ich weiß nicht ob es eine Möglichkeit gibt bei nicht erfülltem Timing einen critical error zu werfen, aber normalerweise läuft der Fitter immer erstmal durch. Die Timing Analyse hinterher sagt dir ob der Fitter/Bitstream alle constraints erfüllt hat. Ist nicht ungewöhnlich, das man ein Design ohne erfüllte constraints trotzdem mal antesten will, von daher schon gut das der Fitter durchläuft. Wäre nervig, wenn man nach mehreren zig Minuten oder gar Stunden bei großen Designs wegen ein paar ps negativen slack nicht testen könnte.
Intel schrieb: > Anyway wieso läuft der fitter durch. (sollte er nicht das timing > beachten?) Das macht er, wenn er's kann. D.h. wenn Du ihm die Möglichkeit dazu schaffst. Entweder Du gehst mit dem Takt knapp unter den Wert, den der Timing Analyzer als Fmax angibt oder Du baust dein Design (im Wesentlichen durch "Verkürzen" der Kombinatorischen Anteile) so um, dass es deine Taktvorgaben erfüllt.
Ok danke für die Antworten. Für die Pros sicher sinnvoll, für anfänger wie mich eine Stolperfalle, welche ich nur zufällig entdeckt habe.... Laut Hersteller sollte der kleine Nios mit ca 160 und der grosse Nios gar mit 170MHZ auf einem Max 10 laufen. Fmax ist bei mir ca 130MHZ mit Timing Optimization Advisor fmax(genügt allemal für meine Anwendug). Dennoch möchte ich intressenshalber gerne wissen woher dieser Unterschied kommt. Somal mein MAX10 neben dem Nios eigentlich praktisch keine eigene Logik hat. Auch mit der Optimierung fittet der Fitter in unterhalb 1min?!. Wieso so schnell? Kann man ihm irgendwie sonnst sagen dass er sich besser anstrengen soll und nicht einfach erst bestes routing nehmen soll?
Intel schrieb: > Auch mit der Optimierung fittet der Fitter in unterhalb 1min?!. Wieso so > schnell? Kann man ihm irgendwie sonnst sagen dass er sich besser > anstrengen soll und nicht einfach erst bestes routing nehmen soll? Man kann. Üblicherweise gibst Du den Takt vor und der Fitter hört auf, sobald er eine Lösung gefunden hat, die deine Anforderung erfüllt (bzw. er gibt sofort auf, falls diese Anforderung nicht erfüllbar ist). Einstellungen zur Fitter-Optimierung gibt es zu viele, um sie hier alle durchzukauen - da wirst Du um Handbuchlesen nicht herumkommen.
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.