Samsung G3010 SoftwareInfo + 2.Webinterface + seriell + Jtag

Beim Downgraden auf 1.02 gibt es beim G3010 das Problem, dass die Firmware-Datei auf dem Freenet-FTP kaputt ist.

[Biiieeeeeppppp, Novize! Begründung: Nicht hier!]

edit: wie? was hier nicht? wo dann?
 
Zuletzt bearbeitet:
wo ist die kaputt? Update von 1.00 auf 1.02 da gehts, von 2.xx auf 1.02 halt nicht -> demnach 1+1 = ?
 
Die ist tatsächlich kaputt

Leider is das Archiv beschädigt !

Es muss doch irgendjemanden geben, der sich das aus Spaß schon mal
gezogen hatte, macht ja wohl jeder, Firmware sammeln...
 
Ich wollte das schon immer mal ausprobieren, aber bin nicht so der Hardware Freak. Ich hab also meinen 3210 offen, und ich habe ein altes Nokia-Handy-Datenkabel fuer die serielle Schnittstelle. Das hat 4 Adern (rot, blau, schwarz, weiss).

Kann mal bitte jemand beschreiben oder markieren, wo die Kontake fuer die serielle Schnittstelle auf der Platine sind? Und was wo hinzuloeten ist? Gerne auch im --verbose-mode. ;) TIA.
 

Anhänge

  • 3210-4.jpg
    3210-4.jpg
    223.4 KB · Aufrufe: 136
Ich wollte das schon immer mal ausprobieren, aber bin nicht so der Hardware Freak. Ich hab also meinen 3210 offen, und ich habe ein altes Nokia-Handy-Datenkabel fuer die serielle Schnittstelle. Das hat 4 Adern (rot, blau, schwarz, weiss).

Kann mal bitte jemand beschreiben oder markieren, wo die Kontake fuer die serielle Schnittstelle auf der Platine sind? Und was wo hinzuloeten ist? Gerne auch im --verbose-mode. ;) TIA.

So, ich habe mich heute mal aufgerafft und die serielle Schnittstelle von meinen 3010 zum laufen gebracht.

Ich versuche mal zu berichten:

Die Konsolenschnittstelle der Samsung Router ist ein serieller Port. Rahmendaten:

RS-232 (bis auf die Spannungen)
Betriebsspannung: 3.3 Volt
Parameter: 115200 Baud, 8 Bit, Keine Parity, 1 Stopbit, kein Handshake
genutzte Leitungen: GND, TxD, RxD

Das eigentliche Problem ist also die Umsetzung der Spannungspegel (PC +/- 12 Volt; Router 0 / 3.3 Volt). Insbesondere die -12 Volt dürften sonst dem Router den Garaus machen.

Und hier kommt Nokia ins Spiel :).

Der F-Bus Anschluß der Nokia-Handys ist nämlich genau das was wir brauchen. RS-232 mit 3.3 Volt! Man nehme also ein Nokia Datenkabel (hier machen sich vor allem die billigen Nachbauten sehr gut, bei e-bay für 1.99 + Porto zu bekommen) und verbinde alles miteinander.

Auf der PC-Seite ist eigentlich alles ganz einfach. Entweder hat man ein altes Datenkabel mit DB-9 Anschluß (dann einfach an die serielle Schnittstelle des PCs anstöpseln) oder eine etwas neuere USB Variante. Bei der USB Variante braucht man nur den richtigen Treiber und der sollte sich mit Hilfe von Tante-G in den Tiefen des Netzes finden lassen. Nach der Installation des Treibers sollte man dann einen weiteren Com-Port finden.

Dann Hyperterm (oder putty V0.60, der kann inzwischen auch seriell) nehmen. Kommunikationsparameter richtig einstellen und fertig ist die PC-Seite.

Nun kommt der Bastelteil.

Anschluß am Samsung: Wenn man das Kabel nicht fest anlöten will, dann besorgt man sich am besten einen passenden Stecker. In meinen Fall wurde ich bei einer Netzwerkkarte fündig (das Kabel, mit dem die Karte mit dem Motherboard für Wake-On-Lan verbunden wird hat (zumindest bei mir) genau den passende Stecker) 3 polig reicht.

