Forum: Mikrocontroller und Digitale Elektronik Externes flashen mit OpenOCD+wiggler+arm7


von Eduard F. (edddy)


Lesenswert?

Hi,

ich hab einen arm7 von sharp "LH75401" 
(http://www.sharpsma.com/Page.aspx/americas/en/part/LH75401/)
und möchte ein externes Flash "MX29LV320C T/B" von Macronix
(http://www.macronix.com/QuickPlace/hq/PageLibrary48256F55002C90A5.nsf/h_Toc/75d338438656550a48256f5500408bf7/?OpenDocument)
mit Openocd und dem wiggler flashen.

Ich habe momentan folgendes config-file:
1
#daemon configuration
2
telnet_port 4444
3
gdb_port 3333
4
5
#interface
6
interface parport
7
parport_port 0x378
8
parport_cable wiggler
9
jtag_speed 0
10
#use combined on interfaces or targets that can't set TRST/SRST separately
11
reset_config trst_and_srst srst_pulls_trst
12
13
#jtag scan chain
14
#format L IRC IRCM IDCODE (Length, IR Capture, IR Capture Mask, IDCODE)
15
jtag_device 4 0x1 0xf 0xe
16
17
#target configuration
18
daemon_startup reset
19
#target <type> <startup mode>
20
#target arm7tdmi <reset mode> <chainpos> <endianness> <variant>
21
target arm7tdmi little run_and_halt 0 arm7tdmi-s_r4
22
target_script 0 reset h2294_init.script
23
run_and_halt_time 0 30
24
working_area 0 0x40000000 0x40000 nobackup
25
26
#flash configuration
27
flash bank lpc2000 0x0 0x40000 0 0 lpc2000_v1 0 14765 calc_checksum
28
flash bank cfi 0x80000000 0x400000 2 2 0

OpenOCD via telnet bringt folgende Meldung:
1
Open On-Chip Debugger
2
> flash info 0
3
#1: lpc2000 at 0x00000000, size 0x00040000, buswidth 0, chipwidth
4
        #0: 0x00000000 (0x2000kB) erase state unknown, protected
5
        #1: 0x00002000 (0x2000kB) erase state unknown, protected
6
        #2: 0x00004000 (0x2000kB) erase state unknown, protected
7
        #3: 0x00006000 (0x2000kB) erase state unknown, protected
8
        #4: 0x00008000 (0x2000kB) erase state unknown, protected
9
        #5: 0x0000a000 (0x2000kB) erase state unknown, protected
10
        #6: 0x0000c000 (0x2000kB) erase state unknown, protected
11
        #7: 0x0000e000 (0x2000kB) erase state unknown, protected
12
        #8: 0x00010000 (0x10000kB) erase state unknown, protected
13
        #9: 0x00020000 (0x10000kB) erase state unknown, protected
14
        #10: 0x00030000 (0x2000kB) erase state unknown, protected
15
        #11: 0x00032000 (0x2000kB) erase state unknown, protected
16
        #12: 0x00034000 (0x2000kB) erase state unknown, protected
17
        #13: 0x00036000 (0x2000kB) erase state unknown, protected
18
        #14: 0x00038000 (0x2000kB) erase state unknown, protected
19
        #15: 0x0003a000 (0x2000kB) erase state unknown, protected
20
        #16: 0x0003c000 (0x2000kB) erase state unknown, protected
21
        #17: 0x0003e000 (0x2000kB) erase state unknown, protected
22
lpc2000 flash driver variant: 1, clk: 14765
23
> flash write 0 boot.bin 0
24
failed writing file boot.bin to flash bank 0 at offset 0x00000000
25
flash program error
26
>

Hat jemand vielleicht einen Tip bzw. Vorschlag wie das config- File
auf die oben genannte Hardware zu ändern ist?

Wäre euch für eure Hilfe sehr dankbar

Gruß Edi

von Dominic R. (dominic)


Lesenswert?

Dein .cfg File listet zwei Flashes - das erste (Index 0) ist ein Philips 
LPC2000 internes Flash (ich denke nicht, dass der Sharp Controller ein 
solches besitzt ;))
Das zweite (Index 1) ist das CFI kompatible externe Flash. Das muss 
zuerst geprobed werden:
flash probe 1

Wenn es dann richtig erkannt wurde (OpenOCD kennt nur Intel kompatible 
CFI flashes, Patches für andere gibt's im Forum auf sparkfun.com, aber 
keiner davon ist wirklcih "sauber") können die Flash Funktionen 
aufgerufen werden.

Also:
- Die erste "flash bank" entfernen
- OpenOCD starten, Telnet
- flash probe 0 (da es jetzt nur noch ein Flash gibt)
- flash info 0
- flash write ...

Gruss,

Dominic

von Eduard F. (edddy)


Lesenswert?

Hi Dominic,

Nach entfernen der "ersten flash bank"
und der Eingabe bei telnet folgende Meldung bei Openpcd:
1
Info:    openocd.c:84 main(): Open On-Chip Debugger (2006-01-26 13:30 CET)
2
Warning: arm7_9_common.c:683 arm7_9_assert_reset(): srst resets test logic, to
3
Info:    server.c:67 add_connection(): accepted 'telnet' connection from 0
4
Error:   cfi.c:1061 cfi_probe(): cfi primary command set 2 unsupported

Ich nimm mal an, dass ich mich jetzt um ein "unsauberes Patch" bei 
sparkfun.com kümmern muss.

Vielen Dank erstmal

Gruss

Edi

von Dominic R. (dominic)


Lesenswert?

Hallo Edi,

genau, command set 2 ist der AMD/Spansion/etc. Algorithmus, der aktuell 
noch nicht unterstützt ist.
Das Problem für mich ist dabei, dass dieser Algorithmus von sehr vielen 
Herstellern benutzt wird, allerdings nicht immer ganz identisch. Die 
Gemeinsamkeiten aus einer Unmenge von Datenblättern herauszufiltern, und 
das ganze dann möglichst auf mehreren Varianten zu testen, ist sehr viel 
Arbeit, die bisher noch niemand auf sich genommen hat. Ich selbst habe 
nur Boards mit Intel kompatiblen Flashes.

Gruss,

Dominic

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.