Forum: FPGA, VHDL & Co. Nexys 4: SPI-Flash mit iMPACT schreiben -> Fehler


von Martin (Gast)


Lesenswert?

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

von Christian R. (supachris)


Lesenswert?

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
von Lattice User (Gast)


Lesenswert?

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#

von Christian R. (supachris)


Lesenswert?

Laut der Liste wird der ja nur vom Kintex unterstützt... 
Bestückungsfehler bei Digilent?

von Lattice User (Gast)


Lesenswert?

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.

von Christian R. (supachris)


Lesenswert?

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?

von Lattice User (Gast)


Lesenswert?

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.

von Christian R. (supachris)


Lesenswert?

Schon klar, die Frage war auch an ihn gerichtet.

von Christian R. (supachris)


Lesenswert?

Ich hab eben mal getestet, für den Artix 7 kann ich den S25FL128P gar 
nicht auswählen.

von Martin (Gast)


Lesenswert?

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

von Duke Scarring (Gast)


Lesenswert?

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

von Paul G. (paul_g93)


Lesenswert?

Hat jemand eine Antwort auf dieses Problem zu finden?
(Ich habe auch die gleich Problem mit meinem Nexys4).

Paul.

von Christoph Z. (christophz)


Lesenswert?

Hat von euch schon mal jemand versucht den Support von Digilent zu 
diesem Problem anzusprechen?

von Paul G. (paul_g93)


Lesenswert?

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.

von Christian R. (supachris)


Lesenswert?

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
Noch kein Account? Hier anmelden.