                             ***********
                              JtagTools
                             ***********


--------------
-1- HISTORIQUE
--------------

V1.0.0.11 du 10/11/2003: Correction bugs mineurs : Start address FLASH et DUT configuration
V1.0.0.10 du 09/11/2003: Ajout de la configuration de l'inversion du bus de donnes pour TS6
V1.0.0.9 du 17/09/2003 : Correction bug effacement et criture FLASH de type INTEL ou MICRON 28FXXX 
			 Lecture, effacement et criture EEPROM fonctionnent !!!
			 (Merci  Christian pour sa patience et sa participation au dverminage).
V1.0.0.8 du 07/09/2003 : Correction du problme du driver Port Talk sous NT/2000/XP (Merci  Christian)
			 Ajout de l'utilitaire Installer pour testerl'installation du driver PortTalk
V1.0.0.7 du 23/04/2003 : Support Win NT/2000/XP, Onglets, gestion EEPROM I2C, fichier de configuration	
V1.0.0.6 du 11/02/2003 : Ajout FLASH ST M29F102B,M29F200B-T,M29F400B-T,M29F800B-T,M29F160B-T 
V1.0.0.5 du 2003       : Amelioration chargement trap handler
V1.0.0.4 du 24/01/2003 : Ajout Prog FLASH 8-16-32 bits et Gestion Multi Cible BLUESKY et PACE TS2
V1.0.0.2 du 19/09/2002 : Ajout Processeur STi5519 et gestion Flash type INTEL/MICRON
V1.0.0.1 du 01/05/2002 : Version de base

------------------
-2- INTERFACE JTAG
------------------

Les signaux de l'interface JTAG sont pilots par le port parallle  l'aide des signaux suivants :

D0 :  TCK	Test Clock
D1 :  TMS	Test Mode Select
D2 :  TDI 	Test Data Input
D3 :  TRST#	Test Reset (actif  0)
D4 :  SRST#	System Reset (actif  0)
SEL : TDO	Test Data Output

Le schma de l'interface est trs simple 6 rsistances et la connectique (voir JTAG2PC.PDF).

Les processeurs de la famille ST20 utilisent l'interface JTAG pour le "Boundary Scan" qui permet de piloter ou de lire l'tat de toutes les broches utiles du processeur.

Le registre d'instruction de cette famille a une longueur de 5 bits.

L'instruction IDCODE (0x01) permet d'identifier le processeur sans ambigut.

L'instruction DCU (0x10) permet de relier la liaison de test JTAG sur le priphrique "Diagnostic Controller Unit" prsent en interne du processeur.

Ce priphrique permet d'accder aux priphriques internes et  la mmoire interne et externe (en accs 32 bits uniquement).

La communication s'effectue par la liaison de test JTAG via un protocole comportant 4 commandes de base :

POKE	00 envoi de donne du PC vers le DCU
PEEK	01 demande de donne du PC vers le DCU
PEEKED	10 envoi de donne du DCU vers le PC
TRIG	11 envoi des informations de TRIG du DCU vers le PC

L'entte d'un message POKE se compose d'un octet de commande, de quatre octets d'adresses et des octets de donnes.
L'entte d'un message PEEK se compose d'un octet de commande et de quatre octets d'adresses.
L'entte d'un message PEEKED se compose d'un octet de commande et des octets de donnes.

COMMANDE = (Nb mots 32 bits << 2) + (commande de base) 
	==> le nombre d'octets de donnes est forcment un multiple de 4
	==> la valeur 0 correspond au maximum soit 256 octets

ADRESSE = 4 octets de l'adresse 32 bits source ou destination (octet de poids faible en premier)

Le protocole binaire de dialogue se compose :
	pour l'emetteur, de 2 bits de START (11), de l'octet  transmettre et de 1 bit de ST0P (0) et d'un acquittement 
	pour le rcepteur, d'un acquittement (010) situ au centre de l'octet reu 

Exemple d'un message PEEK suivi de la rponse PEEKED :

