Hallo liebe Forengemeinde, ich versuche gerade uC/OS-II mit dem NIOSII Prozessor auf einem DE0-nano Board von Terasic zum laufen zu bringen. Als erstes habe ich mittels Qsys(Quartus) die Kernarchitektur zusammengestrickt. Diese besteht aus folgenden Komponenten: clk, altpll, sdram(custom), nios(s-Version), jtag_uart, timer und sysid. Den SD-Ram Controller hab ich nach den Timing vorgaben aus dem Datenblatt erstellt. Qsys generiert auch das SOPCINFO-File ohne Fehlermeldungen. Als zweites hab ich in Quartus ein Block Diagramm File erstellt und alle Pins nach dem Schematic von Terasic angeschlossen. Auch hier ohne Fehlermeldung kompiliert. Jetzt bin ich ins Eclipse SBT gewechselt und habe ein uC/OS-Projekt aus den Beispielen gewählt, BSP angepasst (reduced_device_drivers, small_c_library), kompiliert alles ohne Fehler. Wähle ich jetzt jedoch Run As-> NIOS II Hardware, bzw. führe dieselbe Aktion über die Konsole aus $nios2-download -g uC-OS.elf && nios2-terminal. So erhalte ich folgende Fehlermeldung: -------------------------------------------------------- Using cable "USB-Blaster [3-2]", device 1, instance 0x00 Pausing target processor: OK Initializing CPU cache (if present) OK Downloaded 44KB in 1.9s (23.1KB/s) Verifying 02000000 ( 0%) Verify failed between address 0x2000000 and 0x200AB57 Leaving target processor paused -------------------------------------------------------- Noch ein Paar Infos zum System: Arch Linux Quartus II 64Bit Ver.12.0 Build 263 Web Edition DE0-nano Board von Terasic Vielen Dank für eure Hilfe! MfG, Befedo
Wenn Nios aus dem SDRAM läuft, dann funktioniert dieser nicht. Das Problem ist oft "falsche" Clock-Phase zum SDRAM Clock. Also muss Du da noch hand anlegen. Generell ist aber ohne einen Screenshot des Qsys-Systems schwierig was zu sagen. Versuche erstmal alles aus dem internen ONCHIP-Speicher laufen zu lassen (ohne SDRAM). Wenn das läuft, dann nimmst Du SDRAM dazu, lääst aber immer noch aus dem ONCHIP Speicher laufen... und so weiter und so fort. Irgendwann mal hast DFu das Problem eingekreist :-) Grüße, Kest
Ja, klingt nach falscher Speicheranbindung. Mit der PLL einfach den Takt fürs SDRAM um 90° phasenverschieben!
Der Hinweis mit der Phasenverschiebung war sehr gut, danke hierführ! Jedoch schlägt der verify Vorgang jetzt an einer anderen Speicherstelle fehl. ------------------------------------------------------------ Using cable "USB-Blaster [2-9]", device 1, instance 0x00 Processor is already paused Initializing CPU cache (if present) OK Downloaded 44KB in 2.4s (18.3KB/s) Verifying 00000000 ( 0%) Verify failed between address 0x0 and 0xAB57 Leaving target processor paused ------------------------------------------------------------ Bin mir auch nicht so ganz sicher wie ich die CONDUIT Ausgänge von der PLL anschliessen soll. Damit Ihr was handfestes habt, hab ich euch die .bsp und .qsys Dateien mal angehägt. Wär super, wenn da mal jemand drüber schauen könnte. Ach ja, das Eclipse SBT Projekt ist immer noch die Hello World Variante von uC-OS. Vielen Dank für eure Hilfe! MfG, Befedo
Hallo, Also zw. 0x0 und 0xAB57 hast Du Deinen SDRAM, also heißt es, dass es immer noch nicht funktioniert. Die Conduit Ausgänge/Eingänge Deiner PLL solltest Du exportieren (einfach auf "Click to export" rechts neben den Signalen) klicken und diese auch entsprechend beschalten. Es reicht, wenn Du areset auf "0" legst. Ich würde alles "etwas" anders machen: c0 ist ja schon richtig verbunden. SDRAM würde ich auch an c0 hängen. Die phasenverschobene Clock "c1" würde ich exportieren und direkt mit dem SDRAM-Clock-Pin verbinden. Somit läuft Dein ganzes Design in einer Clock-Domäne und du kannst ruhig mit der Phase spielen, bis es funktioniert. Dann sollte alles funktionieren. Grüße, Kest
Danke Jungs, für eure Hilfe! Hab es jetzt hinbekommen, dank der Info von Kest. Wie gesagt, die PLL-CLOCK exportiert und direkt angeschlossen. Bei weiterer Fehlersuche hab ich auch ein interessantes PDF-Manual zum Thema SD-RAM speziell auf dem DE0-nano Board gefunden (ftp://ftp.altera.com/up/pub/Altera_Material/12.0/Tutorials/VHDL/DE0-Nan o/Using_the_SDRAM.pdf). Hier wird genau erläutert, dass man eine Phasenverschiebung (clock skew) benötigt. Beziehungsweise welchen Wert man einstellen soll (3ns). Worüber man evtl. noch stolpern könnte, wäre die Tatsache das man in der PLL-Konfiguration den wert mit negativem Vorzeichen und in Grad angeben muss. Bei mir z.B. -108°@100MHz. Mit diesen Einstellungen hat der Download/Verify problemlos geklappt. --------------------------------------------------------------------- Using cable "USB-Blaster [3-2]", device 1, instance 0x00 Pausing target processor: OK Initializing CPU cache (if present) OK Downloaded 44KB in 1.8s (24.4KB/s) Verified OK Starting processor at address 0x000001BC nios2-terminal: connected to hardware target using JTAG UART on cable nios2-terminal: "USB-Blaster [3-2]", device 1, instance 0 nios2-terminal: (Use the IDE stop button or Ctrl-C to terminate) --------------------------------------------------------------------- Also Danke nochmal! MfG Befedo
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.