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
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.
mh123 schrieb:> SPI Flashmh123 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?
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.
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...
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...
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ß
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.
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.
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.
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.
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.
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.
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.
"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
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....