TDI : 11 10NNNNNN 0 11 AAAAAAAA 0 11 AAAAAAAA 0 11 AAAAAAAA 0 11 AAAAAAAA 0 0000 00 00001000 0 00 00001000 0 ...
TDO : 00 00001000 0 00 00001000 0 00 00001000 0 00 00001000 0 00 00001000 0 0000 11 01NNNNNN 0 11 DDDDDDDD 0 ...
      ST PEEK     S ST ADLOLO   S ST ADLOHI   S ST ADHILO   S ST ADHIHI   S      ST PEEKED   S ST DONNEES

NNNNNN : 	nombre de mots de 32 bits demands
AAAAAAAA : 	adresse de source ou de destination
ST : 		START
S : 		STOP

Les octets sont transmis bit 0 en premier.


------------
-3- LOGICIEL
------------

Le logiciel JtagTools effectue les oprations suivantes :

	1- Lecture de l'IDCODE du processeur et dtermination complte si connu
	2- Accs mmoire et priphriques interne en 32 bits (READ et WRITE)
	3- Chargement d'un Trap Handler (code ST20) qui permet d'executer du code ST20 sur la cible
	4- Utilitaires FLASH et autres accessibles via le Trap Handler

Le trap Handler permet de faire les oprations suivantes :

	Lecture et criture de mots de  8, 16 et 32 bits
	Effacement de la FLASH
	Programmation de la FLASH par buffer de 2Koctets
	Excution des commandes ST20 MemStartVal, ProcID et Reboot.
	
La gestion de la FLASH et des utilitaires ne peut s'effectuer que si le Trap Handler est charg.


------------------------
-3- COMPOSANTS SUPPORTES
------------------------

--------------------------
***** STi PROCESSORS *****
--------------------------
IDCODE		REFERENCE
--------------------------
0x05193041	"ST20-TP2"
0x05196041	"ST20-GP6"
0x05198041	"ST20-TP4"
0x0D4C9041	"STi 5505"
0x0D4CB041	"STi 5500"
0x0D402041	"STi 5508"
0x0D4CD041	"STi 5510"
0x0D415041	"STi 5519"
--------------------------

--------------------------
** FLASH MANUFACTURERS  **
--------------------------
CODE	REFERENCE
--------------------------
0x01	"AMD"
0x02	"INTEL"
0x04	"FUJITSU"
0x20	"STM"
0x89	"MICRON"
0xAD	"HYNIX/BRIGHT"
--------------------------

