Flash IPAQu bez použití kolébky (kabelu) přes JTAG. Vhodné pro flash "absolutních mrtvol"!

      Updatovali jste OS ve vašem IPAQu? Nepovedlo se a Váš 
kapesní asistent nenaběhne ani do bootloaderu? 
Pokus o nápravu klasickým flashem nefunguje? Tak jste 
na správném místě. Ukážeme si, jak upravit a naflashovat 
Váš stroj bez potřeby sériového či USB kabelu.
  Nejdříve si povíme něco o komunikačním standardu 
IEEE 1149.1 (JTAG).
Standard IEEE 1149.1, známý jako JTAG, je jednoduchý 
systém pro komunikaci se zařízením a jeho vzdálené 
testování. Často je součástí vývojových desek a obvodů 
FPGA. Tato testovací architektura byla vyvinuta
Joint Test Action Group a později byla převzata organizací
IEEE jako IEEE Standard Test Access Port and Boundary 
Scan a označena jako IEEE 1149.1 též známá jako JTAG.
Tento standard představuje efektivní metodu testování užívající metody skenování rozhranní - boundary - scan 
technique. Nejčastěji se využívá v oblasti FPGA (Field Programmable Gate Array), kde umožňuje dálkové 
nahrávání dat, testování a řízení zařízení. JTAG komunikace je dnes mimo obvodů FPGA i součástí vývojových 
desek a kitů u kterých je nutné zajistit pohodlné a podrobné testování. JTAG například využívají i vývojové desky 
firmy Texas Instruments pro signálové procesory (DSP) pro komunikaci s PC pro návrh a testování algoritmů 
číslicového zpracování signálů.
   Teď již zhruba víme, co JTAG znamená, a ukážeme si jak "zpřístupnit" tohle rozhraní v našem IPAQu.
Začneme připravením potřebných nástrojů, drátků a rozebráním stroje. Vyjmeme základní desku a najdeme si
tři body (test points), které se nachází dole u CPU krytého kovovým štítkem (vedle Flash čipů E28F640J3A120).
Na tyto body připájíme vývody TP3 (TDO), TP2 (TDI) a TP5 (TRST), a dole třeba na tom větším štítku připájíme zem.
Desku otočíme a najdeme obdelníkový 3.686Mhz krystal, u něhož připájíme vývody na body TP1 (TCK) a TP4 (TMS).
Najdeme si kovový válcový krystal umístěný u mikrokontroléru Atmel AT90LS8535 a připájíme napájení VCC.
Pokocháme se výtvorem (hlavně si poznačíme který vývod je který), a můžem zkompletovat PDA.

Nyní si z 5 kusů 100Ohm odporů, protikusu k LPT (DB25M - samec) nějakého konektoru (protikus bude na PDA)
 vytvoříme LPT - JTAG redukci dle následujícího schématu.

Jako software pro flash jsem použil jtag - 0.2.1 který jsem ovšem musel nejdříve zkompilovat a nahradit v jeho  
zdrojích soubory flash.c a sa1110.c
  Už zbývá jen ukázka flashe úplně vymazaného IPAQu, a přání mnoha úspěchů při oživování.
jtag
jtag 0.2.1
Copyright (C) 2002, 2003 ETC s.r.o.
jtag is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
There is absolutely no warranty for jtag.

Warning: jtag may damage your hardware! Type "quit" for exit!

Type "help" for help.

jtag> cable parallel 0x378 DLC5
Initializing Xilinx DLC5 JTAG Parallel Cable III on parallel port at 0x378
jtag> detect
Device Id: 10001001001001100001000000010011
Manufacturer: Intel
Part: SA1110
Stepping: B4
Filename: /usr/local/share/jtag/intel/sa1110/sa1110
jtag> detectflash
Note: Supported configuration is 2 x 16 bit only
ROM_SEL: 32 bits

2 x 16 bit CFI devices detected (QRY ok)!

CFI Query Identification String:
Primary Vendor Command Set and Control Interface ID Code: 0x0001 (Intel/Sharp Extended Command Set)
Address of Primary Algorithm extended Query table: P = 0x????
Alternate Vendor Command Set and Control Interface ID Code: 0x0000 (null)
Address of Alternate Algorithm extended Query table: A = 0x????
CFI Query System Interface Information:
Vcc Logic Supply Minimum Write/Erase voltage: 2700 mV
Vcc Logic Supply Maximum Write/Erase voltage: 3600 mV
Vpp [Programming] Logic Supply Minimum Write/Erase voltage: 0 mV
Vpp [Programming] Logic Supply Maximum Write/Erase voltage: 0 mV
Typical timeout per single byte/word write: 128 us
Typical timeout for minimum-size buffer write: 128 us
Typical timeout per individual block erase: 1024 ms
Typical timeout for full chip erase: 0 ms
Maximum timeout for byte/word write: 2048 us
Maximum timeout for buffer write: 2048 us
Maximum timeout per individual block erase: 16384 ms
Maximum timeout for chip erase: 0 ms
Device Geometry Definition:
Device Size: 8388608 B
Flash Device Interface description: 0x0002 (x8/x16)
Maximum number of bytes in multi-byte write: 32
Number of Erase Block Regions within device: 1
Erase Block Region Information:
Region 0:
Erase Block Size: 131072
Number of Erase Blocks: 64
Manufacturer: Intel
Chip: 28F640J3A
jtag> print
No. Manufacturer Part Stepping Instruction Register
----------------------------------------------------------------------------------------
0 Intel SA1110 B4 EXTEST BSR
jtag> flashmem 0 /home/bootldr-2.18.54.bin
0x00000000
Note: Supported configuration is 2 x 16 bit only
ROM_SEL: 32 bits

2 x 16 bit CFI devices detected (QRY ok)!

program:
block 0 unlocked
erasing block 0: 0
addr: 0x00033500
verify:
addr: 0x00033500
Done.
jtag> quit
$

 autor: albedo