[Problem gelöst, FBF neu geflasht über JTag] FBF7050, adam2 Bootloader deadlock?

Ich will den Urlader des 16MB Flash auslesen und dann natürlich schreiben.

Ich glaube das Tool kennnt einfach den 16MB Flash nicht.
Ich habe in meine 7270 einen 8MB Flash eingesteckt ( habe einen Sockel eingelötet) und der 8MB Flash wird erkannt,zwar als ein 4MB Flash aber es reich um den Urlader zu schreiben.

Wie gesagt der 16MB Flash wird gar nicht erkannt und das ist das Problem.
 
Da aber das Auslesen auch im laufenden Betrieb der Box oder per FTP möglich wäre, dachte ich dass das Schreiben eventuell reichte. Aber wenn nichts erkannt wird und eine "Vorgabe" eines Flashchips auch nicht geht, ist es natürlich sinnlos...

Jörg

EDIT: Habe ganz kurz mal ins Programm geschaut. Wenn du die grundsätzlichen Parameter "deines" Flash-Chips kennst, solltes du weiter kommen können, sofern es einen "ähnlichen" gibt. Folgendes ist pro Chip definiert:

Code:
typedef struct _flash_chip_type {
    unsigned int        vendid;         // Manufacturer Id
    unsigned int        devid;          // Device Id
    unsigned int        flash_size;     // Total size in MBytes
    unsigned int        cmd_type;       // Device CMD TYPE
    char*               flash_part;     // Flash Chip Description
    unsigned int        region1_num;    // Region 1 block count
    unsigned int        region1_size;   // Region 1 block size
    unsigned int        region2_num;    // Region 2 block count
    unsigned int        region2_size;   // Region 2 block size
    unsigned int        region3_num;    // Region 3 block count
    unsigned int        region3_size;   // Region 3 block size
    unsigned int        region4_num;    // Region 4 block count
    unsigned int        region4_size;   // Region 4 block size
} flash_chip_type;
Im Source sind auch die bekannten Typen drin, wenn du also einen ähnlichen findest, kannst du mit "/fc:XX = Optional (Manual) Flash Chip Selection" den wählen oder gleich versuchen, die Parameter einzupflegen und neu zu kompillieren...
 
Zuletzt bearbeitet:
Hallo,

habe hier das Datenblatt des ogiginalem 16MB Flash Chips aus der FritzBox 7270 angehängt.Vielleicht kennt sich jemand damit aus und kann mir dabei Helfen die Parameter in das Programm einzufügen und es neu kompilieren.

Ich kann zwar gut Löten aber das ganze Softwarezeug ist für mich bisschen zu viel;)
 
Hallo, highlander.

Kurze Vorbemerkung: von allem, was ich jetzt schreibe, habe ich eigentlich keine Ahnung. Wenn ich hier jetzt was falsches verzapfe, würde ich mich über eine schnelle Korrektur von wem-auch-immer sehr freuen. Ich habe nur mal ein bisschen gelesen und gedacht, aber das Denken ist ja so 'ne Sache...

Ich habe jetzt den Code vom wrt.exe auch mal überflogen (eigentlich nur den Anfang mit den Definitionen) und auf der Seite von Numonyx nach der Spezifikation von dem Chip geschaut (leider sehe ich den Anhang bei Dir im Post nicht).

Es scheint von dem Chip 2 Varianten zu geben: 8bit und 16bit, die nur durch die interne ID unterschieden werden, nicht aber durch die Chip-Bezeichnung. Jetzt hoffe ich mal, dass Du die 16bit-Variante hast, denn wenn ich mir die Chip-Definitionen im wrt.exe anschaue, dann sind das alles 16bit-Chips.

Auf der Numonys-Seite kann man sich einen Treiber im Source-Code von dem Chip runterladen: c2635.zip. Der hilft einem schon mal bei der Erstellung des Definitions-Eintrags in wrt.exe.

Wie schon MaxMuster geschrieben hat, gilt es, einen Eintrag mit der Struktur
Code:
typedef struct _flash_chip_type {
    unsigned int        vendid;         // Manufacturer Id
    unsigned int        devid;          // Device Id
    unsigned int        flash_size;     // Total size in MBytes
    unsigned int        cmd_type;       // Device CMD TYPE
    char*               flash_part;     // Flash Chip Description
    unsigned int        region1_num;    // Region 1 block count
    unsigned int        region1_size;   // Region 1 block size
    unsigned int        region2_num;    // Region 2 block count
    unsigned int        region2_size;   // Region 2 block size
    unsigned int        region3_num;    // Region 3 block count
    unsigned int        region3_size;   // Region 3 block size
    unsigned int        region4_num;    // Region 4 block count
    unsigned int        region4_size;   // Region 4 block size
} flash_chip_type;
zu machen.