----------------------------------------------------------------------------
****************************** FLASH DEVICES *******************************
----------------------------------------------------------------------------
CODE	REFERENCE	ACCES MODE	BYTES SIZE	ALGO	BOOT ON
----------------------------------------------------------------------------
0x7D	"29F002B"	BYTEMODE	0x00040000	INTEL	BOTTOM
0x7C	"29F002T"	BYTEMODE	0x00040000	INTEL	TOP
0xA4	"29F040"	BYTEMODE	0x00080000	AMD
0x79	"28F004B"	BYTEMODE	0x00080000	INTEL	BOTTOM
0x78	"28F004T"	BYTEMODE	0x00080000	INTEL	TOP
0x99	"28F008B"	BYTEMODE	0x00100000	INTEL	BOTTOM
0x98	"28F008T"	BYTEMODE	0x00100000	INTEL	TOP
0x22DF	"29F100B"	WORDMODE	0x00020000	AMD	BOTTOM
0x22D9	"29F100T"	WORDMODE	0x00020000	AMD	TOP
0x0097	"29F102B"	WORDMODE	0x00020000	AMD	BOTTOM
0x2257	"29F200B"	WORDMODE	0x00040000	AMD	BOTTOM
0x2251	"29F200T"	WORDMODE	0x00040000	AMD	TOP
0x223B	"29LV200B"	WORDMODE	0x00040000	AMD	BOTTOM
0x22BF	"29LV200T"	WORDMODE	0x00040000	AMD	TOP
0x2275	"28F200B"	WORDMODE	0x00040000	INTEL	BOTTOM
0x2274	"28F200T"	WORDMODE	0x00040000	INTEL	TOP
0x00D4	"28F200B"	WORDMODE	0x00040000	INTEL	BOTTOM
0x00D3	"28F200T"	WORDMODE	0x00040000	INTEL	TOP
0x22AB	"29F400B"	WORDMODE	0x00080000	AMD	BOTTOM
0x2223	"29F400T"	WORDMODE	0x00080000	AMD	TOP
0x00D5	"29F400T"	WORDMODE	0x00100000	AMD	TOP
0x00D6	"29F400B"	WORDMODE	0x00100000	AMD	TOP
0x22BA	"29LV400B"	WORDMODE	0x00080000	AMD	BOTTOM
0x22B9	"29LV400T"	WORDMODE	0x00080000	AMD	TOP
0x4471	"28F400B"	WORDMODE	0x00080000	INTEL	BOTTOM
0x4470	"28F400T"	WORDMODE	0x00080000	INTEL	TOP
0x220F	"29DL400B"	WORDMODE	0x00080000	AMD	BOTTOM
0x220C	"29DL400T"	WORDMODE	0x00080000	AMD	TOP
0x2258	"29F800B"	WORDMODE	0x00100000	AMD	BOTTOM
0x22EC	"29F800T"	WORDMODE	0x00100000	AMD	TOP
0x22D6	"29F800T"	WORDMODE	0x00100000	AMD	TOP
0x0058	"29F800B"	WORDMODE	0x00100000	AMD	BOTTOM
0x00EC	"29F800T"	WORDMODE	0x00100000	AMD	TOP
0x225B	"29LV800B"	WORDMODE	0x00100000	AMD	BOTTOM
0x22DA	"29LV800T"	WORDMODE	0x00100000	AMD	TOP
0x889D	"28F800B"	WORDMODE	0x00100000	INTEL	BOTTOM
0x889C	"28F800T"	WORDMODE	0x00100000	INTEL	TOP
0x224A	"29DL800B"	WORDMODE	0x00100000	AMD	BOTTOM
0x22CB	"29DL800T"	WORDMODE	0x00100000	AMD	TOP
0x005B	"29W800B"	WORDMODE	0x00100000	AMD	BOTTOM
0x00D7	"29W800T"	WORDMODE	0x00100000	AMD	TOP
0x2249	"29DL/LV/W160B"	WORDMODE	0x00200000	AMD	BOTTOM
0x22C4	"29DL/LV/W160T"	WORDMODE	0x00200000	AMD	TOP
0x4493	"28F160B"	WORDMODE	0x00200000	INTEL	BOTTOM
0x4492	"28F160T"	WORDMODE	0x00200000	INTEL	TOP
0x224B	"28F160B"	WORDMODE	0x00200000	INTEL	BOTTOM
0x22CC	"28F160T"	WORDMODE	0x00200000	INTEL	TOP
0x2245	"29PL160B"	WORDMODE	0x00200000	AMD	BOTTOM
0x2227	"29PL160T"	WORDMODE	0x00200000	AMD	TOP
0x2203	"29BL162B"	WORDMODE	0x00200000	AMD	BOTTOM
0x222E	"29LV162B"	WORDMODE	0x00200000	AMD	BOTTOM
0x222D	"29LV162T"	WORDMODE	0x00200000	AMD	TOP
0x222B	"29LV163B"	WORDMODE	0x00200000	AMD	BOTTOM
0x2228	"29LV163T"	WORDMODE	0x00200000	AMD	TOP
0x2235	"29LV164B"	WORDMODE	0x00200000	AMD	BOTTOM
0x2233	"29LV164T"	WORDMODE	0x00200000	AMD	TOP
0x2256	"29LV362B"	WORDMODE	0x00400000	AMD	BOTTOM
0x2255	"29LV362T"	WORDMODE	0x00400000	AMD	TOP
0x2253	"29LV363B"	WORDMODE	0x00400000	AMD	BOTTOM
0x2250	"29LV363T"	WORDMODE	0x00400000	AMD	TOP
----------------------------------------------------------------------------

--------------------------
** EEPROM SUPPORTED     **
--------------------------
2 CYCLES and 3 CYCLES
--------------------------





