Forum: FPGA, VHDL & Co. Nios II: zImage von SD-Karte -> SDRAM


von Jan E. (royalopino)


Lesenswert?

Hallo,
ich habe mal wieder eine Frage.

Ich habe auf meinem DE2-115 Board uClinux laufen, welches als rootfs die 
SD-Karte verwendet.

SD-Karte mit zwei Partitionen, eine für das rootfs und auf der Anderen 
liegt das zImage.

Damit jetzt bei "Power on" das zImage in den SDRAM geladen und gestartet 
wird brauche ich nun einen Bootloader, nur wie mache ich das?

Ich habe mir "u-boot" von git geladen, aber ich weiß nicht was ich da 
einstellen muss. Die Beiträge aus dem AlteraWiki haben mir nicht 
wirklich weiter geholfen :/

Das Qsys Design hat ein onchip mem, von dem aus der bootloader gestartet 
werden soll (als .hex fest eincompeliert).

Hat das schon mal jemand gemacht? Ich wäre über eine Anleitung oder 
Hinweise sehr dankbar.

Liebe Grüße Jan

von derguteweka (Gast)


Lesenswert?

Moin,

Hm, scheint ja nicht haeufig vorzukommen, so viel wie hier los ist...
Vor fast 10 Jahren hab' ich mal sowas aehnliches mit Cyclone-III gebaut. 
Da hies das Dingens zum graphischen Zusammendenglen der NIOS Komponenten 
noch SOPC-Builder. Bei dem gab's eine Peripherie-Komponente, die hiess 
irgendwas mit EPCS. Das war das serielle Config-Device. Und da drinnen 
konnte man hinter dem Bitstream zum FPGA-konfigurieren noch ein Binary 
(z.b. ein U-Boot) ablegen. Der Reset-Vector des NIOS musste dann auf den 
Adressbereich der EPCS-Komponente zeigen, dann hat irgendwelche 
Voodoo-Magic in der EPCS-Komponente dafuer gesorgt, dass das u-boot ins 
SDRAM kopiert wurde (ich glaub' der Code fuer diesen Kopiervorgang war 
hardcodiert in einem BlockRAM in der EPCS-Komponente). Danach hat's der 
NIOS beherzt angesprungen und schon ging's u-boot los. Das konnte dann 
aus weiteren Flashbausteinen ein uImage ins SDRAM laden und 
anspringen...
Wahrscheinlich heisst der ganze Kram mittlerweile voellig anders.

Gruss
WK

von Marius W. (mw1987)


Lesenswert?

Siehe auch hier: http://www.altera.com/literature/an/an458.pdf

Gruß
Marius

von Jan E. (royalopino)


Lesenswert?

Ganz vielen Dank für Eure Hilfe und Anregungen! :)

Ich habe im ersten Schritt mein zImage ins Flash geladen und den 
Reset-Vektor dabei auf dieses zeigen lassen. Das hat super funktioniert. 
Anstelle des EPCS habe ich allerdings CFI verwendet.

Im nächsen Schritt habe ich es geschafft ein u-boot zu bauen, welches 
auf der Nios Hardware läuft. Das habe ich dann auch mal aus dem Flsh 
starten lassen.
Das u-boot zu compelieren war gar nicht so einfach, ich kenne mich mit 
dem u-boot leider nicht so aus :/
Hier habe ich ein Beispiel für mein DE2-115 gefunden, das mir sehr 
weiter geholfen hat (https://github.com/emount/nios2-u-boot).

Jetzt fehlt mir nur noch der Schritt, das mmc/spi im u-boot zum laufen 
zu bringen und mein zImage in den SDRAM laufen zu lassen. Das mmc/spi 
läuft noch nicht wirklich, aber hier 
(http://www.alterawiki.com/wiki/U-Boot_and_Cyclone_II-DE2_boards#SD_card_over_SPI_protocol) 
gibt es eine Anleitung.

Aktuell habe ich jetzt noch zwei Fragen:

Kann ich die .sof und das u-boot beide in den Flash-Speicher laden? Ich 
hab irgendwo etwas von dem Befehl "after" gelesen. Also erst die .sof 
(natürlich als .flash) und angehängt daran das u-boot? Woher weiß der 
FPGA, dass seine Konfiguration im Flash und nicht im EPCS liegt?

Mit welchen Befehlen kann ich das zImage später von der SD-Karte in den 
SDRAM kopieren und starten? (Im u-boot)

Ein schönes Wochenende wünsche ich :)

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.