Založen: Mar 21, 2006 Příspěvky: 33756 Bydliště: Bratislava
Zaslal: po březen 11 2013, 22:49 Předmět:
Tak dakujem za pomoc, uz asi ostavaju len nejake pokusy so subormi. Skusim firmware pre ine tlaciarne s rovnakym CPU a pripadne ich menit, co na to bootloader povie.
Založen: Mar 21, 2006 Příspěvky: 33756 Bydliště: Bratislava
Zaslal: út březen 12 2013, 0:05 Předmět:
Tak to je fakt chutovka... Este skusim nejake experimenty, napr. odpojit niektory adresny pin SDRAM, ci potom nahodou boot loader neusudi, ze je obsah flash poskodeny. Inak SDRAM som pre istotu skusal aj vymenit, ale ziadna zmena, tak som vratil naspat povodnu.
Tak jsem se v tom ještě chvíli vrtala. Zjistila jsem, že ten vlastní kernel (začíná na 0x1C00C a je dlouhý 0x41FEC) je šifrovaný pomocí nějakých dvou tabulek (proto v něm není čitelný žádný text). Flashovací program nejdříve testuje checksum toho nového image načteného z PC, ten zjevně sedí. Pak dešifruje do paměti jak ten nový, tak ten starý kernel a získá z nich jakási čísla, to jsou ta dvě čísla v [[[ ]]]. První je ze starého kernelu a druhé z nového. V algoritmu získání těch dvou čísel jsem se bohužel ztratila. Jen vím, že pokud vyjde to číslo záporné, hodí to chybu. A číslo patřící ke starému kernelu je záporné a tak to hodí "Image is invalid".
Založen: Mar 21, 2006 Příspěvky: 33756 Bydliště: Bratislava
Zaslal: út březen 12 2013, 22:21 Předmět:
Porovnal som subory ML2520_V1.01.00.84.fls a ML2520_V1.01.00.86.fls, ktore maju rozdielne ID.
Prvy rozdiel je az na offsete 0x1c053, hned za zaciatkom nejakeho bloku (ked odrezem zo suboru hlavicku 45+12B, zacina tento blok presne na 0x1c000). Tento blok je cely zmeneny a je zjavne komprimovany (dalsia kompresia ho nezmensi). Ale nepasuje to na inflate, to by malo zacinat bajtom 0x78
Okrem tohoto bloku je zmena uz len na uplnom konci suboru, kde je priadny datum a posledne dva bajty, ktore su pravdepodobne checksum.
No to je ten vlastní kernel se svojí hlavičkou, první 4B je $NKF, další 4B je jakási adresa, se kterou se pak operuje v tom divném algoritmu a třetí 4B jsou délka kernelu.
Jinak ten datum na konci je také důležitý, pokud je starší než datum uvedený ve flashovacím programu (tady 2008-04-02), tak vypíše chybu Can't Update Old Rom.
Edit: Co se do toho zkusit nabourat přes ten JTAG například pomocí OpenOCD? Tím by šla nejspíš přečíst a přepsat i ta flashka. ARM940T by měl umět.
Založen: Mar 21, 2006 Příspěvky: 33756 Bydliště: Bratislava
Zaslal: čt březen 14 2013, 19:47 Předmět:
Urobil som jednoduchy kabel len s odpormi - vid priloha (FET som vynechal pretoze CPU nema signal SRST). Zapojil som to podla jedineho dostupneho zapojenia pinov pre Jupiter4E (vid priloha 2).
Prvy pokus neuspesny:
kód:
$ jtag
UrJTAG 0.10 #1502
Copyright (C) 2002, 2003 ETC s.r.o.
Copyright (C) 2007, 2008, 2009 Kolja Waschk and the respective authors
UrJTAG 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 UrJTAG.
WARNING: UrJTAG may damage your hardware!
Type "quit" to exit, "help" for help.
PORTADDR parallel port address (e.g. 0x378)
PPDEV ppdev device (e.g. /dev/parport0)
TDO, ... parallel port bit number, prepend '#' for inversion
default is '7,4,3,2,1,#0'
jtag> cable wiggler ppdev /dev/parport0
Initializing ppdev port /dev/parport0
jtag> detect
Warning: TDO seems to be stuck at 0
jtag> detect
Warning: TDO seems to be stuck at 0
jtag> print
Run "detect" first.
jtag> quit
Zistil som, ze signal nTRST je uzemneny cez R1 (33R), tak som ho odstranil. Teraz to asi funguje, len treba pouzit iny program (?):
kód:
$ jtag
UrJTAG 0.10 #1502
Copyright (C) 2002, 2003 ETC s.r.o.
Copyright (C) 2007, 2008, 2009 Kolja Waschk and the respective authors
UrJTAG 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 UrJTAG.
WARNING: UrJTAG may damage your hardware!
Type "quit" to exit, "help" for help.
jtag> cable wiggler ppdev /dev/parport0
Initializing ppdev port /dev/parport0
jtag> detect
IR length: 4
Chain length: 1
Device Id: 0 (0x0000000000000000)
chain.c(149) Part 0 without active instruction
chain.c(200) Part 0 without active instruction
chain.c(149) Part 0 without active instruction
jtag> print
No. Manufacturer Part Stepping Instruction Register
------------------------------------------------------------------------------------------------------------------
0 (none) (none)
jtag> quit
Založen: Mar 21, 2006 Příspěvky: 33756 Bydliště: Bratislava
Zaslal: čt březen 14 2013, 21:33 Předmět:
Tak skutocne to zije. OpenOCD som skompiloval najnovsi. Prvy pokus:
kód:
# ./openocd -f ../tcl/interface/parport.cfg
Open On-Chip Debugger 0.6.1 (2013-03-14-20:43)
Licensed under GNU GPL v2
For bug reports, read
http://openocd.sourceforge.net/doc/doxygen/bugs.html
Warn : Adapter driver 'parport' did not declare which transports it allows; assuming legacy JTAG-only
Info : only one transport option; autoselect 'jtag'
parport port = 0x378
adapter speed: 1 kHz
Info : clock speed 1 kHz
Warn : There are no enabled taps. AUTO PROBING MIGHT NOT WORK!!
Warn : AUTO auto0.tap - use "jtag newtap auto0 tap -expected-id 0x10940f0f ..."
Warn : AUTO auto0.tap - use "... -irlen 4"
Warn : gdb services need one or more targets defined
Info : accepting 'telnet' connection from 4444
kód:
$ telnet localhost 4444
Trying ::1...
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Open On-Chip Debugger
> scan_chain
TapName Enabled IdCode Expected IrLen IrCap IrMask
-- ------------------- -------- ---------- ---------- ----- ----- ------
0 auto0.tap Y 0x10940f0f 0x10940f0f 4 0x01 0x03
Podla ID som nasiel na webe nejaky konfigurak, tak som ho upravil:
kód:
if { [info exists CHIPNAME] } {
set _CHIPNAME $CHIPNAME
} else {
set _CHIPNAME arm
}
if { [info exists ENDIAN] } {
set _ENDIAN $ENDIAN
} else {
set _ENDIAN little
}
if { [info exists CPUTAPID ] } {
set _CPUTAPID $CPUTAPID
} else {
# force an error till we get a good number
#set _CPUTAPID 0xffffffff
set _CPUTAPID 0x10940f0f
}
jtag newtap arm taptap -irlen 4 -ircapture 0x1 -irmask 0xf
target create arm arm9tdmi -endian big -variant arm940t -chain-position 0
reset_config trst_and_srst srst_pulls_trst
init
halt
poll off
#source scripts.cf
#dc
poll
#ic
armv4_5 reg
A uz to vyzera lepsie:
kód:
# ./openocd -f ../tcl/interface/parport.cfg -f test.cfg
Open On-Chip Debugger 0.6.1 (2013-03-14-20:43)
Licensed under GNU GPL v2
For bug reports, read
http://openocd.sourceforge.net/doc/doxygen/bugs.html
Warn : Adapter driver 'parport' did not declare which transports it allows; assuming legacy JTAG-only
Info : only one transport option; autoselect 'jtag'
parport port = 0x378
adapter speed: 1 kHz
Warn : Specify TAP 'arm.taptap' by name, not number 0
trst_and_srst srst_pulls_trst srst_gates_jtag trst_push_pull srst_open_drain
Info : clock speed 1 kHz
Info : JTAG tap: arm.taptap tap/device found: 0x10940f0f (mfg: 0x787, part: 0x0940, ver: 0x1)
Warn : JTAG tap: arm.taptap UNEXPECTED: 0x10940f0f (mfg: 0x787, part: 0x0940, ver: 0x1)
Error: Trying to use configured scan chain anyway...
Warn : Bypassing JTAG setup events due to errors
Info : Embedded ICE version 2
Info : arm: hardware has 2 breakpoint/watchpoint units
background polling: off
TAP: arm.taptap (enabled)
target state: halted
target halted in ARM state due to breakpoint, current mode: Undefined instruction
cpsr: 0x4000001b pc: 0xffffffe8
DEPRECATED! use 'arm reg' not 'armv4_5 reg'
System and User mode registers
r0: e8bd87f0 r1: e1a01004 r2: e3a00000 r3: ebfffc02
r4: e3590000 r5: 0a000001 r6: e2650000 r7: e8bd87f0
r8: e1a00005 r9: e8bd87f0 r10: e8bd87f0 r11: 00000000
r12: 00000000 sp_usr: bc733a57 lr_usr: f31be6b3 pc: ffffffe8
cpsr: 4000001b
Založen: Mar 21, 2006 Příspěvky: 33756 Bydliště: Bratislava
Zaslal: pá březen 15 2013, 8:16 Předmět:
Tak dump mam - pri porovnani s ML2520_V1.01.00.84.fls (bez hlavicky) je zmeneny len 1 byte na offsete 0x341bb. Vo flash je 0x2c a v subore 0x6c. Este ho skusim raz precitat, ci je to tam naozaj alebo ci to bola chyba pri prenose.
Časy uváděny v GMT + 1 hodina Jdi na stránku Předchozí1, 2, 3, 4, 5Další
Strana 2 z 5
Nemůžete odesílat nové téma do tohoto fóra. Nemůžete odpovídat na témata v tomto fóru. Nemůžete upravovat své příspěvky v tomto fóru. Nemůžete mazat své příspěvky v tomto fóru. Nemůžete hlasovat v tomto fóru. Nemůžete připojovat soubory k příspěvkům Můžete stahovat a prohlížet přiložené soubory
Informace na portálu Elektro bastlírny jsou prezentovány za účelem vzdělání čtenářů a rozšíření zájmu o elektroniku. Autoři článků na serveru neberou žádnou zodpovědnost za škody vzniklé těmito zapojeními. Rovněž neberou žádnou odpovědnost za případnou újmu na zdraví vzniklou úrazem elektrickým proudem. Autoři a správci těchto stránek nepřejímají záruku za správnost zveřejněných materiálů. Předkládané informace a zapojení jsou zveřejněny bez ohledu na případné patenty třetích osob. Nároky na odškodnění na základě změn, chyb nebo vynechání jsou zásadně vyloučeny. Všechny registrované nebo jiné obchodní známky zde použité jsou majetkem jejich vlastníků. Uvedením nejsou zpochybněna z toho vyplývající vlastnická práva. Použití konstrukcí v rozporu se zákonem je přísně zakázáno. Vzhledem k tomu, že původ předkládaných materiálů nelze žádným způsobem dohledat, nelze je použít pro komerční účely! Tento nekomerční server nemá z uvedených zapojení či konstrukcí žádný zisk. Nezodpovídáme za pravost předkládaných materiálů třetími osobami a jejich původ. V případě, že zjistíte porušení autorského práva či jiné nesrovnalosti, kontaktujte administrátory na diskuzním fóru EB.