Forum: FPGA, VHDL & Co. Spartan 6 SPI Flash Konfiguration


von mh123 (Gast)


Lesenswert?

Hallo,

ist es eigentlich möglich, das Konfigurations-File an eine beliebige 
Adresse in den SPI Flash zu legen? Laut User Guide wird ja nach den Sync 
Word gesucht, aber eben nur von Adresse 0 an und nur 512 Bytes, bzw nach 
umschalten des OPCODES insgesamt 1024 Byte.

Ich möchte das File gerne an eine andere Stelle legen, weil an Adresse 0 
was anderes liegt. Ich finde leider nirgends Informationen? Kennt sich 
jemand aus?

Danke
Viele Grüße

von Christian R. (supachris)


Lesenswert?

Da die Lese-Logik im FPGA fest ist, geht das meines Wissens nicht, 
zumindest nicht für das 1. Image wo die Sprungadresse für das 2. Image 
für MultiBoot drin steht. Du kannst ja deine eigenen Daten woanders 
ablegen.

von mh123 (Gast)


Lesenswert?

Hallo Christian,

aus dem Flash soll noch ein uC booten der nur von Adresse 0 booten kann. 
Naja da muss ich wohl einen zweiten Flash spendieren.

Grüße

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

mh123 schrieb:
> SPI Flash
mh123 schrieb:
> noch ein uC booten der nur von Adresse 0 booten kann.
Welcher uC? Ist das geheim?
Was muss zuerst booten: das FPGA oder der uC?

von mh123 (Gast)


Lesenswert?

Hallo,

das ist kein reiner uC sondern der FX3 von Cypress. Der Bootloader des 
FX3 bootet hart von Adresse 0. Er muss auch vor den FPGA aufstarten, 
damit die Strom Spec. von USB eingehalten wird.

von ich (Gast)


Lesenswert?

na dann lass den FPGA durch den FX konfigurieren

von Christian R. (supachris)


Lesenswert?

Hehe, den FX3 hab ich auch eben in der Mache. Nur leider bootet die 
Chip-Recvision auf dem Demoboard überhaupt nicht von SPI. Ich mach das 
immer so, dass der FPGA den USB Controller solange in Disconnected 
Zustand hält, bis er fertig gebootet hat. Aber mit nur einem SPI Flash 
für beide wirst du nicht hinkommen, da beide auf den Start ab der 0 
angewiesen sind. Macht doch auch keinen Sinn, die paar Cent...

von mh123 (Gast)


Lesenswert?

Geht leider auch nicht. Nachdem der FX3 lebt wird das spi abgeschaltet 
weils es in der Kofiguration hardwaretechnich nicht mehr zur Verfügung 
steht

von mh123 (Gast)


Lesenswert?

Leider schauen unsere Projektleiter auf jeden Cent. Dazu kommt bei uns 
der Platzbedarf und die leistungsaufnahme

von Christian R. (supachris)


Lesenswert?

Achja, das blöde 32 Bit GPIF <-> SPI Problem. Echt doof gelöst.
Hm, du könntest ja nach dem Starten des FPGA SPI durchreichen aber dabei 
die Adressen verändern, dass der FX3 immer aus einem höheren 
Speicherbereich liest.
Darf man erfahren, was das für ein Projekt ist? Müssen keine Details 
sein, nur interessehalber, weil wir den FX3 auch (als Nachfolger des 
FX2) einsetzen.
Und nochwas: Nimmst du das Slave FIFO Interface? Falls ja, wie hast du 
die Krücke mit dem (Partial)Full Flag gelöst? Ich hab da eine Anfrage im 
Cypress Forum im Moment, aber da meldet sich keiner...

von mh123 (Gast)


Lesenswert?