Im File c2635.h des Treibers stehen einige Definitionen. In Zeile 500 und 653 steht die vendid (=Manufacturer) (0x0020). Die Definitionen sind wegen der 8bit und 16bit-Varianten zweimal da, zu Beginn des Treiber-Headers wird aber auch ein Define für die 16bit-Variante gesetzt. Ich führe also in Zukunft nur die Zeilen dieser Variante auf.

Die devid für 16bit steht in Zeile 654 (0x227E).

Die flash_size nimmt man am besten als Definition aus dem wrt54g.h: size16MB.

Der Command-Type ist meiner Meinung nach CMD_TYPE_AMD. Warum? Im Treiber-File c2635.c werden die ganzen Kommandos immer 0x00555, 0x002AA, 0x00555 eingeleitet und im wrt54g.c bei Zeile 1209 genau diese Folge für CMD_TYPE_AMD benutzt wird, während _SST und _BSC etwas bzw. ganz anders aussehen. Hier wäre eine Bestätigung von jemandem, der es besser weiß, aber ganz nett. Was mich verwirrt ist die Verschiebung um ein Bit nach links im wrt.exe. Aber vielleicht passiert das auch im Original-Treiber, ich hab' mir das da nicht so genau angeschaut.

Den flash_part kann man ja als freien Text definieren, da bietet sich natürlich "M29W128GH 8Mx16" an.

Und jetzt kommen die Region-Definitionen. Die region2_*- bis region4_*-Werte kann man alle auf 0 setzen, weil der Treiber ab Zeile 669 lauter gleich große Blöcke definiert. Man braucht also nur die richtigen region1-*-Definitionen. Und hier gerate ich ins Schwimmen. Der Treiber definiert für die 16bit-Variante die Blöcke nämlich nicht in Bytes, sondern in Words(=2 Bytes). Er definiert also 128 Blöcke mit 64k Words (=128k Bytes). Jetzt weiß ich nicht, ob man in beim wrt.exe [region1_num, region1_size] = [128,size64k] oder auf [128,size128k] setzen muss. Auch hier wäre ein Wissender hilfreich! Da der wrt.exe bei allen anderen Struktur-Definitionen aber immer Bytes zählt (obwohl ja alle Chips 16bit sind), tippe ich auf 128,size128k.

Insgesamt komme ich auf folgende Strukturdefinition, die man in wrt54g.h vor der Nuller-Zeile in Zeile 364 einfügen müsste:
Code:
{ 0x0020, 0x227E, size16MB, CMD_TYPE_AMD, "M29W128GH 8Mx16           (16MB)"   ,128,size128K,   0,0,          0,0,        0,0        },

Mit dem HairyDairy...4.8.zip-File auf http://downloads.openwrt.org/utils/ konnte ich mit "make" unter Unix ohne Problem das Executable neu bauen und beim Aufruf von
Code:
./wrt54g -h
kam dann sogar gleich die neue Chipdefinition raus:
Code:
kiel HairyDairyMaid_WRT54G_Debrick_Utility_v48 # ./wrt54g -h

