mikrocontroller.net

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


Autor: Eduard Fichtner (edddy)
Datum:

Bewertung
0 lesenswert
nicht 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/PageLibrary4...)
mit Openocd und dem wiggler flashen.

Ich habe momentan folgendes config-file:
#daemon configuration
telnet_port 4444
gdb_port 3333

#interface
interface parport
parport_port 0x378
parport_cable wiggler
jtag_speed 0
#use combined on interfaces or targets that can't set TRST/SRST separately
reset_config trst_and_srst srst_pulls_trst

#jtag scan chain
#format L IRC IRCM IDCODE (Length, IR Capture, IR Capture Mask, IDCODE)
jtag_device 4 0x1 0xf 0xe

#target configuration
daemon_startup reset
#target <type> <startup mode>
#target arm7tdmi <reset mode> <chainpos> <endianness> <variant>
target arm7tdmi little run_and_halt 0 arm7tdmi-s_r4
target_script 0 reset h2294_init.script
run_and_halt_time 0 30
working_area 0 0x40000000 0x40000 nobackup

#flash configuration
flash bank lpc2000 0x0 0x40000 0 0 lpc2000_v1 0 14765 calc_checksum
flash bank cfi 0x80000000 0x400000 2 2 0

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

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

Autor: Dominic R. (dominic)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Eduard Fichtner (edddy)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Dominic,

Nach entfernen der "ersten flash bank"
und der Eingabe bei telnet folgende Meldung bei Openpcd:

Info:    openocd.c:84 main(): Open On-Chip Debugger (2006-01-26 13:30 CET)
Warning: arm7_9_common.c:683 arm7_9_assert_reset(): srst resets test logic, to
Info:    server.c:67 add_connection(): accepted 'telnet' connection from 0
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

Autor: Dominic R. (dominic)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.