Hallo zusammen, ich habe ein Cyclone 3 Starter Kit. Auf diesem befindet sich ein externer Flash (von Intel), der mit dem FPGA verbunden ist. Diesen externen Flash versuche ich nun zu beschreiben und schließlich die Daten von ihm zu lesen. Also vereinfacht gesagt, will ich Schreib- und Leseoperationen ausführen. Diese Operationen sollen jedoch über die JTAG Schnittstelle erfolgen. D.h., dass die Daten über die JTAG-Schnittstelle gesendet werden und schließlich an dem externen Flash anliegen sollen. Somit sollen auch die Daten über die JTAG-Schnittstelle gelesen werden können. Da ich mit FPGAs noch nicht soviel zu tun hatte, kenn ich mich auch nicht besonders gut mit ihnen aus. Deshalb auch meine Frage, ob dies jemand schon gemacht hat und mir somit helfen kann? Hat einer eine gute Idee, wie ich vorgehen kann? Gibt es evtl. von Altera schon vorgefertigte Tools, die dieses Ziel erreichen? Mir ist jeder Tipp/Rat willkommen. Viele Grüße
"Kit Installation"-exe (Altera-Seite) installiert alle möglichen Infos inkl. Docs etc. Dort findest du eine Anleitung zum Programmieren des Flash als auch ein POF-File für das Rücksetzen auf Werkseinstellung.
Danke für die Antwort. Nur nutze ich den Altera-Programmer, wenn ich den Flash beschreibe. Ich will aber eine Art Bootloader in VHDL schreiben, der mir den externen Flash über JTAG beschreibt. Denn das ganze soll schließlich auf eine andere Hardware portiert werden. Hat dazu vllt. jemand eine Idee? Gruß
Geh einfach in Quartus -> Programmer -> Add Device und dann statt .sof wählst Du Dein Flash-Device aus (ob jetzt seriell oder parallel musst Du schauen). Wenn Du soweit bist, wird vom Quartus automatisch (in Abhängigkeit von Deinem FPGA) ein SOF File in das FPGA erzeugt/geladen (quasi ein Wrapper JTAG->FLASH) und darüber kannst Du dann Deine Daten laden. Und ja, es gibt von Altera Tools dafür. Allerdings habe ich selber noch nie einzelne Adressen oder so beschrieben, sondern gleich ganze Dateien geflasht. Kest
Danke für die Antwort Kest. Trotzdem habe ich noch ein paar Fragen. Wenn ich dich richtig verstanden habe, kann Quartus selbstständig ein Programm einfügen, das die JTAG-Schnittstelle mit der FLASH-Schnittstelle vebindet. Und über dieses Programm ist es mir dann möglich, meine Daten über JTAG zu flashen. Ist das richtig so? Klappt das mit jedem beliebigen Flash? Auf meiner Zielhardware befindet sich nämlich ein MX29LV320C Flash (das Board ist nur für Testzwecke da). Ist es mit diesem auch möglich? Zudem würde mich interessieren, wie dieses Programm aussieht. Ist es evtl. möglich, dass ich den VHDL Code hinter dem Programm sehen kann? Denn genau diese Programm, das die JTAG- mit der Flash-Schnitstelle verbindet, will ich nämlich schreiben. Mir reicht es übrigens, wenn ich die ganzen Programme flashe. Einzelne Adressen schreiben, liegt zunächst nicht in meinem Interesse. Und nochmal zum Quartus-Programmer. Wenn ich diesen öffne, dann befindet sich oberhalb meine kompilierte .sof und unterhalb mein FPGA. Muss ich nicht vllt. den FPGA highlighten -> Attach Flash Device durchführen? Kest schrieb: > Geh einfach in Quartus -> Programmer -> Add Device und dann statt .sof > wählst Du Dein Flash-Device aus (ob jetzt seriell oder parallel musst Du > schauen) Dies verwirrt mich nämlich ein bisschen, da statt einer .sof ein Flash-Device ausgewählt werden soll?! Deshalb bitte ich nochmals um eine genauerer Erklärung falls möglich. Bitte habt etwas Geduld mit mir, denn aller Anfang ist schwer. Viele Grüße
LdB schrieb: > Wenn ich dich richtig verstanden habe, kann Quartus selbstständig ein > Programm einfügen, das die JTAG-Schnittstelle mit der > FLASH-Schnittstelle vebindet. Und über dieses Programm ist es mir dann > möglich, meine Daten über JTAG zu flashen. Ist das richtig so? Klappt > das mit jedem beliebigen Flash? Du hast richtig verstanden. Ich denke nicht, dass es mit jedem beliebigen Flash klappt. Stichwort CFI-Flash: schaue bei Altera nach, ob das möglich ist. Wichtig ist nur, dass Dein CFI-Flash an den "richtigen" Pins des FPGAs häbngt (Standardbelegung), denn woher soll dann das FPGA wissen, wie Dein Flash angebunden ist ;-) LdB schrieb: > Zudem > würde mich interessieren, wie dieses Programm aussieht. Ist es evtl. > möglich, dass ich den VHDL Code hinter dem Programm sehen kann? Denn > genau diese Programm, das die JTAG- mit der Flash-Schnitstelle > verbindet, will ich nämlich schreiben. Wenn Du das machen möchtest, dann müsstest Du tiefer in die Materie einsteigen. Es gibt keinen fertigen VHDL Code dafür. Aber Du könntest ein NIOS System erstellen mit einem CFI-Flash controller, dann in C die Flash-Bibliotheken einbinden -- dann hättest Du die Möglichkeit Flash zu beschereiben/zu lesen. Dann müsstest Du Dich noch mit JTAG-Schnittstelle auseinandersetzen, um darüber die DAten zu schieben. Ist wohl möglich, aber ich habe es nie gemacht (mit JTAG). Was ich öfters gemacht habe war einfache ein "Bootloader": die Daten kommen über UART/USB/Ethernet rein und werden in das Flash geschrieben/gelesen. LdB schrieb: > Und nochmal zum Quartus-Programmer. Wenn ich diesen öffne, dann befindet > sich oberhalb meine kompilierte .sof und unterhalb mein FPGA. Muss ich > nicht vllt. den FPGA highlighten -> Attach Flash Device durchführen? Ja, genau das musst Du tun! LdB schrieb: > Dies verwirrt mich nämlich ein bisschen, da statt einer .sof ein > Flash-Device ausgewählt werden soll?! Deshalb bitte ich nochmals um eine > genauerer Erklärung falls möglich. Sobald Du "Attach Flash Device" gemacht hast, wird Deine "*.sof" Datei blau gehiglighted. Das heißt, diese Datei kommt jetzt von Altera (Factory default PFL image) Das müsste so gehen (ob das mit Deinem Flash geht, kann ich aber nicht sagen, kannst Du aber mit Verify mal "checken", ob's läuft). Ansonsten liesmal die Doku (Stichwort: CFI, PFL image, Flash programming...) :-) Grüße, Kest
Also nochmals Danke für die ausführliche Erklärung. Also ich benutze noch das Cyclone 3 Starter Kit als Testhardware. Und ich bin langsam am verzweifeln. Ich bin genau wie Du es gesagt hast vorgegangen und trotzdem ist das Ganze fehlgeschlagen. Zunächst habe ich mein Design kompiliert und den Programmer gestartet. Über Attach Flash Device habe ich den auf dem Board befindlichen Intel 128Mb Flash ausgewählt. Nur habe ich das Problem, dass meine .sof nicht blau gehighlightet wird. Als, dass der factory default PFL, wie bei dir eingefügt wird. Und beim Laden des Programms es eine Fehlermeldung gibt. Hast du evtl. dafür auch eine Idee? Muss ich vllt. noch irgendetwas aktivieren? Gruß
Du brauchst keine SOF! - Einfach alles löschen - Add device - FPGA Auswählen (Cyclone III) - auf das "none" gehen - rechte Masutaste -> "Attach Flash Device" - Flash auswählen -> ok - es steht immer noch "none" nicht in Blau! - jetzt auf z.B. "black check" beim Flash kliken - "none" wird zu "Factory default PFL image" Das war's Kest
Vielen Dank Kest. Es hat gleich funktioniert. Nur noch eine Frage zu deinen "Bootloadern", da ich ja das gleiche ereichen will. Hast du diese Bootloader in VHDL geschrieben oder hast du sie in einem Nios System erstellt? Was ist deiner Meinung nach einfacher, da ich mich zuerst daran versuchen will, bevor ich evtl. die schwerer Methode angehe? Wäre nett, wenn du mir noch antwortest, auch wenn du schon die Nerven mit mir verloren hast ;-). Gruß
Ich habe alles mit dem SOPC und NIOS erstellt. Die Treiber für Flash gibts ja auch noch dazu deshalb macht da keinen Sinn selber was zu machen. Mit dem SOPC ist es auf jeden Fall einfacher (und schneller)! Es gibt ja unendlich viele Beispiele von Altera (Application Notes). Grüße, Kest
Also ich habe mich jetzt für die Qsys-Variante entschieden. Der SOPC-Builder von Quartus ist scheinbar veraltet. Ist aber soviel ich weiß dasselbe. Für mein System habe ich nun folgende Komponenten: - einen NIOS2 prozessor - ein System ID Peripheral - ein Common Flash Interface - ein JTAG UART Core Ist das alles? Oder habe ich evtl. etwas vergessen? Gruß
Das ist im Prinzip alles. Vielleicht noch den Speicher, aus dem das NIOS-Programm laufen soll? ;-) Grüße, Kest
LdB schrieb: > Ist das alles? Oder habe ich evtl. etwas vergessen? Mal doch mal, wie Du die Komponenten miteinander verbinden willst. Da kann man auch viel besser Lücken und Engpässe ausmachen. Duke
Duke Scarring schrieb: > Mal doch mal, wie Du die Komponenten miteinander verbinden willst. Ok. Ich habe ein Bild angefügt, wie des ganze System aussehen soll. Zudem habe ich die genaue Verschaltung des Systems in Qsys angehängt. Nun habe ich aber ein Problem mit dem Adress Map. Ich weiß nicht ganz genau, wie man die Base-Adresse und die End-Adresse herausfindet oder berechnet. Ich habe nämlich noch einen Haufen voll von Errors, weil die Adressen sich überlappen. Kann mir einer sagen, wie ich die Adressen berechnen kann, sodass die Messages verschwinden? Die Wahl der Adressen ist doch nicht beliebig oder? Gruß
Hallo, ich habe ja schon vorhin geschrieben -- für den Nios bräuchtest Du jetzt RAM, zur Zeit lässt Du alles aus dem Flash laufen -> keine gute Idee, wenn man mit dem Zugriff auf den Flash noch nicht klar kommt. Mach also ein On-Chip Memory rein, mit der passenden Größe und verbinde es mit dem NIOS. Um die Basis-Adressen automatisch zuzuweisen gehst Du auf System-> Assign Base Addresses. Grüße, Kest
Ok. Danke für den Hinweis. Ich mach auch gleich einen On-Chip Ram rein. Muss ich alle End-Adressen zuweisen oder nur die der Speicher?
Wenn Du Base-Adressen automatisch zuweist (wie ich geschrieben habe), dann musst Du überhaupt nichts mehr machen Kest
Also, ich hab jetzt die Hardware-Komponenten fertig, wie man im Screenshot sieht. Ich habe das System mit Qsys aufgebaut. Muss nun noch die .qsys umgeformt werden, damit ich die.sopcinfo bekomme? Oder brauch ich die erst gar net? Mein Vorgehen sieht jetzt wie folgt aus. Zunächst werde ich nun in Quartus in einer .bdf das System implementieren und den Clk und Reset mit Inputpins versehen und die Ausgänge zuweisen. Danach das System kompilieren um die .sof zu erhalten. Mit dieser .sof muss ich ja mein FPGA laden. Nun sollte es mir in NIOS2 SBT for Eclipse möglich sein, mein System zu generieren. Die C-Bibliotheken müssten dann schon enthalten sein oder irre ich mich da? Muss ich diese evtl selbst einfügen? Wenn dies geschehen ist, kann ich ja die Software in mein Nios-System laden und es sollte funktionieren. Hab ich evtl etwas vergessen? Und zuletzt würde mich interessieren, ob des ganze überhaupt mit der Quartus II Web Edition möglich ist oder brauche ich die lizensierte Version? Grüße
Das ganze funktioniert auch mit der Web-Edition (falls nur NIOS-e eingebunden wird). Ansonsten musst Du halt immer JTAG dranlassen. Wenn Du Eclipse startest, neues Projekt anlegst, die richtige .sopcinfo auswählst, werden alle treiber-Dateien automatisch eingebunden. Kest
Also ich habe jetzt mein Qsys-System fertig. Die Generierung war ebenfalls erfolgreich mit keinen Errors und keinen Warnings. Nun füge ich mein System in mein Quartus-Projekt ein. Dazu erstelle ich eine .bdf und füge das System als Blockschaltbild ein, verbinde die Ein- und Ausgänge jeweils mit den richtigen Pins. Nur ist mir aufgefallen, dass die JTAG-Schnitstelle nicht im Blockschaltbild vorhanden ist. Ist das so richtig? Nachdem ich nun die.qip eingebunden habe, kompilier ich nun das ganze System. Dies geschieht auch ohne Errors, jedoch mit 72 Warnings. Davon sind vier critical Warnings. Ist das normal? Funktioniert des System trotzdem, wie es soll? Zumindest will ich noch die Critical Warnings wegbekomen. Und zwar erhalte ich viermal: Critical Warning (332168): The following clock transfers have no clock uncertainty assignment. For more accurate results, apply clock uncertainty assignments or use the derive_clock_uncertainty command. Hattest du des schon und kannst mir helfen? Gruß
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.