====================================
WRT54G/GS EJTAG Debrick Utility v4.8
====================================
>>>snip
            /fc:XX = Optional (Manual) Flash Chip Selection
            -----------------------------------------------
            /fc:01 ............. AMD 29lv160DB 1Mx16 BotB   (2MB)
            /fc:02 ............. AMD 29lv160DT 1Mx16 TopB   (2MB)
            /fc:03 ............. AMD 29lv320DB 2Mx16 BotB   (4MB)
            /fc:04 ............. AMD 29lv320DT 2Mx16 TopB   (4MB)
            /fc:05 ............. AMD 29lv320MB 2Mx16 BotB   (4MB)
            /fc:06 ............. AMD 29lv320MT 2Mx16 TopB   (4MB)
            /fc:07 ............. AMD 29lv320MT 2Mx16 TopB   (4MB)
            /fc:08 ............. Intel 28F128J3 8Mx16       (16MB)
            /fc:09 ............. Intel 28F160B3 1Mx16 BotB  (2MB)
            /fc:10 ............. Intel 28F160B3 1Mx16 TopB  (2MB)
            /fc:11 ............. Intel 28F160C3 1Mx16 BotB  (2MB)
            /fc:12 ............. Intel 28F160C3 1Mx16 TopB  (2MB)
            /fc:13 ............. Intel 28F160S3/5 1Mx16     (2MB)
            /fc:14 ............. Intel 28F320B3 2Mx16 BotB  (4MB)
            /fc:15 ............. Intel 28F320B3 2Mx16 TopB  (4MB)
            /fc:16 ............. Intel 28F320C3 2Mx16 BotB  (4MB)
            /fc:17 ............. Intel 28F320C3 2Mx16 TopB  (4MB)
            /fc:18 ............. Intel 28F320J3 2Mx16       (4MB)
            /fc:19 ............. Intel 28F320J5 2Mx16       (4MB)
            /fc:20 ............. Intel 28F320S3/5 2Mx16     (4MB)
            /fc:21 ............. Intel 28F640B3 4Mx16 BotB  (8MB)
            /fc:22 ............. Intel 28F640B3 4Mx16 TopB  (8MB)
            /fc:23 ............. Intel 28F640C3 4Mx16 BotB  (8MB)
            /fc:24 ............. Intel 28F640C3 4Mx16 TopB  (8MB)
            /fc:25 ............. Intel 28F640J3 4Mx16       (8MB)
            /fc:26 ............. Intel 28F640J5 4Mx16       (8MB)
            /fc:27 ............. MBM29LV320BE 2Mx16 BotB    (4MB)
            /fc:28 ............. MBM29LV320TE 2Mx16 TopB    (4MB)
            /fc:29 ............. MX29LV320B 2Mx16 BotB      (4MB)
            /fc:30 ............. MX29LV320B 2Mx16 BotB      (4MB)
            /fc:31 ............. MX29LV320T 2Mx16 TopB      (4MB)
            /fc:32 ............. MX29LV320T 2Mx16 TopB      (4MB)
            /fc:33 ............. SST39VF320 2Mx16           (4MB)
            /fc:34 ............. ST 29w320DB 2Mx16 BotB     (4MB)
            /fc:35 ............. ST 29w320DT 2Mx16 TopB     (4MB)
            /fc:36 ............. Sharp 28F320BJE 2Mx16 BotB (4MB)
            /fc:37 ............. TC58FVB321 2Mx16 BotB      (4MB)
            /fc:38 ............. TC58FVT321 2Mx16 TopB      (4MB)
            /fc:39 ............. AT49BV/LV16X 2Mx16 BotB    (4MB)
            /fc:40 ............. AT49BV/LV16XT 2Mx16 TopB   (4MB)
            /fc:41 ............. MBM29LV160B 1Mx16 BotB     (2MB)
            /fc:42 ............. MBM29LV160T 1Mx16 TopB     (2MB)
            /fc:43 ............. MX29LV161B 1Mx16 BotB      (2MB)
            /fc:44 ............. MX29LV161T 1Mx16 TopB      (2MB)
            /fc:45 ............. ST M29W160EB 1Mx16 BotB    (2MB)
            /fc:46 ............. ST M29W160ET 1Mx16 TopB    (2MB)
            /fc:47 ............. SST39VF1601 1Mx16 BotB     (2MB)
            /fc:48 ............. SST39VF1602 1Mx16 TopB     (2MB)
            /fc:49 ............. SST39VF3201 2Mx16 BotB     (4MB)
            /fc:50 ............. SST39VF3202 2Mx16 TopB     (4MB)
            /fc:51 ............. SST39VF6401 4Mx16 BotB     (8MB)
            /fc:52 ............. SST39VF6402 4Mx16 TopB     (8MB)
            /fc:53 ............. K8D1716UTC  1Mx16 TopB     (2MB)
            /fc:54 ............. K8D1716UBC  1Mx16 BotB     (2MB)
            /fc:55 ............. MX29LV800BTC 512kx16 TopB  (1MB)
            /fc:56 ............. MX29LV800BTC 512kx16 BotB  (1MB)
            /fc:57 ............. K8D3216UTC  2Mx16 TopB     (4MB)
            /fc:58 ............. K8D3216UBC  2Mx16 BotB     (4MB)
            /fc:59 ............. SST39VF6401B 4Mx16 BotB    (8MB)
            /fc:60 ............. SST39VF6402B 4Mx16 TopB    (8MB)
            /fc:61 ............. M29W128GH 8Mx16           (16MB)
