Forum: Mikrocontroller und Digitale Elektronik Switch wiederbeleben per JTAG


von Sebastian R. (sebr)


Angehängte Dateien:

Lesenswert?

Habe hier schon seit Ewigkeiten einen defekten Gigabit Switch rumliegen: 
alle Versorgungsspannungen auf dem Board werden sauber erzeugt, erkennt 
auch wenn ein Kabel angesteckt wird aber das wars auch schon (überträgt 
keine Daten). Auf dem Board gibt es auch eine (heartbeat) LED die dunkel 
bleibt. Serielle Konsole spuckt auch nix aus. Also letzte Möglichkeit 
JTAG.
Leider habe ich noch nie was mit JTAG gemacht. Ich habe meinen BusPirate 
nach dieser Anleitung vorbereitet: 
http://cybermashup.com/2014/05/01/jtag-debugging-made-easy-with-bus-pirate-and-openocd/
VPU / VTref ist verbunden. Nun stellt sich mir die Frage: muss der 
Switch auch noch mit Spannung versorgt werden? Weiterhin habe ich in 
meinem configfile kein target definiert, es sollte also automatisch 
gesucht werden. Wie kann ich denn testen ob das (Erkennung / 
Kommunikation) geklappt hat?

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Sebastian R. schrieb:
> Nun stellt sich mir die Frage: muss der Switch auch noch mit Spannung
> versorgt werden?

Natürlich; glaubst Du etwa, daß das das JTAG-Interface übernehmen 
könnte?

von Sebastian R. (sebr)


Lesenswert?

Nicht wirklich aber wunderte mich warum es nich in dem guide erwähnt 
wurde. Versuche dann mal mein Glück...

von Sebastian R. (sebr)


Lesenswert?

Wird schonmal erkannt:
1
Info : JTAG tap: auto0.tap tap/device found: 0x1094009d (mfg: 0x04e, part: 0x0940, ver: 0x1)
2
Warn : AUTO auto0.tap - use "jtag newtap auto0 tap -irlen 4 -expected-id 0x1094009d"
und
1
> scan_chain
2
   TapName             Enabled  IdCode     Expected   IrLen IrCap IrMask
3
-- ------------------- -------- ---------- ---------- ----- ----- ------
4
 0 auto0.tap              Y     0x1094009d 0x00000000     4 0x01  0x03
5
>
Dass kein Zugriff auf den Flash möglich ist liegt wohl daran, dass kein 
config-file für das board definiert ist oder?

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Sebastian R. schrieb:
> Dass kein Zugriff auf den Flash möglich ist liegt wohl daran, dass kein
> config-file für das board definiert ist oder?

Das würde ich stark annehmen.

von Sebastian R. (sebr)


Lesenswert?

Das Board wurde auch bei anderen Switches verbaut und es ist jemand 
gelungen es per JTAG zu beschreiben: 
http://webcache.googleusercontent.com/search?q=cache:nYiWq0bSh1sJ:springdaemons.com/2008/3/12/hacking-the-d-link-dgs-1248t-switch+&cd=1&hl=de&ct=clnk&gl=de
Details dazu fehlen leider. Ein config file für den S3C2510A01 gibt es 
bei OpenOCD ebenfalls nicht. Aus diversen Fundstücken im NEtz habe ich 
mir zwei config files erstellt:
1
source [find interface/buspirate.cfg]
2
buspirate_vreg 0
3
buspirate_mode open-drain
4
buspirate_pullup 1
5
buspirate_port /dev/ttyUSB0
und
1
  if { [info exists CHIPNAME] } {
2
     set _CHIPNAME $CHIPNAME
3
  } else {
4
     set _CHIPNAME s3c2510a
5
  }
6
  
7
  if { [info exists ENDIAN] } {
8
     set _ENDIAN $ENDIAN
9
  } else {
10
     set _ENDIAN little
11
  }
12
  
13
  if { [info exists CPUTAPID] } {
14
     set _CPUTAPID $CPUTAPID
15
  } else {
16
     set _CPUTAPID 0x1094009d
17
  }
18
  
19
  jtag newtap $_CHIPNAME cpu -irlen 4 -ircapture 0x1 -irmask 0x0f -expected-id $_CPUTAPID
20
  
21
  set _TARGETNAME $_CHIPNAME.cpu
22
  # TODO: It's an ARM940T really.
23
  # target create $_TARGETNAME arm920t -endian $_ENDIAN -chain-position $_TARGETNAME -variant arm940t
24
  target create $_TARGETNAME arm9tdmi -endian $_ENDIAN -chain-position $_TARGETNAME -variant arm940t
25
  
26
  # $_TARGETNAME configure -work-area-phys 0x200000 -work-area-size 0x4000 -work-area-backup 1
27
  $_TARGETNAME configure -work-area-phys 0x40000000 -work-area-size 0x4000 -work-area-backup 1
28
  
29
  reset_config trst_and_srst combined
30
  
31
  # External Macronix MX29LV800BBTC-90 (NOR flash) chip.
32
  flash bank $_CHIPNAME.extnorflash cfi 0x00000000 0x100000 2 2 $_TARGETNAME
33
  
34
  init
35
  reset halt
36
  
37
  # flash probe 0
Quelle: http://sourceforge.net/p/openocd/mailman/message/29199929/

Beim Aufruf von
1
sudo openocd -f mybuspirate.cfg -f s3c2510a.cfg
spuckt er mir folgenden Fehler aus
1
Runtime Error: embedded:startup.tcl:20: Unknown param: -variant, try one of: -type, -event, -work-area-virt, -work-area-phys, -work-area-size, -work-area-backup, -endian, -coreid, -chain-position, -dbgbase, or -rtos
2
in procedure 'script' 
3
at file "embedded:startup.tcl", line 58
4
in procedure 'target' called at file "s3c2510a.cfg", line 24
5
in procedure 'ocd_bouncer' 
6
at file "embedded:startup.tcl", line 20
Warum soll der Parameter "variant" unzulässig sein? Siehe z.B. hier: 
http://elk.informatik.fh-augsburg.de/pub/openocd-quickref/old/oocd-quickref-211.pdf

: Bearbeitet durch User
von Sebastian R. (sebr)


Lesenswert?

Kleiner Nachtrag: ich habe die reset_config noch angepasst (reset_config 
srst_only) für den BusPirate und in die config des interface verschoben. 
Ändert aber leider auch nichts an dem obigen Problem. Lässt man den 
Parameter "variant" einfach weg funktioniert es ebenfalls nicht weil es 
beim halt immer timeout gibt.

von Sebastian R. (sebr)


Lesenswert?

Ich grabe das nochmal aus weil mir beim Aufräumen heute der Switch 
wieder vor die Füße gefallen ist. Mittlerweile habe ich einen J-Link von 
Segger und muss mich nicht mehr mit dem Bus Pirate rumärgern.
Leider ist das Ergebnis aber das gleiche und es gelingt einfach nicht 
das target anzuhalten.
Woran kann das liegen?
Da der Blogpost aus dem ersten Beitrag nicht mehr existiert ist hier der 
Link zu archive: 
http://web.archive.org/web/20090101211001/http://blog.springdaemons.com/2008/3/12/hacking-the-d-link-dgs-1248t-switch

von Ben B. (Firma: Funkenflug Industries) (stromkraft)


Lesenswert?

Blöde Frage: Wieviel kostet so ein Switch gebraucht und funktionsfähig?

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.