Der Serielle Anschluß des Samsung ist die kleine 4 polige Pfostenleiste, auf dem Foto am oberen Rand zu sehen. Die Belegung ist schon mehrfach gepostet worden, der Vollständigheit hier trotzdem nochmal und zwar passend zum Foto:

xxx TxD RxD GND (6-polige Stiftleiste (JTAG))

Achtung. Im Gegensatz zu den geposteten Bilder habe ich die Signalnamen und nicht die anzuschließenden Leitungen beschrieben. TxD ist bei mir also die Leitung, auf der die Daten aus dem Router raus kommen! Der mit xxx bezeichnete Pin interessiert uns nicht.

Nun müssen nur noch die richtigen Kabel da ran. Und da kommen wir mit Kabelfarben leider nicht weiter. Die nutzt nämlich jeder Hersteller nach Lust und Laune.

Ein paar Hinweise für eine sinnvolle Vorgehensweise:
Wenn noch ein zu einem Handy passender Stecker am Kabel hängt, im Netz nach der Belegung des Stecker suchen und Kabel entsprechend durchmessen um die Farben zu ermitteln.

Am Kabel TxD und RxD miteinander verbinden. Wenn man jetzt im Terminalprogramm auf eine Taste drückt, muss man das Ergebnis auf dem Schirm sehen (damit weiß man, dass vom PC bis zu den Kabelenden alles funktioniert)

GND am Samsung anschließen.
RxD Leitung des PCs an den TxD Pin des Samsung anschließen.
Samsung resetten. Dann müssen Daten kommen.

Wenn nicht: Die andere Leitung nehmen (TxD vom Kabel). Eventuell hat da jemand bei der Beschriftung auch "von der anderen Seite gedacht" und TxD ist in Wirklichkeit RxD. Keine Angst. Bei Verpolung von TxD und RxD kann man nix kaputt machen. Nur bitte nicht GND an den Pin xxx anschließen. Sollte der nämlich an VCC liegen, dann könnte es rauchen.

Ohne Stecker wirds etwas schwieriger:
Dann einfach alle Kabel gegeneinander messen (Spannung) im Idealfall findet man so die Masseleitung (zwischen GND und den Signalleitungen müssen ca. 3.3 Volt liegen). Und dann hilft nur ausprobieren. GND anschließen und die übrigen Leitungen nacheinander mit TxD (2. Pin von links) verbinden. Wenn man die richtige Leitung erwischt hat, dann kommen Daten.

Die Sendeleitung ist analog durch ausprobieren zu finden. Wenn man sich
einloggen kann, dann war es die richtige :)

Viel Erfolg
 
Danke fuer die Instruktionen. Werde mir das mal naeher ansehen.
 
D
Auch auf die 3010 kommt man mit Telnet drauf. Doch ohne jegliche Doku kommt man nicht weiter und dann wirft man die Büchse eher in den Müll, wenn keine besonderen Features wie bei der FB locken.
Das was die 3010/3210 kann, kann auch ein VoIP-Router für <10.-¤ bei Ebay (Hama, Zyxel, AOL Box). Warum sich also mit dem Gerät befassen?

was den für besondere Features hat den die FB?
Ich hab keine FB, darum frage ich.
 
ähm, was kann ich denn mit der opensource datei anfangen?
kann ich das wie die update file von freenet einfach drauspielen?
 
@masterlink,

wenn Du Deine Box gerne schrotten möchtest gerne,

OpenSouce müsste noch kompilert werden, aber da nicht alles komplett ist, wirste wohl nichts damit anfangen können.

Gruss
Jörg
 
JTAG-Kabel zum selber Stricken

Hallo Leute,
jetzt gibt es mal wieder was für die Bastler. Ich habe mir das Datenblatt des Xilinx XC9536XL zu Gemüte geführt, der in den Samsung Routern (z.B. G3010) verbaut wurde. Dabei habe ich festgestellt, dass die IO-Pins dieses Teils trotz 3.3 V Betriebsspannung für bis zu 5.5 V konzipiert sind:

http://www.xilinx.com/support/documentation/data_sheets/ds058.pdf

Man kann also auf einfachste Weise mit einem alten Druckerkabel, einer 6-poligen einreihigen Buchsenleiste und zwei 4.7k-Widerständen auf die JTAG-Schnittstelle im Router zugreifen, wenn man handwerklich ein bißchen begabt ist (Schaltplan für ein einfaches Xilinx-PC3-kompatibles Kabel siehe Anhang). Die Software dafür gibt es bei Xilinx und bei diversen Open-Source-Projekten.

Die Belegung der JTAG-Schnittstelle für den Samsung SMT-G3010 wurde hier schon mal gepostet:

http://www.ip-phone-forum.de/attachment.php?attachmentid=21651&d=1200529082

In den anderen Samsung-Routern dürfte die Belegung genauso sein (nicht vertrauen, sondern messen!).

Wichtiger Hinweis: Das hier gepostete Kabel ist eine sehr einfache ungepufferte Variante, die nur für bestimmte Bausteine zu verwenden ist, die mehr als 3.3 V an den Eingängen vertragen. Wer das Originalkabel Xilinx PC3 nachbauen will, der wird hier fündig:

http://www.xilinx.com/support/programr/jtag_cable.pdf

Übrigens gilt sowohl für die gepufferte als auch für die ungepufferte Variante des Kabels, dass ein verpoltes bzw. versetztes Stecken der Stiftleiste nicht zu empfehlen ist, weil dabei Ausgang gegen Ausgang geschaltet wird. Je nach Schaltzustand der Ausgänge geht dabei dann etwas kaputt oder nicht!

Wer seiner Hardware mit einem JTAG-Kabel zu Leibe rückt, der sollte ganz genau wissen, was er tut. Die Verantwortung für Hardware- oder Firmware-Schäden wird hiermit ausdrücklich abgelehnt.

:)

Have a nice day
xorshadow

PS: Als zweite Anlage habe ich den ausgelesenen Inhalt des XC9536XL aus einer G3010 gepostet. Vielleicht hat ja jemand eine Idee, wo da der Flashspeicher angedockt ist?
 

Anhänge

  • jtag_kabel_x3m.jpg
    jtag_kabel_x3m.jpg
    378.9 KB · Aufrufe: 118
  • G3010_XC9536XL.zip
    10.3 KB · Aufrufe: 129
Zuletzt bearbeitet:
MIPS32 4KEc Debug-Mode

Weiß jemand zufällig, warum sich der im Infineon PSB50505 enthaltene MIPS32 4KEc mit den üblichen Bitmustern im EJTAG-Control-Register nicht in den Debug-Modus versetzen läßt?

Alles funktioniert ansonsten völlig normal: Der Prozessor meldet sich, die Fähigkeiten der EJTAG-Schnittstelle können abgefragt werden, der CPU-Reset klappt, der DMA-Zugriff auch. Doch nach dem Setzen des EJTAGBRK-Bits im Control-Register geht der MIPS32 nicht wie erwartet in den Debug-Modus, obwohl er die Debug-Interrupt-Anforderung (also EJTAGBRK) durch Löschen des entsprechenden Bits quittiert:

Probing bus ... Done.

Instruction Length set to 8

CPU Chip ID: 01011001011000000010000010010011 (59602093)
*** Found a Infineon PSB50505 v1.3 CPU chip ***

- EJTAG IMPCODE ....... : 00000000000000000000000000000000 (00000000)
- EJTAG Version ....... : 1 or 2.0
- EJTAG DMA Support ... : Yes

Issuing Processor / Peripheral Reset ...
Debug ECR: 00000000001000100000000000000000 (00220000)
Done.
Enabling Memory Writes ... Done.
Halting Processor ...
Debug ECR: 00000000000010011010000000000000 (0009A000)

Debug ECR: 00000000000010011000000000000000 (00098000)
<Processor did NOT enter Debug Mode!> ... Done.
Clearing Watchdog ... Done.
Manual Flash Selection ...

Flash Vendor ID: 00000000000000000000000000000001 (00000001)
Flash Device ID: 00000000000000000010001001111110 (0000227E)
AMD-Subdevice-ID: 00000000000000000000000000000000 (00000000)