>>>snip

So, damit könntest Du es jetzt mal probieren. Aber bitte bedenke, das ist alles nur ein theoretischer Gedanke! Ich kann keine Verantwortung dafür übernehmen, dass Dein Chip dabei heil bleibt! Du tust auf eigene Verantwortung, was auch immer Du mit diesen Informationen anfängst (We seek safe harbour, puhhh).

Gruß

dumdideldumdei
 
Zuletzt bearbeitet:
Frage zum Interface

Moin zusammen,

es ist mir ja fast zu peinlich öffentlich zu fragen, aber was solls...
Alle Bilder zum Interface im Forum haben 3.3V (nur) an Pin 11 des 74HC573 oder so.
Ist das korrekt, dass nur dort Spannung anliegt (laut "Doku" ist Pin 11 "LE"=latch enable) aber nicht Pin 20 (VCC) beschaltet ist? Oder ist das "eh klar" und deshalb nicht mit drauf???

Danke!

Jörg
 
@MaxMuster
Bei Logikbausteine, ist es übelich nicht direkt am Logiksymbol die Spannungsversorgung anzugeben sondern getrennt im Schaltplan.
 
Bedankt! Ich war doch etwas unsicher....

Jörg
 
Keine Ursache, es ist beruhigend, dass auch du, mal wo unsicher bist!
Im allgmeinen kommen mir deine Beiträge immer sehr Souverän vor, und ich fühl mich eher unsicher.
 
Hi friends
For days I tried to retrieve a box 7170 fritz V1 with jtag purchased on ebay and used to retrieve a 7050, a 5050 and a fon wlan but with this cable I can not see the AR7 cpu. The chip in the firtz is a XILINX SPARTAN XC3S400 and also the FLASH is a MX29LV640MTTC-90g. This is what I see:
Code:
naf@naf-desktop:~/jtag$ ./wrt54g -probeonly

====================================
WRT54G/GS EJTAG Debrick Utility v4.8
====================================

Probing bus ... Done

Instruction Length set to 5

CPU Chip ID: 00000001010000011100000010010011 (0141C093)
*** Unknown or NO CPU Chip ID Detected ***

*** Possible Causes:
    1) WRT54G/GS is not Connected.
    2) WRT54G/GS is not Powered On.
    3) Improper JTAG Cable.
    4) Unrecognized CPU Chip ID.
naf@naf-desktop:~/jtag$

Please can you help me. Thanks
 
If there is another chip in the chain you will probably have to use the "/instrprefix:<x>" and "/dataprefix:<y>" switches. I don't own a 7170, so you will have to search a little in the forum for the correct numbers, it should also be in this thread as far as I remember. ok, here are at least some values:
Code:
... /instrlen:5 /instrprefix:9 /dataprefix:2   <-- used e.g. for 7141 
... /instrlen:5 /instrprefix:6 /dataprefix:1   <-- used e.g. for 5012
... /instrlen:5 /instrprefix:4 /dataprefix:1   <-- used e.g. for 7050
You will nead feadys software to use this switches...


Jörg
 
Zuletzt bearbeitet:
If there is another chip in the chain you will probably have to use the "/instrprefix:<x>" and "/dataprefix:<y>" switches. I don't own a 7170, so you will have to search a little in the forum for the correct numbers, it should also be in this thread as far as I remember. ok, here are at least some values:
Code:
... /instrlen:5 /instrprefix:9 /dataprefix:2   <-- used e.g. for 7141 
... /instrlen:5 /instrprefix:6 /dataprefix:1   <-- used e.g. for 5012
... /instrlen:5 /instrprefix:4 /dataprefix:1   <-- used e.g. for 7050
You will nead feadys software to use this switches...


Jörg


Thanks for your help, I tried all commands on the thread and the result is always that.
 
... and used to retrieve a 7050, a 5050 and a fon wlan ...

Did I get it right, it worked with all this boxes but not with the 7170? Or did't it work with any of this boxes?
Did you pull the "TRST" of both CPU and SPARTAN ("cTRST") to 3.3 V with pullup resistor (e.g. 100R) ??

Do you always get exactly the same result (e.g. for chip id)?

