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?
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?
Nicht wirklich aber wunderte mich warum es nich in dem guide erwähnt wurde. Versuche dann mal mein Glück...
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?
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.
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
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.
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.