ferenczy @ home

osobní web

 
Vytvořeno: 2. 3. 2005, poslední změna: 5. 8. 2009, 00.35

Xclef MT-500 reverzní inženýring

Obsah

  1. Prolog
  2. Základní data
  3. Fotografie
  4. Demontáž přístroje
  5. CPU
  6. Firmware
  7. Interní paměť
  8. Stav projektu
  9. Odkazy
  10. Historie dokumentu
Xclef MT-500
 

1. Prolog

Tento dokument vznikl z důvodu nedostatečné dokumentace, ochoty ji poskytnout a dále vyvíjet originální firmware přístroje Xclef MT-500, korejskou společností Multichanell Labs (jak je to ostatně v dnešním komerčním světě obvyklé). Stejný přístup mají i další společností, jejichž výrobky se podílejí na funkčnosti přístroje - např. výrobce CPU přístroje - taktéž korejští Telechips. Tento dokument si proto klade za cíl shromáždit co nejvíce dostupných informací ohledně přehrávače a popř. vytvořit podmínky pro portaci projektu RockBox na tento přístroj. Popisuje čistě jen technické a softwarové vybavení přístroje. Subjektivní dojmy a postřehy z používání budou později dostupné na vlastní stránce.

Rád bych, kdyby se také další zainteresovaní lidé do tohoto projektu zapojili. Zastihnout mne můžete na ICQ# 85997864, IRC kanálech #xclef_mt-500, #gmemu nebo popřípadě #rockbox na serveru FreeNode (irc.freenode.net), případně zaslat email.

Dawid Ferenczy
e-mail: ferenczy (na serveru) volny.cz

2. Základní data

Přístroj je řízen čipem TCC730Y od korejské společnosti Telechips (viz CPU). Firmware je uložen v 1 MB flash paměti 39VF800A od STT (viz firmware). Vnitřní datová paměť přístroje je tvořena 128 MB flash pamětí K9F1G08U0M-YCB0 od Samsungu.

3. Fotografie

hlavní DPS (128 MB verze, zepředu)
I. uvnitř Xclef MT-500 - hlavní DPS (128 MB verze, zepředu, plná velikost fotky [148 kB])

hlavní DPS (256 MB verze, zepředu)
II. uvnitř Xclef MT-500 - hlavní DPS (256 MB verze, zepředu, plná velikost fotky [59 kB])

[ 1 ] - Telechips TCC730 - CPU přístroje
[ 2 ] - STT 39VF800A - 8 Mb (1 MB) flash paměť pro firmware
[ 3a ] - Samsung K9F1G08U0M-YCB0 - 1 Gb (128 MB) flash paměť reprezentující vnitřní datovou paměť (128 MB verze)
[ 3b ] - Samsung K9K2G08U0M-YCB0 - 2 Gb (256 MB) flash paměť reprezentující vnitřní datovou paměť (256 MB verze)
[ 4 ] - displej
[ 5 ] - mikrofon
[ 6 ] - USB konektor
[ 7 ] - ovladač mód/hlasitost
[ 8 ] - ovladač přehrávání

hlavní DPS (zezadu)
III. hlavní DPS - pohled zezadu (plná velikost fotky [180 kB])

druhá DPS (zepředu)
IV. druhá DPS - pohled zepředu (plná velikost fotky [130 kB])

druhá DPS (zezadu)
IV. druhá DPS - pohled zezadu (plná velikost fotky [128 kB])

4. Demontáž přístroje

Demontáž přístroje je velmi jednoduchá - stačí povolit dva šroubky a sejmout plastový kryt. První šroubek se nachází v rohu u konektoru "line-in", druhý vzadu pod battery packem, vedle konektoru battery packu. Poslední šroubek (na stejné straně jako ovladač hlasitosti) není třeba povolovat.

5. CPU