Is your jtag layout equal to the one of this thread?
Maybe you also want to try JPaschers wrt version?

Jörg

EDIT The ID you got ("00000001010000011100000010010011") seems to be an Xlink/spartan. So you didn't connect to the right device in the jtag chain.
 
Zuletzt bearbeitet:
Did I get it right, it worked with all this boxes but not with the 7170? Or did't it work with any of this boxes?
Did you pull the "TRST" of both CPU and SPARTAN ("cTRST") to 3.3 V with pullup resistor (e.g. 100R) ??
Yes it worked with a fbf wlan, 5050 and 7050, just yesterday i used to recover a 5050 of my friend's.

Do you always get exactly the same result (e.g. for chip id)?.
Yes, also with a wiggler cable i have the same result.

Is your jtag layout equal to the one of this thread?
Maybe you also want to try JPaschers wrt version?
This is the result from that:
Code:
./wrt54g -backup:custom  /skipdetect /silent /hir:9 /window:90000000 /start:90000000 /length:20000 /dv:1

==================================================
WRT54G/GS/AVM/Speedport EJTAG Debrick Utility v4.8
==================================================

***--------------------------------------------------------------------------------------------------------------***

Beginning decect scan leangth...
Chain lenght: 64 IR-Chain: 0000000000000000000000000000001100000000000000000000000000000011 (00000003)
Probing bus ...
'9' Header bits added to IR, through commmand line option

*** CHIP Device number: '1' SET BY COMMANDLINE OPTION ***
Device number: '1' Chip ID: 00001011011011011100000000101111 (0B6DC02F)
 *** Unknown or NO Chip ID Detected ***
---- Selected: '1' Chip ID: 00001011011011011100000000101111 (0B6DC02F)
 *** Unknown or NO Chip ID Detected ***


Count devives: '1' selected device: '1' count header bits added to DR: '0' count trailing bits added to DR: '0'
Chain length: '64' Selected IR length: '0' Sum of added header bits to IR: '9' Sum of added trailer bits to IR: '55'

Chip ID: 00000000110010110001001000101100 (00CB122C)
 *** Unknown or NO Chip ID Detected ***

---- Chip is not selected as disired!! ----

Device number: '1'

Insruction:

Chip ID wanted:
00000000000000000000000000000000
Chip ID: 00000000110010110001001000101100 (00CB122C)
 *** Unknown or NO Chip ID Detected ***

Jörg

EDIT The ID you got ("00000001010000011100000010010011") seems to be an Xlink/spartan. So you didn't connect to the right device in the jtag chain.[/QUOTE]

This is the screenshot of my 7170 and i tried R100 , R320 and R480 with the TRST to 3v3 and CTRST to 3V3 the same result:


Naf
 
"Connecting to the wrong device" might also mean wrong values for instrprefix/dataprefix or /hir ...
There was another tool around, which was able to print out the chain. I will look for it...
EDIT: o.k. here we go

Jörg
 
"Connecting to the wrong device" might also mean wrong values for instrprefix/dataprefix or /hir ...
There was another tool around, which was able to print out the chain. I will look for it...
EDIT: o.k. here we go

Jörg

Thanks for your help. I followed your advice and understood that there are problems with TDO now I try to redo the welding.

Code:
jtag> detect
Warning: TDO seems to be stuck at 1
 
debricking mit wrt.exe von Feadi bzw. wrt54g_v48

So Leute, jetzt habe ich es auch geschafft.

Nach einigen Fehlversuchen habe ich mit einem "primitiven" JTAG-Interface, bestehend nur aus 5 Stück 100 Ohm Widerständen und ein paar cm Kabel, erfolgreich meine FB5050 wiederbelebt.
Hier der link zur Bauanleitung für das JTAG Interface: http://feadispace.fe.funpic.de/FBF7050/
Als software habe ich verwendet: WRT54G.exe Version4.8 von HairyDairyMaid und die Variante wrt.exe von Feadi (siehe hier in diesem Thread).

Zuerst hatte ich es mit einer komplexeren Schaltung (mit aktivem level shifter) versucht, aber da hat irgendwie der Chip gesponnen.
Dieses Interface hatte mir MaxMuster zugeschickt - vielen Dank dafür, Jörg.
Mit dem R-Interface war ich dann erfolgreich und konnte lesen / löschen / schreiben:
- auf einer FBF5050 mit zerstörtem Urlader (mtd2)
- auf einer FB SL, ebenfalls mit gelöschtem Urlader
- auf einer FBF5010, bei der mtd2, mtd3 und mtd4 kaputt waren