*** Manually Selected a Spansion S29WS256N 8Mx16 (16MB) Flash Chip ***

- Flash Chip Window Start .... : b3000000
- Flash Chip Window Length ... : 01000000
- Selected Area Start ........ : 00000000
- Selected Area Length ....... : 00000000

Zunächst dachte ich, es liegt an meinem Programm, aber nach dem Vergleich mit den Quellen anderer Opensource-Lösungen weiß ich jetzt, daß die von mir verwendete Methode richtig war.

Irgendetwas ist an diesen Samsung-Routern anders als bei anderen Geräten mit der gleichen CPU, und bisher ist es mir nicht gelungen, den Fehler zu finden. Meine Suche nach versteckten Schaltern war zwar erfolgreich (siehe Anlage), hat aber zur Lösung des Problems nichts beitragen können.

Falls jemand etwas darüber weiß, dann bitte schreiben. Zum Dank gibt es für alle hier ein perfekt angepaßtes Programm mit Quellcode zum Flashen der Samsung-SMT-G3xxx-Boxen über den JTAG-Anschluß. Es fehlt nur noch die Umschaltung in den Debug-Modus.

:)

Have a nice day
xorshadow

Edit1: Inzwischen habe ich festgestellt, daß die Register-Selektion nicht klappt. Statt des 32-Bit-EJTAG-Controlregisters ist auch nach der Registerauswahl immer noch das 1-Bit-Bypass-Register geschaltet. Das Setzen der Steuerbits läuft deshalb ins Leere. Irgendwelche Ideen?

Edit2: Die Breite des Instruction Registers ist definitiv 8 Bit. Sie ändert sich auch nicht während des Betriebs. Damit steht die Befehlslänge fest. Es sind also maximal 256 Instruktionen möglich. Bei einem Zurücksetzen der State Machine in den TEST-LOGIC-RESET-Status wird automatisch das IDCODE-Register zugeschaltet. Merkwürdig ist das Verhalten des IDCODE-Befehls (0x01): Er liefert nur beim Start des Programms ein korrektes Ergebnis (59602093). Danach wechselt der Inhalt und es wird beispielsweise 02DBC926 ausgelesen. Das IDCODE Register ist dann nur noch über einen TEST-LOGIC-RESET zu erreichen. Das IMPCODE-Registers ist nach dem ersten Auslesen (Ergebnis 0) gar nicht mehr erreichbar. Stattdessen wird das BYPASS-Register zugeschaltet. Was immer das bedeutet, es ist auf jeden Fall nicht standardmäßig.
 

Anhänge

  • G3xxx_IIF_Belegung.zip
    932 Bytes · Aufrufe: 63
Zuletzt bearbeitet:
Neue Frage: Wie brückt man einen XC9536XL?

Das Problem aus dem vorigen Beitrag ist inzwischen gelöst: Es handelt sich bei dem gefundenen Chip nicht um den Infineon PSB50505, sondern um den CPLD XC9536XL von Xilinx. Kein Wunder also, daß der MIPS-Ejtag-Befehlssatz nicht funktionieren wollte:


#define MIPS_IDCODE 0x01
#define MIPS_IMPCODE 0x03
#define MIPS_ADDRESS 0x08
#define MIPS_DATA 0x09
#define MIPS_CONTROL 0x0A
#define MIPS_ALL 0x0B
#define MIPS_EJTAGBOOT 0x0C
#define MIPS_NORMALBOOT 0x0D
#define MIPS_FASTDATA 0x0E
#define MIPS_TCBCONTROLA 0x10
#define MIPS_TCBCONTROLB 0x11
#define MIPS_TCBDATA 0x12
#define MIPS_TCBCONTROLC 0x13
#define MIPS_PCSAMPLE 0x14
#define MIPS_BYPASS 0x1F

Hier mal zum Vergleich die Xilinx-JTAG-Befehle:

#define XL_EXTEST 0x00
#define XL_SAMPLE 0x01
#define XL_INTEST 0x02
#define XL_ISPEN 0xE8
#define XL_ISPENC 0xE9
#define XL_FBLANK 0xE5
#define XL_FPGM 0xEA
#define XL_FPGMI 0xEB
#define XL_FERASE 0xEC
#define XL_FBULK 0xED
#define XL_FVFY 0xEE
#define XL_FVFYI 0xEF
#define XL_ISPEX 0xF0
#define XL_CLAMP 0xFA
#define XL_HIGHZ 0xFC
#define XL_USERCODE 0xFD
#define XL_IDCODE 0xFE
#define XL_BYPASS 0xFF

Ich habe das natürlich gleich mal ausprobiert, und es stimmt tatsächlich (siehe Anhang). Es ist wirklich der Xilinx. :)

Doch damit tut sich eine neue Frage auf: Mit welcher dieser Instruktionen kann ich den Xilinx-Chip transparent schalten, so dass der dahinter liegende MIPS 4KEc im Infineon PSB50505 sichtbar wird?

Have a nice day
xorshadow
 

Anhänge

  • RegSelectXL.zip
    675 Bytes · Aufrufe: 30
Bauteile in SMT-G3010

Da ich das Teil schon mal offen habe, hier die Bestückung des G3010:

Adsl-Controller + CPU MIPS32 4Kec
Infineon PSB 50505 v1.3

Voip-DSP
2x Infineon PSB 3332 v2.1

ISDN-Chips
Infineon PEB3086F und PSB3186F je v1.4

POTS/FXO-Chips
3x Infineon PEF 4286 T

USB2-Controller
VIA VT6212L

Etherswitch
Infineon ADM6996I

Transformer Module 10/100BASE-TX
Delta LFE8731

CPLD
Xilinx XC9536XL (Gehäuse: VQ44)

Flash
Spansion/AMD S29GL128N CFI Flash (16 MB)
16-Bit-Manufacturer-ID: ID=0x0001
8-Bit-Manufacturer-ID: ID=0x01
16-Bit-Device-IDs: ID1=0x227E ID2=0x2221 ID3=0x2201
8-Bit-Device-IDs: ID1=0x7E ID2=0x21 ID3=0x01

Flash-Aufschrift (Aufkleber):
AAM 600OID-F4
0200_E63D T2
SPA E63D

Flash-Aufschrift (unter dem Aufkleber):
S29GL128N11TF101
729FBX22T

SDRAM
2x 32 MB Samsung 734 K4S561632H-UC75

Die Demontage ist nicht ganz einfach. Vor allem die Erweiterungsplatine und das Abschirmungsblech lassen sich nur mit etwas handwerklichem Geschick zerstörungsfrei entfernen. Wer also nicht unbedingt den freien Zugang zu den Bauteilen braucht, der sollte es besser sein lassen.

Tip für risikofreudige Bastler: Ich habe den großen Steckverbinder der Erweiterungsplatine von beiden Seiten mit einem angeschliffenen SMD-Spatel gelöst und die Klebestellen am Abschirmungsblech mit einem Skalpell geöffnet. Selbstverständlich darf dabei keinerlei Gewalt angewandt und nichts verkratzt werden. Es muß unbedingt darauf geachtet werden, die beiden Steckverbinder an der Erweiterungsplatine nicht zu verkanten, damit die Pins bei der Aktion nicht verbogen werden.

Have a nice day
xorshadow
 
Zuletzt bearbeitet:
Elektrische Prüfung G3010-JTAG abgeschlossen

Nach der Prüfung der elektrischen Verbindungen ist nun endgültig klar, dass der Xilinx XC9536XL der einzige Chip in der Boundary Chain ist. Alle anderen Bauteile sind nicht direkt über den JTAG-Anschluss zu erreichen.

Die Prüfung über die Software bestätigt das: Das Instruktionsregister ist nur 8 Bit breit, und alle diese Bits gehören zum Xilinx-Chip. Ins Bild passt auch, dass die mehrfach wiederholte IDCODE-Registerabfrage ohne Verlassen des IR-Shift-Status nur einen einzigen Erkennungsstring zurückliefert, der zum XC9536XL gehört.

