Was für einen Flash-Chip hast du denn im Display? Vielleicht passen die Erase, etc. Befehle einfach nicht zu deinem Flash?
Hab zu hause nicht so einen kleinen Schraubendreher zur Hand, aber würde zur BL Theorie passen.
Meine letzten genannten Analysen kann man vergessen, da war irgendwie der Wurm drin, keine Ahnung warum es immer einen Reset gab.
Bin jetzt mal mit dem Debugger + Wireshark dran gegangen und es verhält sich so:
flash_cmd(h, SPM_RES, 1, 0);
flash_cmd(h, SPM_WRSR, 2, 0); // clr status
flash_cmd(h, SPM_WREN, 1, 0);
flash_cmd(h, SPM_FLASH_BE, 1, 0);
werden erfolgreich ausgeführt und vom DPF immer mit OK quittiert.
Aber anschließend gibs Probleme bei Abfrage des Flashstatus - über bootloader.c / flash_status_hid() / spilib_process() wird aufgerufen:
error = transmit(h, umsg);
if (umsg->u.spi.rnum > 0 && error >= 0) {
error = usb_rawread(h->dev.udev, out, 64);
}
if (error < 0) perror("Reading USB");
else error = 0;
return error;
Der Transmit ist noch erfolgreich, aber beim usb_rawread() gibt es nach 4s eine Fehlermeldung, hierzu der Trace:
No. Time Source Destination Protocol Length Info
1 0.000000 host 4.1 USB 72 URB_INTERRUPT out
Frame 1: 72 bytes on wire (576 bits), 72 bytes captured (576 bits)
USB URB
URB id: 0xffff8800a6b16e40
URB type: URB_SUBMIT ('S')
URB transfer type: URB_INTERRUPT (0x01)
Endpoint: 0x01, Direction: OUT
0... .... = Direction: OUT (0)
.000 0001 = Endpoint value: 1
Device: 4
URB bus id: 5
Device setup request: not relevant ('-')
Data: present (0)
URB sec: 1333621527
URB usec: 617005
URB status: Operation now in progress (-EINPROGRESS) (-115)
URB length [bytes]: 8
Data length [bytes]: 8
[Response in: 2]
Leftover Capture Data: 0810bf1111010105
No. Time Source Destination Protocol Length Info
2 0.000101 4.1 host USB 64 URB_INTERRUPT out
Frame 2: 64 bytes on wire (512 bits), 64 bytes captured (512 bits)
USB URB
URB id: 0xffff8800a6b16e40
URB type: URB_COMPLETE ('C')
URB transfer type: URB_INTERRUPT (0x01)
Endpoint: 0x01, Direction: OUT
0... .... = Direction: OUT (0)
.000 0001 = Endpoint value: 1
Device: 4
URB bus id: 5
Device setup request: not relevant ('-')
Data: not present ('>')
URB sec: 1333621527
URB usec: 617106
URB status: Success (0)
URB length [bytes]: 8
Data length [bytes]: 0
[Request in: 1]
[Time from request: 0.000101000 seconds]
No. Time Source Destination Protocol Length Info
3 16.684956 host 4.1 USB 64 URB_INTERRUPT in
Frame 3: 64 bytes on wire (512 bits), 64 bytes captured (512 bits)
USB URB
URB id: 0xffff8800cc594180
URB type: URB_SUBMIT ('S')
URB transfer type: URB_INTERRUPT (0x01)
Endpoint: 0x81, Direction: IN
1... .... = Direction: IN (1)
.000 0001 = Endpoint value: 1
Device: 4
URB bus id: 5
Device setup request: not relevant ('-')
Data: not present ('<')
URB sec: 1333621544
URB usec: 301961
URB status: Operation now in progress (-EINPROGRESS) (-115)
URB length [bytes]: 64
Data length [bytes]: 0
[Response in: 4]
No. Time Source Destination Protocol Length Info
4 20.686914 4.1 host USB 64 URB_INTERRUPT in
Frame 4: 64 bytes on wire (512 bits), 64 bytes captured (512 bits)
USB URB
URB id: 0xffff8800cc594180
URB type: URB_COMPLETE ('C')
URB transfer type: URB_INTERRUPT (0x01)
Endpoint: 0x81, Direction: IN
1... .... = Direction: IN (1)
.000 0001 = Endpoint value: 1
Device: 4
URB bus id: 5
Device setup request: not relevant ('-')
Data: present (0)
URB sec: 1333621548
URB usec: 303919
URB status: No such file or directory (-ENOENT) (-2)
URB length [bytes]: 0
Data length [bytes]: 0
[Request in: 3]
[Time from request: 4.001958000 seconds]
Display More
Das interessante: diesen Vorgang kann ich beliebig oft wiederholen, ohne einen weiteren detach machen zu müssen - ABER der Flashspeicher bleibt ungerührt, nichts wird gelöscht.
Muss ich wohl doch mal den Flashbaustein anschauen - aber erst nach Ostern, fahre ein paar Tage weg.