Besonders interessant ist diesbezüglich die FBF5010, weil die einen Xilinx Coprozessor hat, und da die Meinung herrscht, JTAG gehe nur mit aktivem level shifter.
Also: Es geht auch passiv, nur mit 100 Ohm Widerständen.

Ich habe die Widerstände möglichst nahe an der FB-Platine angelötet, speziell den für TCK, vielleicht hat das geholfen.

Jedenfalls hat das HairyDairyMaid Tool (wrt54g.exe) perfekt gearbeitet: Alle CPUs und alle Flash Chips wurden korrekt erkannt, auch der Flash von der FB SL mit nur 2MB (MX29LV160BTTC-70).

Meine FB5050 funktioniert wieder wie ein Uhrwerk.
Bei den beiden anderen Boxen konnte ich zwar den Urlader neu schreiben, aber da muss ich mir noch die Environment Parameter mtd3 und mtd4 beschaffen, damit die recovery-tools die Box finden und wieder vollständig zum Leben erwecken.

Insgesamt ein voller Erfolg, dieses Wochenende mit JTAG.

Grosser Dank gebührt MaxMuster, der mich bei der Vorbereitung intensiv unterstützt und motiviert hat.
Herzlichen Dank, Jörg.
.
 
Gratulation!

Das könnte mich erneut motivieren wieder einmal damit herum zu spielen.

Es ist schon eigneartig, dass du mit dieser Kombination an Software und Adapter erfolgreich warst.
Genaugenommen dürfte es nicht funktionieren da das "WRT54G.exe Version4.8 von HairyDairyMaid" und auch alle anderen Versionen einen Timmingbug hat der aber offensichtlich je nach Verdrahtung ausgeglichen wird.

Du schreibst auch, dass du eine FBF5010 die zwei Bausteine in der Chain hat. wiederbeleben konntest, obwohl die verwendete Softwate eigentlich nur einen Chip in der Chain unterstützt. Die Software funktioniert auch mit zwei Chips in der Chain vorausgesetzt es ist der erste Chip in der Chain den man erreichen will.

Also ist Möglicherweise der Anschlusskontakt für TDI/TDO ein anderer als der am Steckverbinder?

Weiter würde mich interessieren ob die CPUs die auf diesen Prints aufgelötet sind noch aus der TI Produktion oder bereits aus der Infineon Produktion stammen.
Ich habe den verdacht dass nur CPUs die noch aus der TI Produktion stammen mit der Software zusammenarbeiten.
 
Genaugenommen dürfte es nicht funktionieren da das "WRT54G.exe Version4.8 von HairyDairyMaid" und auch alle anderen Versionen einen Timmingbug hat der aber offensichtlich je nach Verdrahtung ausgeglichen wird.
Was bewirkt denn dieser Timimg-bug?
Bei der FB5010 hängt sich mein Primitiv-Interface (fast) immer am watchdog auf. Nur ganz selten geht die CPU in den debug mode und ich kann lesen / schreiben / löschen. Hat das was mit dem timing bug zu tun?
Ich vermute ja, dass die Spannungen ohne level shifter sehr grenzwertig sind (wegen der chain mit zwei CPUs).

Deine anderen Fragen beantworte ich später, jetzt muss ich ins Bett ...

---------------------------

Aber ich habe einen erneuten Erfolg zu berichten: Meine gute alte FB SL lebt wieder!

Das waren die Schritte zum Erfolg:

1. Zwei aus recoveries extrahierten mtd2 waren leider fehlerhaft. Damit tat sich gar nichts, sogar die serielle Konsole blieb stumm. Das hatte mich viel Zeit gekostet.

2. Habe dann einen bootloader von der FBF genommen, Version 89, natürlich für Kernel 2.4
Damit hat die Box kurz geatmet, beim Versuch des recovery mit 10.03.94 hat sie sich aber sofort wieder verabschiedet.
Grund war die ungewohnte Partitionierung des Flash-Speichers (nur 2 MB).