Im Cypress Forum sind wir auch aktiv. Zumindest unser 
Firmwareentwickler. Ich mach zum Glück nur den FPGA Teil.
Das synchrone Slave FIFO wollen wir auch nehmen. Sind aber noch nicht 
soweit weil unser Adapter vom FX3 Board auf das SP605 erst nächste Woche 
kommt. Dann gehts los mit dem GPIF. Aber wenn ich jetzt schon überall 
lese, dass es nur Probleme gibt, kommt mir das Grauen.
Den FPGA erst aufstarten geht bei uns nicht. Das wird ein Bus powered 
Device. Bevor der setConfig Request vom Host nicht gekommen ist, darf 
das Gerät laut Spec nur 150mA ziehen. Das wird nicht reichen um FPGA und 
FX3 zu Booten. I2c Boot ist auch Schwachsinn bei der größe eines solchen 
Image Files. Da brauch man ja locker zwei drei Stück. USB Boot kommt 
auch nicht in Frage. Da bekommt man keine Windows Zertifizierung. 
Eigentlich nur Einschränkungen mit dem Teil...
Was das für ein Gerät wird darf ich leider nicht sagen. Hier sind auch 
zu viel von den Mitstreitern unterwegs, wovon auch viele auf den FX3 
setzen.
Mit den FX2 hatten wir nichts zu tun. Ich hatte nur selber damit mal 
bissel rumgespielt, aber eher nur den 8051 programmiert ohne GPIF.

Gruß

von Christian R. (supachris)


Lesenswert?

OK. Naja, Slave FIFO geht schon, allerdings hab ich da ein lustiges 
Problem mit dem Partial Full festgestellt. Das normale Full kann man ja 
nicht nehmen, das hat 3 Takte Latenz, also partial Full. Das partial 
full geht aber nicht auf low, wenn man so viele kurze Pakete wie DMA 
Buffer rein schreibt. Da gibts Datenverlust. Also hab ich jetzt 
getrickst und auf einem anderen Control Ausgang das normale Full auch 
mit ausgegeben und verknüpfe beide.
Unschön, aber bis die das fixen gehts vielleicht. Ansonsten ist das 
schon ein schöner Chip und ich hab das so hinbekommen, dass der sich von 
der Software aus gesehen wie ein FX2 verhält. Dank WinUSB ist das völlig 
transparent und wir müssen nur die Hardware ändern.
Wieso sollte man keine WHQL bekommen mit USB Boot? Du kanst doch zum 
Beispiel auch WinUSB für den unprogrammierten Chip benutzen, dann über 
die Vendor Requests programmieren und reboot machen. Das geht völlig 
problemlos, den buggy Cypress Treiber braucht kein Mensch.
Übrigens passt die Firmware auch in einen 24LC1025 rein, hab ich 
getestet. Aber viel Platz ist da nicht mehr, das stimmt.
Du wirst also um einen 2. Flash oder ein(zwei) I2C EEPROM(s) nicht 
herumkommen.

von mh123 (Gast)


Lesenswert?

Naja die Beschreibung zum Slave FIFO ist auch sehr kurz gehalten. Z.B. 
weiß ich nicht, wenn ich einen 1024Byte großen DMA Bufer noch nicht voll 
geschrieben habe aber die Adresse kurz umschalte um andere Daten zu 
senden ob der Buffer dann über USB raus geschickt wird oder nur beim 
PKTND Signal. Und kann den Buffer beim zurückschalten der Adresse 
einfach weiter füllen? Fragen über Fragen die man nur durch probieren 
lösen kann und das nervt etwas wenn man die Zeit nicht hat.
Eine andere Abteilung von uns hatte das mit WHQL beim FX2 durch. Da 
wollten sie auch von USB Booten, weil der USBIO das so schön 
unterstützt. Aber die haben das nicht durch bekommen und sind dann auf 
Linux umgestiegen. Diesmal haben wir gleich bei Thesycon angefragt und 
die sagen, dass es immer schwierig ist, warum weiss ich auch nicht 
genau.

von Christian R. (supachris)


Lesenswert?