Jádro přístroje tvoří mikrokontroler TCC730Y. Informace o tomto produktu ze strany výrobce - korejských Telechips - jsou nulové (pokud náhodou nemáte zájem o koupi X desítek tisíc kusů ;) Naštěstí korejští soudruzi nevymysleli nový MCU, ale až na pár drobností "obšlehli" S3CC410 od Samsungu (datasheet [PDF, 1.33 MB], srovnání obou MCU). MCU tedy obsahuje 16bitové CalmRISCové jádro. Kromě datasheetu sice není k dispozici vice informací a to ani ze stranmy Samsungu, ale platforma CalmRISC je již dostatečně rozšířená a známá.

Nicméně nyní je dostupný ke stažení i datasheet TCC730 (velké díky patří Nikitovi Afanasyevovi)!

5.1 Základní údaje:

Zdroj: produktová stránka Telechips TCC730 nebo tato produktová stránka.

Některé funkce nejsou realizovány hardwarově, ale jako např. MP3 encoder/decoder jako knihovna funkcí optimalizovaných pro 24bitové DSP.

5.2 CalmRISC16

CalmRISC16 je harvardská architektura s odděleným 22bitovým adresním prostorem pro program a data. Instrukční soubor neobsahuje žádné instrukce pro zápis do programové paměti.

Je možné si stáhnout vývojové prostředí pro platformu CalmRISC16 - CalmSHINE16 od společnosti AIJI System.

Memory mapped I/O
originál / mirror
dekódování OP
originál / mirror

6. Firmware

Firmware přístroje je uložen v 8 Mbitové (1 MB) flash paměti 39VF800A od společnosti STT (produktová stránka). Podobné flash čipy bývají použité k uložení BIOSu PC (např. STT 29EE020).

6.1 "Reverze" firmware

Existuje několik oficiálních verzí firmware vydaných společností MultiChannel. Zde jsou některé:

Firmware je uložen v hexadecimálním formátu. Pro konverzi do binárního formátu je možné použít např. nástroj hex2bin (mirror: hex2bin-1.02 binární pro win [19 kB], hex2bin-1.02 dokumentace [36 kB]). Binární kód může být dále disasemblován. Výstup hex2bin je v RAW formátu, tedy bez hlaviček a podobných věcí. Lidé z projektu gmEmu vyvýjejí vlastní TCC730 disasembler (mirror: TCC730 disasm v0.2 [18 kB]). Přeložil jsem ho s pomocí GCC provozovaném v prostředí Cygwin (prostředí pro Win32 umožňující spouštění Linuxových aplikací).

S pomocí programu Flash Graphic (program pro zobrazení a extrakci grafiky z firmware pro mobilní telefony, mirror: Flash Graphic 1.01 [235 kB]) je možné zobrazit grafiku uloženou v binárním souboru s firmware. Grafika začíná někde kolem adresy (ofsetu) cca 316 670 (verze fw 2.0.17). Výstup programu může vypadat nějak takto:

Flash Graphic screenshot  Flash Graphic screenshot  Flash Graphic screenshot  Flash Graphic screenshot

6.2 Příprava vývojového prostředí

Pro sestavení vývojového prostředí pro platformu CalmRISC16 budete potřebovat:

6.3 Disassembling the MT-500's firmware

Now you have the tools, you need to create a firmware file that the disasm tool will accept. It's good idea, to work in a new directory (I chose "reverese" in my homedir). Also, you need to make sure that you have got path to the Gmemu tools in your PATH variable (e.g. "~/gmemu/bin/" directory, gmemu is directory, which you used as a prefix when building the Gmemu tools). Else you have to use full path to the "pack" utility and others in that directory.

~> mkdir reverse
~> cd reverse
~/reverse> calmrisc16-unknown-elf-objcopy -I ihex -O elf32-calmrisc16 firmware.hex firmware.elf
~/reverse> calmrisc16-unknown-elf-objcopy -I elf32-calmrisc16 -O binary firmware.elf firmware.bin
~/reverse> pack firmware.bin firmware.aaz 2000 MUNKEE MASTER
~/reverse> disasm firmware.aaz
	

The value of 2000 is the lowest address in the firmware and thus, is where the code starts. The MUNKEE and MASTER values are just dummy parameters which are irrelevant for now.

7. Interní paměť