3. Die serielle Konsole (Hyper Terminal) hat mir dann die korrekte Flash Aufteilung der SL verraten:
Code:
[b]mdt0  0x900B0000 0x901F0000
mdt1  0x90010000 0x900B0000
mdt2  0x90000000 0x90010000
mdt3  0x901F0000 0x901F8000
mdt4  0x901F8000 0x90200000[/b]
Beachte speziell mtd3 und mtd4, die bei der FB SL nur 32kB gross sind, nicht 128 kB, wie gewohnt!

4. Also habe ich nochmal den bootloader 89 geladen und dann sofort mit FTP die Partitionen mtd0/1/2/3/4 korrigiert. Danach lief die recovery 10.03.94 korrekt durch und die FB SL lebte wieder. Sie hat auch wieder MAC Adressen, ich weiss aber nicht, ob es die ursprünglichen sind oder die von der FBF als "Leihmutter".

5. Noch eine Besonderheit: Die FB SL hat als HWRevision einfach "F". Ich weiss nicht, ob es der Buchstabe ist oder die Hex-Zahl. Meines Wissens ist die FB-SL die einzige FB mit dieser Besonderheit.

Jetzt fehlt mir von meinen drei ehemals zerschossenen Boxen nur noch die FB5010. Diese macht einige Schwierigkeiten (siehe oben). Aber das schaffe ich auch noch - so wie die FB5050 und die FB SL.
.
 
JTAG Problem mit FB5010

.
Frage an die WRT54G Debrick Experten:

Meine zerschossenen FB5050 und FB SL konnte ich mit meinem "Primitiv Interface" per JTAG reparieren (siehe meine vorigen Beiträge).

Bei der FB5010 komme ich nun nicht mehr weiter, das Debrick Tool hängt sich regelmässig am watchdog auf.
Habe es vielleicht 50mal probiert und war ca. 5mal korrekt auf der Box.
Die CPU wird korrekt erkannt, auch der Flash Chip (falls ich so weit komme). Ich konnte im Flash lesen, löschen und schreiben.
Aber nun komme ich nicht mehr drauf. Es hängt immer an derselben Stelle (watchdog - siehe unten).

Was kann ich machen, um den watchdog zu überlisten?

Code:
C:\Fritz!\Diverses\HairyDairyMaid\WRT54G_v48>wrt_feadi2 -flash:custom /window:90
000000 /start:90000000 /length:10000

====================================
WRT54G/GS EJTAG Debrick Utility v4.5
====================================

Probing bus ... Power up now...
Done

Instruction Length set to 5

CPU Chip ID: 00000000000000000001000000001111 (0000100F)
*** Found a TI AR7WRD TNETD7300* Rev 1 CPU chip ***

reading IMPCODE register... 00000000000000000000000000000000 (00000000)
reading IMPCODE register... 01000001010000000100000000000000 (41404000)
reading IMPCODE register... 01000001010000000100000000000000 (41404000)
reading IMPCODE register... 01000001010000000100000000000000 (41404000)
reading IMPCODE register... 01000001010000000100000000000000 (41404000)
reading IMPCODE register... 01000001010000000100000000000000 (41404000)
reading IMPCODE register... 01000001010000000100000000000000 (41404000)
reading IMPCODE register... 01000001010000000100000000000000 (41404000)
reading IMPCODE register... 01000001010000000100000000000000 (41404000)
reading IMPCODE register... 01000001010000000100000000000000 (41404000)
    - EJTAG IMPCODE ....... : 01000001010000000100000000000000 (41404000)
    - EJTAG Version ....... : 2.6
    - EJTAG DMA Support ... : No

Issuing Processor / Peripheral Reset ... Done
Enabling Memory Writes ... Skipped
Halting Processor ... <Processor did NOT enter Debug Mode!> ... Done
Clearing Watchdog ... ^C
C:\Fritz!\Diverses\HairyDairyMaid\WRT54G_v48>wrt_feadi2 -flash:custom /window:90
000000 /start:90000000 /length:10000

====================================
WRT54G/GS EJTAG Debrick Utility v4.5
====================================

Probing bus ... Power up now...
Done

Instruction Length set to 5

CPU Chip ID: 00000000000000000000000000000000 (00000000)
*** Unknown or NO CPU Chip ID Detected ***

*** Possible Causes:
    1) WRT54G/GS is not Connected.
    2) WRT54G/GS is not Powered On.
    3) Improper JTAG Cable.
    4) Unrecognized CPU Chip ID.
exit, Presione una tecla para continuar . . .