Trotzdem gibt es ganz sicher eine indirekte Verbindung, und zwar über die IO-Pins des Xilinx-Chips. Deshalb habe ich diesen Baustein mit Hilfe der Discovery-Funktion von OpenWince 0.5.1 unter Ubuntu untersucht (vollständiges Ergebnis siehe Anhang):

jtag> discovery
Detecting IR length ... 8
Detecting DR length for IR 11111111 ... 1
Detecting DR length for IR 00000000 ... 108
Detecting DR length for IR 00000001 ... 108
Detecting DR length for IR 00000010 ... 108

Es gibt also drei auffällig große Register (108 Bit!) die zu den JTAG-Instruktionen

EXTEST (0x00)
SAMPLE (0x01)
INTEST (0x02)

gehören. Über die drei oben genannten JTAG-Funktionen können unter anderem auch die insgesamt 34 frei programmierbaren IO-Pins des XC9536XL VQ angesteuert werden. Für einen direkten 32-Bit-Buszugriff bestehend aus Adresse plus Daten reicht das nicht, aber ein direkter Zugriff auf den 16-Bit-Flash-Baustein wäre möglich (Edit: Leider nur im Byte-Mode mit 8 Datenleitungen und 23 Adressleitungen)

Wofür die anderen Bits in den ersten drei Registern sind ist momentan noch unklar. Vielleicht hat ja hier jemand eine Idee?

Have a nice day
xorshadow

Edit: Nach entsprechenden Recherchen und Versuchen ist das EXTEST-Datenregister der aussichtsreichste Kandidat für einen Flash-Zugriff.
 

Anhänge

  • G3010_Discovery.zip
    1,004 Bytes · Aufrufe: 31
Zuletzt bearbeitet:
Das 108-Bit-Rätsel ist gelöst

Der Xilinx XC9536XL hat intern zwei Funktionsblöcke mit je 18 bidirektionalen IO-Ports. Für jeden dieser Ports sind jeweils 3 Bits reserviert:
Ein Input, ein Output und ein Control-Bit, das von der JTAG-Statemachine bei Erreichen des Test-Logic-Reset-Zustands gelöscht wird, um die Ausgänge zu deaktivieren.

Die genaue Zuordnung der Bits zu den Pins des XC9536XL findet Ihr im Anhang. Bitte beachten, dass beim XC9536XL VQ44 zwei IO-Ports nicht nach draußen geführt sind, da dieser Baustein nur 44 Pins hat, von denen 34 (also 2x17) für die freie Programmierung zur Verfügung stehen.

Welche Pins des Bausteins zu welchen Busleitungen führen ist noch nicht bekannt. Es ist aber zu vermuten, dass 23 Leitungen die Adressierung des Flashbausteins im Bereich von 0xb3000000 bis 0xb3ffffff (16 MB) im Adressraum des SMT-G3xxx-Routers abdecken. Weitere 8 Bit werden zum Lesen und Schreiben der Daten des Flash-Bausteins benötigt. Die restlichen drei Leitungen des XC9536XL werden vermutlich die Signale Chip Enable (CE#), Output Enable (OE#) und Write Enable (WE#) steuern.

Wenn jemand eine Idee hat, wie die genaue Zuordnung der XC9536XL-Leitungen zum Adress- und Daten-Bus aus der Hardware ermittelt werden kann, dann bitte melden. Momentan ist die Box gerade zerlegt und ich kann in gewissen Grenzen die Verbindungen prüfen. Erschwert wird das dadurch, dass neben dem Xilinx und dem Flash noch diverse andere Bausteine (CPU, SDRAM etc.) auf dem gleichen Bus hängen. Man hat deshalb auf allen Leitungen eine mehr oder weniger hochohmige Verbindung.

Für die Programmierung des Flash über den CPLD kommt ausschließlich die EXTEST-Instruktion in Frage, da sie als einzige die Programmierung der IO-Pins unabhängig von der eingebrannten konfigurierbaren Logik des Xilinx ermöglicht.

Have a nice day
xorshadow
 

Anhänge

  • EXTEST_Belegung.zip
    911 Bytes · Aufrufe: 26
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.