Contenu du firmware

1. Description

Les données contenues dans la mémoire Flash sont réparties en plusieurs sections. Les adresses sont données à titre indicatif, elles peuvent varier d'un firmware à un autre, celles-ci sont celles extraites du firmware du Technika T1000-D v02.06.

Pour disposer d'une liste d'adresses adaptées au firmware dont on dispose, il suffit d'utiliser le programme MttInfo.exe disponible en téléchargement. Afin de pouvoir se repérer dans les adresses fournies par le programme, leur nom est indiqué entre accolades chaque fois que possible.

1. 0x00000 - 0x3FB8F 0 - {ArmStart - 1}
Code du microcontrôleur 8032. Le 8082 adressant ses données sur 16 bits, son espace d'adressage est limité à 64 Ko. Afin de dépasser cette limite, le code est segmenté en blocs de 64 Ko. Les platines basées sur le chip MT1389 contiennent 4 segments. Le début de chaque segment est identique (de 0 à 0x1FF et de 0x228 à 0x13FF), c'est certainement à cet endroit que sont placées les tables de branchement et la mécanique de changement de segment. Le dernier segment n'est pas occupé entièrement par du code 8032, il contient également le début du code ARM7.

1.1 0x200 - 0x20E
Emplacement du code exécutable des autres processeurs. Chaque adresse est codée sur 3 octets.
0x200 - 0x202 Début du code ARM (adresse de la section 2)
0x203 - 0x205 Début de la zone de données (adresse de la section 5)
0x206 - 0x208 Début du code ARM (adresse de la section 2) idem 0x200 - 0x202
0x209 - 0x20B Début du code ARM décompressé en RAM
0x20C - 0x20E Début du code DSP

1.2 0x2F0 - 0xF2F
Table de branchement. Permet la commutation du segment de mémoire de destination pour le saut vers une adresse déterminée.

1.3 0x239B2 - 0x239BD {VerAddr} - ...
Numéros de version firmware, subversion et RISC. Ces informations sont placées juste avant deux chaînes de caractères, l'une identifiant l'auteur du firmware, l'autre correspondant au nom réel du firmware. Cette seconde chaîne se termine par ".BIN" ce qui permet la localisation de ces données.

2. 0x3FB90 - 0x4332B {ArmStart} - {Block00 - 1}
Code de boot du processeur ARM7. Initialise le processeur, décompresse les deux blocs de données qui suivent, les installe en RAM et passe à l'exécution du code ARM décompressé en RAM.

2.1 0x3FB90 - 0x3FBCF {ArmStart} - {ArmStart + 63}
Table d'index de 16 mots de 4 octets chacun.
0x3FB90 - 0x3FBBB (Mots 1 à 11) : Usage indéterminé
0x3FBBC - 0x3FBBF (Mot 12) : Taille des données ARM (code de boot + blocs de données)
0x3FBC0 - 0x3FBC3 (Mot 13) : Nombre de blocs de données compressées (généralement 2)
0x3FBC4 - 0x3FBC7 (Mot 14) : Offset du premier bloc de données
0x3FBC8 - 0x3FBCB (Mot 15) : Offset du second bloc de données
0x3FBCC - 0x3FBCF (Mot 16) : Fin des données, contient zéro.
Comme les adresses sont fournies sous la forme d'offsets, il est nécessaire d'ajouter l'adresse de la table à l'offset pour trouver l'adresse réelle. De la même façon, si l'on ajoute l'adresse de la table à la taille des données ARM, on obtient le début du code du DSP.

3. 0x4332C - 0x607FF & 0x60800 - 0x91523 {Block00} - {Block01 -1 } & {Block01} - {DspCode - 1}
Deux blocs de données compressées suivant un algorithme LZHUF modifié (dérivé de LHA). Contient l'essentiel du code du processeur ARM7.

4. 0x91524 - 0xCA4B7 {DspCode} - {DataStart - 1}
Le code du DSP. Apparemment basé sur le jeu d'instructions OakDSPCore. On y trouve également des tables de données, dont quelque chose qui semble être une table de sinus de 4748 valeurs codées sur 32 bits dont 24 utiles.

5. 0xCA4B8 - 0xF99B7 {DataStart} - {Size - 5}
Zone de données

5.1 0xCA4B8 - 0x000CA4EF {UnkBegin} - {UnkEnd - 1}
56 octets contenant des données indéterminées. Cela pourrait être une table d'index vers les autres blocs de données, mais aucune relation cohérente n'a pu être établie pour corroborer cette hypothèse.

5.2 0xCA4F0 - 0xDA7CB {OsdBegin1} - {OsdEnd1 - 1}
Les polices de caractères au format bitmap MTKOSD. Le début est identifié par le texte "MTKOSD 0.1".

5.3 0xDA7CC - 0xEA76B {OsdBegin2} - {OsdEnd2 - 1}
Les textes des menus au format MTKOSD. Le début est identifié par le texte "MTKOSD 0.1". Ils sont disponibles en plusieurs langues: Anglais, Français, Espagnol, Allemand, Néerlandais, Italien... Selon les versions, seules certaines langues sont disponibles. Il est à noter que les textes anglais sont bien plus nombreux. Apparemment, chaque fois que le texte n'est pas disponible dans la langue sélectionnée, c'est le texte anglais qui est utilisé à la place.

5.4 0xEA76C - 0xF36E3 {MpegStart1} - {MpegEnd1 - 1}
Image de fond au format MPEG2 720x480, 720x540 ou 720x576. L'image commence par la séquence {0x00,0x00,0x01,0xb3} (MPEG2 sequence header code) et se termine par {0x00,0x00,0x01,0xb7} (MPEG2 sequence end code).

5.5 0xF36E8 - 0xF79BE {MpegStart2} - {MpegEnd2 - 1}
Image du sélecteur de fichiers au format MPEG2 720x480, 720x540 ou 720x576.

5.6 0xF79C3 - 0xF99B7 {Mp3Begin} - {Mp3End - 1}
Un fichier MP3 qui contient 3 sons, dont 2 ressemblent aux sons Windows ding.wav et chord.wav. Durée 2 secondes, échantillonnage 22 Khz mono.

fichier MP3 à écouter
Faites un clic droit, puis Enregistrer la cible sous...

6. 0xF99B8 - 0xFF99BB {size - 4} - {size - 1}
Et pour finir, un checksum CRC sur 32 bits.

 Votez pour ce site