C:\Fritz!\Diverses\HairyDairyMaid\WRT54G_v48>wrt_feadi2 -flash:custom /window:90
000000 /start:90000000 /length:10000

====================================
WRT54G/GS EJTAG Debrick Utility v4.5
====================================

Probing bus ... Power up now...
Done

Instruction Length set to 5

CPU Chip ID: 00000000000000000001000000001111 (0000100F)
*** Found a TI AR7WRD TNETD7300* Rev 1 CPU chip ***

reading IMPCODE register... 00000000000000000000000000000000 (00000000)
reading IMPCODE register... 01000001010000000100000000000000 (41404000)
reading IMPCODE register... 01000001010000000100000000000000 (41404000)
reading IMPCODE register... 01000001010000000100000000000000 (41404000)
reading IMPCODE register... 01000001010000000100000000000000 (41404000)
reading IMPCODE register... 01000001010000000100000000000000 (41404000)
reading IMPCODE register... 01000001010000000100000000000000 (41404000)
reading IMPCODE register... 01000001010000000100000000000000 (41404000)
reading IMPCODE register... 01000001010000000100000000000000 (41404000)
reading IMPCODE register... 01000001010000000100000000000000 (41404000)
    - EJTAG IMPCODE ....... : 01000001010000000100000000000000 (41404000)
    - EJTAG Version ....... : 2.6
    - EJTAG DMA Support ... : No

Issuing Processor / Peripheral Reset ... Done
Enabling Memory Writes ... Skipped
Halting Processor ... <Processor did NOT enter Debug Mode!> ... Done
Clearing Watchdog ... ^C
C:\Fritz!\Diverses\HairyDairyMaid\WRT54G_v48>
 
Was bewirkt denn dieser Timimg-bug?

Bei der FB5010 hängt sich mein Primitiv-Interface (fast) immer am watchdog auf. Nur ganz selten geht die CPU in den debug mode und ich kann lesen / schreiben / löschen. Hat das was mit dem timing bug zu tun?
Ich vermute ja, dass die Spannungen ohne level shifter sehr grenzwertig sind (wegen der chain mit zwei CPUs).

Ja, so oder so ähnlich.
Leitungslängen des Interfaces währen normal bei saubererer Programmierung der zeitrelevanten Abfragen absolut unkritisch.
HairyDairyMaid macht das Lesen und Schreiben praktisch zum selben Zeitpunkt, die notwendigen Verzögerungen zwischen Clock und Leseleitung/Schreibleitung entstehen erst durch die Verdrahtung. Widerstände wirken in kombination mit den schwachen Pegeln und den Leitungskapazitäten als RC-Glieder, die Pegel haben dadurch verwischte unsabere Anstiegskurven. Verwendet man Pegelwandler dann ist dies nicht mehr der Fall damit aber HairyDairyMaid's Software damit einigemaßen funktioniert muss das Clock Signal in der Schaltung mit eine Kondensator etwas verzögert werden. Standart Schaltungen funktionieren normalerweise damit nicht. Es ist aber nicht nur der Umstand, dass das Clock Signal nicht zur Leseschreibleitung passt.
Nachdem über die selbe Leitung geschrieben wie gelesen wird sind Timingprobleme die eine zu kurze Verzögerung zwischen schreiben und lesen (oder lesen und schreiben) zur Ursache haben kaum durch die Verdrahtung zu beheben, warum es trotzdem klappt hängt mehr von den Toleranzen der Chips ab, gemäß Datenblatt durfte es überhaut nicht funktionieren. Aber langer Rede kurzer Sinn wichtiger ist, dass es in der Praxis doch in vieln Fällen funktioniert!

Halting Processor ... <Processor did NOT enter Debug Mode!> ... Done

Wenn die CPU nicht in Debug Mode geschaltet werden kann,
dann kann natürlich auch kein Flach gelesen werden.
Das Flash wird nur über den Umweg einer Debug Programmierung der CPU gelesen oder geschrieben,
da die andern Varianten nicht vorgesehen sind.

Zu klären währe ob du ganz sicher bist, dass du bereits einmal die korrekten Flashdaten bekommen hast.
Die Anzeige kann teilweise auch falsch oder scheinbar richtig sein wenn zufällig ein Bitsteam
ausgegeben wird der sich mit einen abgespeicherten deckt.
Die Texte in der Anzeige kommen immer aus dem Programm.
 
Zuletzt bearbeitet:
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.