Přístroj obsahuje flash paměť typu NAND vyráběnou společností Samsung, která reprezentuje vnitřní datovou paměť. Vyráběly se celkem 3 typy - s 64 MB, 128 MB a 256 MB. Dnes se vyrábí již jen 128 MB verze (proč, mi není známo). V přehrávači byly použity čipy ve 48pinovém TSOP I provedení (označované YCB0).

7.1 128 MB verze

Obsahuje paměť K9F1G08U0M (datasheet [714 kB]). Jde o 1 Gbit (128 MB) flash paměť organizovanou jako 128 Mb × 8. Více informací na produktové stránce.

7.2 256 MB verze

Obsahuje paměť K9K2G08U0M (datasheet [735 kB]). Jde o 2 Gbit (256 MB) flash paměť organizovanou jako 256 Mb × 8. Více informací na produktové stránce.

8. Stav projektu

07. 03. 2005
Začal jsem studovat disassemblovaný firmware.
14. 03. 2005
Pokoušel jsem se zachytit USB komunikaci za pomoci SnoopyPro a USBsnoop. V módu "mass storage" vše fungovalo, ale v "upgrade" módu mi spadly Windows 2000 pokaždé, když jsem připojil přehrávač do USB s nainstalovaným snifferem. Mohl by te někdo vyzkoušet???

9. Odkazy

[ 1 ] Projekt RockBox - open source projekt vývoje firmware pro diskové přehrávače multimédií Archos (existují porty např. i pro přehrávače Iriver a Ipod)
[ 2 ] wiki verze tohoto webu - web tohoto projektu v rámci wikipedie RockBoxu
[ 3 ] gmEmu - open source Archos Gmini firmware
[ 4 ] MP3 přehrávač S1 - zařízení se stejným CPU jako obsahuje přehrávač Xclef MT-500 (Sigmatel STMP3505, opět jde o kopii S3CC410 od Samsungu)
[ 5 ] S1 MP3 fórum - fórum předchozího projektu, doporučuji!
[ 6 ] Projekt OpenJukebox - projekt realizace alternativního a opensource firmware pro HDD přehrávače Xclef MP3 Jukebox
[ 7 ] Advanced MP3 Players Forum -fórum pro přehrávače digitálního audia Xclef,Archos, Creative, Iriver, Cowon, Apple,Sony a další
[ 8 ] Xclef MT-500 @ codebudnny.org - užitečné informace na webu jednoho vlastníka tohoto přehrávače
[ 9 ] Webové fórum společnosti Multichannel's - fórum výrobce přehrávače Xclef MT-500
[ 10 ] Produktová stránka TCC730 - produktová stránka čipu TCC730 na webu Telechips.com
[ 11 ] MSI Mega Player 536 - možná budoucí reverse engineering a port Rockboxu :) (MCU je PP5020E - ARM7 kompatibilní, obsahují např. některé iPody)

10. Historie dokumentu

02. 03. 2005
verze 0.1 - úvodní verze návrhu dokumentu
11. 04. 2005
verze 0.1.1 - drobné úpravy týkajícíse pouze vzhledu a HTML kódu
18. 04. 2005
verze 0.2 - přidána sekce "4. Demontáž přístroje" a informace a obrázek 256 MB verze
19. 04. 2005
verze 0.3 - přidány sekce "7. Interní paměť" a "8. Stav projektu", doplněny další informace
10. 05. 2005
verze 0.3.1 - přidány fotografie druhé DPS a odkaz na projekt zabývající se reversingem MP3 přehrávače S1
24. 05. 2005
verze 0.3.2 - přidán datasheet mikrokontroleru TCC730
22. 04. 2006
verze 0.3.3 - drobné úpravy, opravy a změny a přidání některých odkazů
15. 06. 2006
verze 0.3.4 - přidán odkaz
14. 08. 2006
verze 0.3.5 - "kosmetické" úpravy

Přidat komentář

  • Povinné položky jsou označené *.
Pokud máte problém s přečtením kódu, klikněte na obrázek pro vygenerování nového kódu.