Hallo an alle, nach meinen ersten Designs möchte ich die nun dauerhaft im SPI-Flash des Nexus-4 Board speichern. Dazu habe ich in iMPACT mittels des PROM Formatters eine Vorlage für ein 128 Mbit SPI Flashs samt MCS File erzeugt. Beim Programmieren kommet es jedoch zur Fehlermeldung: <pre> INFO:iMPACT - Current time: 3/12/14 9:02 AM // *** BATCH CMD : Program -p 1 -dataWidth 1 -spionly -e -v -loadfpga PROGRESS_START - Starting Operation. Maximum TCK operating frequency for this device chain: 66000000. Validating chain... Boundary-scan chain validated successfully. 1: Device Temperature: Current Reading: 41.52 C, Min. Reading: 37.09 C, Max. Reading: 42.01 C 1: VCCINT Supply: Current Reading: 0.999 V, Min. Reading: 0.987 V, Max. Reading: 1.008 V 1: VCCAUX Supply: Current Reading: 1.784 V, Min. Reading: 1.781 V, Max. Reading: 1.784 V Unprotect sectors: FALSE SPI SLAVE TYPE in Cse_Operate.c is 99 Core is not loaded. INFO:iMPACT - Downloading /opt/Xilinx/14.7/ISE_DS/ISE/data/cse/cseflash/artix7/xc7a100t_xsdbspi.co r core file. INFO:iMPACT - Creating XC7A100T device. PROGRESS_START - Starting Operation. '1': Programming device... Match_cycle = NoWait. Match cycle: NoWait LCK_cycle = NoWait. LCK cycle: NoWait done. INFO:Cse - Status register values: INFO:Cse - 0011 1111 1001 1110 0000 1000 0000 0010 INFO:Cse - '1': Completed downloading bit file to device. INFO:Cse - '1': Programming completed successfully. PROGRESS_END - End Operation. Elapsed time = 1 sec. key: dclk_has_reset, value: 0 key: period_frc, value: 0 key: period_int, value: 10 Found Slave on Bus Index. Found Slave on Bus Index. Slave Int Type is 99, slave Index is 0 , SPI_SLAVE is 99 Slave Type is 99, slave Index is 0 SPI core clock speed value = 0xA801. PROGRESS_START - Starting Operation. '1': IDCODE is '012018' (in hex). '1': ID Check failed. INFO:Cse - The operation did not complete successfully. '1': Configuration data download to FPGA was not successful. DONE did not go high, please check your configuration setup and mode settings. PROGRESS_END - End Operation. Elapsed time = 3 sec. </pre> Ein direktes programmieren des FPGAs mit dem Bit-File funktioniert ohne Probleme. Woran kann es hier liegen? Danke im Voraus Martin
Hm, was genau ist denn für ein SPI Flash auf dem Board verbaut? Laut Schaltplan sollte da ein Spansion S25FL128S drauf sein, aber die ID die Impact bei dir ausliest (012018) passt da nicht. Der S25FL128S sollte eine 0117xx bringen, 0118xx wäre der 256S. Welche Flash unterstützt werden, findest du hier: http://www.xilinx.com/support/documentation/sw_manuals/xilinx14_4/pim_c_introduction_indirect_programming.htm Es gibt auch einen Umgebungsvariablen-Schalter zum skippen des ID Code Checks, aber der hilft meistens auch nicht, da dann Impact nicht weiß, wieviele Sektoren usw. zu programmieren sind. Die Variable weiß ich leider nicht auswendig, kann ich auf Arbeit morgen mal gucken. Achja, du musst natürlich beim Zuordnen des MCS Files zum SPI Flash genau den Flash-Typ auswählen, der verbaut ist.
:
Bearbeitet durch User
Christian R. schrieb: > Hm, was genau ist denn für ein SPI Flash auf dem Board verbaut? Laut > Schaltplan sollte da ein Spansion S25FL128S drauf sein, aber die ID die > Impact bei dir ausliest (012018) passt da nicht 012018 -> S25FL128P Siehe http://www.spansion.com/Products/memory/Serial-Flash/Pages/Spansion%20FL.aspx#
Laut der Liste wird der ja nur vom Kintex unterstützt... Bestückungsfehler bei Digilent?
Christian R. schrieb: > Laut der Liste wird der ja nur vom Kintex unterstützt... > Bestückungsfehler bei Digilent? Der klassische SPI 1 Bit Mode sollte IMO immer gehen.
Sicher, aber dazu muss impact erst mal wollen. Das kann manchmal sehr widerspenstig sein. ID Check Failed sagt ja eigentlich schon dass er nicht will/kann. Kann man denn den S25FL128P beim Assign MCS File auswählen?
Christian R. schrieb: > Sicher, aber dazu muss impact erst mal wollen. Das kann manchmal sehr > widerspenstig sein. ID Check Failed sagt ja eigentlich schon dass er > nicht will/kann. Kann man denn den S25FL128P beim Assign MCS File > auswählen? Das muss der OP beantworten, ich habe mich nur geäussert weil ich mich auch gerade mit neuen Spansion Flashs beschäftigt habe.
Schon klar, die Frage war auch an ihn gerichtet.
Ich hab eben mal getestet, für den Artix 7 kann ich den S25FL128P gar nicht auswählen.
Hallo, ich hatte mal wieder Zeit zu testen. Und zwar habe ich den S25FL128S ausgewählt. Damit funktioniert der ID-Check. Wenn ich das Programmieren starte, bleibt Impact bei 0% hängen und es tut sich nichts mehr. Hier der Log dazu:
1 | Selected part: S25FL128S |
2 | // *** BATCH CMD : attachflash -position 1 -spi "S25FL128S" |
3 | Unprotect sectors: FALSE |
4 | // *** BATCH CMD : assignfiletoattachedflash -position 1 -file "/home/rschilling/vhdl-projects/knight-rider/Knight Rider.mcs" |
5 | // *** BATCH CMD : attachflash -position 1 -spi "S25FL128S" |
6 | INFO:iMPACT - Current time: 3/16/14 2:40 PM |
7 | // *** BATCH CMD : Program -p 1 -dataWidth 1 |
8 | PROGRESS_START - Starting Operation. |
9 | Maximum TCK operating frequency for this device chain: 66000000. |
10 | Validating chain... |
11 | Boundary-scan chain validated successfully. |
12 | 1: Device Temperature: Current Reading: 38.07 C, Min. Reading: 34.13 C, Max. Reading: 38.56 C |
13 | 1: VCCINT Supply: Current Reading: 1.002 V, Min. Reading: 1.002 V, Max. Reading: 1.005 V |
14 | 1: VCCAUX Supply: Current Reading: 1.793 V, Min. Reading: 1.790 V, Max. Reading: 1.793 V |
15 | INFO:iMPACT - Creating XC7A100T device. |
16 | PROGRESS_START - Starting Operation. |
17 | '1': Programming device... |
18 | Match_cycle = NoWait. |
19 | Match cycle: NoWait |
20 | LCK_cycle = NoWait. |
21 | LCK cycle: NoWait |
22 | done. |
23 | INFO:Cse - Status register values: |
24 | INFO:Cse - 0011 1111 1001 1110 0000 1000 0000 0010 |
25 | INFO:Cse - '1': Completed downloading bit file to device. |
26 | INFO:Cse - '1': Programming completed successfully. |
27 | PROGRESS_END - End Operation. |
28 | Elapsed time = 3 sec. |
29 | Match_cycle = NoWait. |
30 | Match cycle: NoWait |
31 | LCK_cycle = NoWait. |
32 | LCK cycle: NoWait |
33 | INFO:iMPACT - '1': Checking done pin....done. |
34 | '1': Programmed successfully. |
35 | INFO:iMPACT - Current time: 3/16/14 2:40 PM |
36 | // *** BATCH CMD : Program -p 1 -dataWidth 1 -spionly -e -v -loadfpga |
37 | PROGRESS_START - Starting Operation. |
38 | Maximum TCK operating frequency for this device chain: 66000000. |
39 | Validating chain... |
40 | Boundary-scan chain validated successfully. |
41 | 1: Device Temperature: Current Reading: 34.13 C, Min. Reading: 33.64 C, Max. Reading: 38.56 C |
42 | 1: VCCINT Supply: Current Reading: 1.005 V, Min. Reading: 1.002 V, Max. Reading: 1.005 V |
43 | 1: VCCAUX Supply: Current Reading: 1.793 V, Min. Reading: 1.790 V, Max. Reading: 1.793 V |
44 | Unprotect sectors: FALSE |
45 | SPI SLAVE TYPE in Cse_Operate.c is 0 |
46 | INFO:iMPACT - Downloading /opt/Xilinx/14.7/ISE_DS/ISE/data/cse/cseflash/artix7/xc7a100t_xsdbspi.cor core file. |
47 | INFO:iMPACT - Creating XC7A100T device. |
48 | PROGRESS_START - Starting Operation. |
49 | '1': Programming device... |
50 | Match_cycle = NoWait. |
51 | Match cycle: NoWait |
52 | LCK_cycle = NoWait. |
53 | LCK cycle: NoWait |
54 | done. |
55 | INFO:Cse - Status register values: |
56 | INFO:Cse - 0011 1111 1001 1110 0000 1000 0000 0010 |
57 | INFO:Cse - '1': Completed downloading bit file to device. |
58 | INFO:Cse - '1': Programming completed successfully. |
59 | PROGRESS_END - End Operation. |
60 | Elapsed time = 1 sec. |
61 | key: dclk_has_reset, value: 0 |
62 | key: period_frc, value: 0 |
63 | key: period_int, value: 10 |
64 | Found Slave on Bus Index. |
65 | Found Slave on Bus Index. |
66 | Slave Int Type is 99, slave Index is 0 , SPI_SLAVE is 99 |
67 | Slave Type is 99, slave Index is 0 |
68 | SPI core clock speed value = 0xA801. |
69 | PROGRESS_START - Starting Operation. |
70 | '1': IDCODE is '012018' (in hex). |
71 | '1': ID Check passed. |
72 | '1': Erasing Device. |
73 | '1': Using Sector Erase. |
74 | '1': Erasing non-volatile quad-enable bit... |
75 | '1': Programming Flash. |
Weiß jemand woran es diesmal scheitert? lg Martin
Es sollte ungefähr so weitergehen:
1 | ... |
2 | '1': Erasing Device. |
3 | '1': Using Sector Erase. |
4 | '1': Erasing non-volatile quad-enable bit... |
5 | '1': Programming Flash. |
6 | '1': Reading device contents... |
7 | done. |
8 | '1': Verification completed. |
9 | '1':Programming in x4 mode. |
10 | W25Q64BV Status Register Contents = 0x0200. |
11 | ... |
Wie lange hast Du gewartet? Duke
Hat jemand eine Antwort auf dieses Problem zu finden? (Ich habe auch die gleich Problem mit meinem Nexys4). Paul.
Hat von euch schon mal jemand versucht den Support von Digilent zu diesem Problem anzusprechen?
Ich habe entdeckt, dass seit Adept ist nicht für die Nexys4 unterstützt. Das ist beschrieben in dem neuer Nexys4 Referenzhandbuch. Ich habe versucht, die Werkzeuge verwenden, um das Flash-Programm gegeben, und wird stattdessen ein FPGA Programm, um es direkt zu tun.
Mal mit VIVADO probiert? Der kann ja seit 14.1 auch Flashes programmieren. Ist zwar noch gruseliger als Impact, aber naja.
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.