Xclef MT-500 reverzní inženýring
Obsah
- Prolog
- Základní data
- Fotografie
- Demontáž přístroje
- CPU
- Firmware
- Interní paměť
- Stav projektu
- Odkazy
- Historie dokumentu

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

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

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í

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

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

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:
- 16bitové RISC jádro MCU
- 24bitové DSP pracující v celočíselném oboru
- 72 kB interní datová paměť
- Instrukční cache: 4 kB direct-mapped
- Datová cache : 4 kB 2-way set asociativní
- Vestavěné periférie
- Základní & watchdog časovač
- Tři 16bitové časovače
- jedna I2C & dvě I2S I/F
- plně duplexní UART kontroler
- USB verze 1.1
- SSFDC (SMC) I/F
- Inteligentní ovladač přerušení
- Šest A/D kanálů o rozlišení 8 bitů
- LCD kontroler pro STN/TFT LCD
- PLL oscilátor na frekvenci 32.768KHz
- maximální operační frekvence 80MHz
- provozní napětí 3 V
- 208pinové LQFP / FBGA pouzdro
- Nízká spotřeba
- MP3 encoder/decoder
- WMATM decoder
- Flash souborový sysém
- SSFDC pro SMC
- FAT12/FAT16 pro MMC a SD
- USB ovladač pro Windows 98/Me/2K/XP (mass storage)
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.
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:
6.2 Příprava vývojového prostředí
Pro sestavení vývojového prostředí pro platformu CalmRISC16 budete potřebovat:
- Linux, Cygwin na Windows nebo Mac OS X (já používám Cygwin na Windows 2000, ale proces sestavení na Linuxu by mel být totožný)
- stáhnout zdrojové kódy binutils (assembler, linker a další aplikace), GCC (GNU C Compiler), popř. i gemoss (Gmini tools, emulátor) z webu nebo lépe přímo z CVS (bez hesla):
binutils - download, mirrors, info
GCC - download, mirrors, infocvs -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/gemoss login cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/gemoss co binutils-2.15 cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/gemoss co gcc-3.4 cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/gemoss co -P gemoss
- připravit adresáře - např. rozbalit zdrojové kódy (nebo stáhnout z CVS) binutils do "~/build/binutils" a GCC do "~/build/gcc" (~ (znak tilda) značí uživatelův domovský adresář)
~> mkdir build ~> cd build ~/build> mkdir binutils ~/build> mkdir gcc
- choose installation location - directory for all files that will be crated. I chose "/home/ferenczy/calmrisc", so replace it with your own path everywhere, you'll find it. You can also use "configure" without the prefix option, then files will be stored in a common location.
- build binutils. Note that there's currently a bug with the binutils (tex)info install for CalmRISC16. It can be safely skipped with "make -k install" (-k option skips errors).
~> cd build/binutils ~/build/binutils> ../../binutils/configure --target=calmrisc16-unknown-elf --prefix=/home/ferenczy/calmrisc ~/build/binutils> make ~/build/binutils> make -k install
- build GCC. It requires to set up newly built binutils into the PATH variable:
~> export PATH=/home/ferenczy/calmrisc/bin:$PATH ~> cd build/gcc ~/build/gcc> ../../gcc/configure --target=calmrisc16-unknown-elf --prefix=/home/ferenczy/calmrisc --enable-languages=c ~/build/gcc> make ~/build/gcc> make install
- Now you should have fully functional CalmRISC16 development toolchain on your system. Now, it's good time to build the Gmini tools. Just choose your prefix or left blank.
~> cd gemoss ~/gemoss> automake -a ~/gemoss> ./configure --prefix=/home/ferenczy/gmemu GMINIMODEL=mt-500 LOADADDRESS=10000 ~/gemoss> make ~/gemoss> make install
The GMINIMODEL and LOADADDRESS are completely irrelevant at the moment. There is developed a GUI with wxWidgets for the Gmemu emulator. - If you would like to set PATH variable to the CalmRISC and Gmemu binaries permanently, you should add necessary lines ("export PATH=/new/path:$PATH" without quotes) to your shell configuration file (when using bash, it's ".bashrc" in your homedir).
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ář