Also das mit den Buffern müsste so gehen, wie du beabsichtigst. Ging 
beim FX2 auch schon so. Die sind komplett getrennt und werden erst an 
den DMA Master übergeben wenn die die volle Länge erreicht haben oder 
das BlockEnde kam.
WHQL haben wir uns geklemmt. Ersten wird der original Cypress Treiber 
wahrscheinlich nie durchkommen, der ist sowas von buggy, erzeugt immerzu 
Bluescreens, schreibt in nicht allozierte Speicherbereiche usw. und 
zweitens kostet das alles viel zu viel. Wir haben dann WinUSB genommen 
und gut. Ist genauso schnell, fehlerfrei und schon WHQL-signiert.

von MxM (Gast)


Lesenswert?

Hi,

Gibt es mittlerweile eine Lösung zu der ursprünglichen Frage?

Gruß,
MXM

von Christian R. (supachris)


Lesenswert?

MxM schrieb:
> Gibt es mittlerweile eine Lösung zu der ursprünglichen Frage?

Was soll´s da für eine Lösung geben? Wenn der Spartan 6 innerhalb der 
ersten 512 Byte kein Syncword findet, bricht er ab. Du kannst ja Xilinx 
anfragen, ob sie ein Custom Design für dich machen.

von MxM (Gast)


Lesenswert?

:)

Danke für diese wertvolle Antwort..

von Hans-Georg L. (h-g-l)


Lesenswert?

Also ich kenn den FX3 "noch" nicht, aber der wird doch wie der FX2 einen 
MC haben. Was spricht dann dagegen einen mehrstufigen Bootloader zu 
verwenden ?

Ein 1. Level Bootloader welcher X Bytes ab einer Adresse, die nach der 
Konfiguration des FPGA liegt dürfte doch zusammen mit dem macic word in
die ersten 512 Bytes passen.

von Christian R. (supachris)


Lesenswert?

Hm, ich weiß nicht, ob das rein passt, der ARM Kern braucht schon recht 
viel Firmware. Vielleicht wenn man alles zu Fuß in ASM programmiert, 
zumindest die 1. Stufe...aber 512 Byte sind da schon echt knapp.

MxM schrieb:
> Danke für diese wertvolle Antwort..

Ich hätte dir gerne einen Tipp gegeben, aber da ich selber vor dem 
"Problem" stehe, hab ich auch intensiv gesucht und nachgedacht, aber 
keine echt Lösung außer 2 Flash-Chips gefunden.
Viel nerviger ist, dass beim Spartan 6 nur entweder SPI Multi Boot oder 
AES Verschlüsselung geht. Toll.

von Hans-Georg L. (h-g-l)


Lesenswert?

Wenn Firmware und FPGA-Konfiguration ins SPI Flash passen wird es auch 
gehen ;)

Ein 1. Level Bootloader, der X Bytes ab Spi-Adresse y ins Ram des Arm 
lädt
und dann als 2. Level Bootloader ausführt passt doch in 512 Bytes.

von MxM (Gast)


Lesenswert?

"Viel nerviger ist, dass beim Spartan 6 nur entweder SPI Multi Boot oder
AES Verschlüsselung geht. Toll."

Ja, der sp6 ist mit Features nur so vollgestopft.. aber genau an der 
Stelle fehlt die Funktionalität..

Gruß,
Maxim

von Christian R. (supachris)


Lesenswert?

Ja, so ist es leider. Ist halt ein abgespeckter Virtex 5, an manchen 
Stellen wurde offenbar zu sehr dem Preisdruck nachgegeben. Was man da 
fürs Geld kriegt, ist schon enorm, aber an manchen Stellen seltsam 
beschränkt. Auch die Clocking-Ressourcen sind stark eingeschränkt, vor 
allem die blöde BUFIO Beschränkung auf eine halbe Bank. Und dann alle 
SP60x Boards so blöde gebaut, dass man am FMC Stecker die 
ISERDES/OSERDES nicht mit mehreren Kanälen nutzen kann, weil die I/Os 
auf 4 Bänke verteilt sind....

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.