Forum: FPGA, VHDL & Co. DE0_Nano mit NioII-Programm dauerhaft beschreiben


von zander (Gast)


Lesenswert?

Hallo Zusammen,

ich habe mir per Qsys ein NiosII-System aufgebaut und ein kleines 
C-Programm geschrieben. Dieses C-Programm hätte ich gerne dauerhaft auf 
dem FPGA. Kann mir jemand sagen wie hier vorzugehen ist?

Die vhdl Datei des Qsys-Systems liegt nach der Synthese als .sof Datei 
vor, welche ich über QuartusII in eine .jic Datei umwandeln kann. Diese 
kann ich dauerhaft auf den FPGA/Speicher schreiben - funktioniert auch 
einwandfrei.
Jedoch weiß ich nicht, wie ich jetzt auch noch das C-Programm parallel 
dazu permanent auf den FPGA bekomme.

Wäre super wenn mir jemand sagen könnte wie das geht :-)


Gruß
zander

von Marius W. (mw1987)


Lesenswert?

Entweder das C-Programm ist klein genug, dann kannst du es in ein 
internes Block-RAM integrieren. Wenn das nicht klappt, dann musst du dir 
einen kleinen Bootloader schreiben, der das eigentliche Programm aus 
einem externen Speicher lädt (SD-Karte, SPI-Flash oder sonst was).

Gruß
Marius

von ./. (Gast)


Lesenswert?

Dafuer gibt es den Nios II Flashprogrammer.

Man kann sein Programm damit auch in den vorhandenen 
Konfigurationsspeicher
flashen. Quasi huckepack zur eigentlichen FPGA-Konfiguration.

Dazu das Dokument von Altera: Nios II Flash Programmer User Guide

Falls auf dem Board SPI-Flash ist, wuerde ich den benutzen.
Meiner Erinnerung nach ist der Configflash nicht so oft beschreibbar.

Viel Erfolg!

von Dave (Gast)


Lesenswert?

Hallo Zander

Im Nios kannst du per rechtsklick auf dein Projekt=>Make 
Targets=>Build=>mem_init_generate die benötigten files (qip,hex,spd) 
generieren. Diese Files kannst du dann im Quartus einbinden. Dem On-Chip 
Memory im QSYS musst du dann noch sagen, dass es sich mit dem hex file 
initialisiern soll. Dann das Projekt neu synthetisieren und fertig.

von zander (Gast)


Lesenswert?

Danke euch allen für die Antworten!
Ich werde das diese Woche testen und eine Rückmeldung geben.

Es hätte mich wirklich gewundert wenn das nur per Bootloader gegangen 
wäre. Offenbar wieder mal drum herum gekommen :D

Gruß
zander

von zander (Gast)


Lesenswert?

@Dave:
Habe die Vorgehensweise getestet und die benötigten files (qip, hex, 
spd) wie beschrieben erstellt und im Quartus eingebunden. Danach in Qsys 
das Häkchen für die Initialisierung per User hex-init gesetzt. Nach 
meinem Verständnis wollte ich dann das Qsys-Modell nochmal per 
"Generate" frisch anlegen. Hierbei ergab(en) sich folgende 
Fehlermeldung(en):

Error: onchip_memory_cpu: Failed to generate module 
NiosII_ADXL345_i2c_read3_SOPC_onchip_memory_cpu
Error: Generation stopped, 84 or more modules remaining
Error: ip-generate failed with exit code 1: 2 Errors, 2 Warnings
Info: Finished: Create HDL design files for synthesis

Trotz Fehlermeldung in Qsys habe ich einfach probiert die Synthese neu 
zu starten. Die Synthese lief auch problemlos durch sodass ich das 
.jic-File erstellen und auf den FPGA zu spielen konnte.
Komischerweise funktioniert das ganze trotz der Fehlermeldung aus Qsys 
wie gewünscht...

Kann mir jemand sagen warum? :-)
Die neue "Generierung" in Qsys wäre doch erforderlich oder?


Gruß
zander

von Dave (Gast)


Lesenswert?

Hallo Zander

Ob es wirklich nötig ist,im Qsys nochmals zu generieren kann ich dir 
nicht zu 100% sagen. Ich glaube es reicht, wenn man neu synthetisiert, 
aber schaden tut es sicher nicht.

Ich setze bei mir immer das Initialize memory content Häckchen, und 
nicht das Enable non-default initialization file. Hast du das auch so 
gemacht? Falls das nichts bringt, mach doch mal ein Screenshot von 
deinem QSYS.

Gruss
Dave

von zander (Gast)


Lesenswert?

Hallo Dave,

ich habe das ganze nochmal getestet und auch erst jetzt festgestellt, 
dass das erzeugte hex-file gleichnamig mit dem von Qsys erwarteten Namen 
ist, welcher gleich angezeigt wird (hier hat offenbar jemand etwas 
gedacht!). Daher reicht es natürlich aus lediglich das Initialize memory 
content Häckchen zu setzen, was dieses File erwartet. Die Synthese in 
Qsys (per Generate) läuft dann auch problemlos durch.

Vielen Dank nochmal!


Gruß
zander

von eingast (Gast)


Lesenswert?

Eine komplette Synthese ist unnötig, es reicht
> quartus_cdb --update_mif

gefolgt von
> quartus_asm

aufzurufen.

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.