MSX Village forum

L'atelier Proto d'un lecteur de carte SD

z80 Membre non connecté

Villageois

Rang

Avatar

Inscrit le : 17/05/2013 à 22h52

Messages: 956

Le 30/08/2014 à 23h17

Reprise du message précédent

La problématique du mapper SCC c'est que l'adresse du registre pour les 4 pages, se situ dans la page elle même .
Exemple : pour sélectionner le Hank de la page 0 du mapper SCC située entre 4000h et 5FFFh , il faut écrire en 5800h. Du coup quand on flash une donnée en 5800h, on écrit à la fois dans la flash mais aussi dans le registre de sélection .
C'est pour cette raison que Tsujikawa à installé un mécanisme de verrouillage du signal /WR sur le SCC et sur l/WR sur la mémoire SRAM (idem sur la flash).
Pour pouvoir flasher ilavec l'outil du Coréen il faudrait avoir le source et savoir à quelle adresse il a fait sa commutation du signal /WR.


TurboR GT (1Mo), CANON V20! ( en kit, modif 2+ en cours) :top
Pas encore retrouvés: V9990, Grafx9000, SUNRISE IDE 2x CF, SUNRISE MOONSOUND, FM PAC, MUSIC MODULE, NMS8280, SD SNATCHER,... :\'(
   
Fabf Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++

Inscrit le : 24/08/2010 à 20h55

Messages: 4833

Le 30/08/2014 à 23h22
Ce qui revient à dire que le mapper SCC dans sa version composant n'est pas bon en écriture non ?

Là ou je me perd vraiment c'est pourquoi ça marche en soft reset et pas en hard reset ?
z80 Membre non connecté

Villageois

Rang

Avatar

Inscrit le : 17/05/2013 à 22h52

Messages: 956

Le 30/08/2014 à 23h25
Mon mapper a base de 670 fonctionne bien en cold start et en warm start.
Mais la protection du /WR du SCC pendant les phases de flashage ne semble pas fonctionner.


TurboR GT (1Mo), CANON V20! ( en kit, modif 2+ en cours) :top
Pas encore retrouvés: V9990, Grafx9000, SUNRISE IDE 2x CF, SUNRISE MOONSOUND, FM PAC, MUSIC MODULE, NMS8280, SD SNATCHER,... :\'(
   
metalgear2 Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++

Inscrit le : 27/11/2010 à 23h40

Messages: 2768

Le 31/08/2014 à 00h32
Fabf :
Il serait intéressant de faire le teste suivant :

Programmation avec un mapper konami puis lecture avec un SCC. :heink




C'est un essai que je n'ais jamais fait. :top



J'ai donc programmé :



NEMESIS2.ROM sur une 29F040 et MMCDISK2.ROM sur une autre 29F040 PLCC. Programmation faite avec mon proto sur MSX1 et le fichier de base :







Ensuite, j'ai essayé les deux ROM sur une "vrai" FLashROM SCC, sur un MSX2. Au moins, le faite de changer de MSX, j'aurais la certidute d'avoir un démarrage a froid. :p



Conclusion:



NEMESIS 2 se lance correctement.



MMCDISK2 se lance aussi correctement. Je met ensuite mon proto sur le même SLOT que ma FlashROM SCC. Il reconnait bien la SD.



Maintenant, on est sùr, il écrit bien et dans le bon ordre dans la FlashROM avec le MAPPER SCC. Est-ce que l'on est pas parti sur une fausse piste avec le WR et qu'il faut plutot regarder vers le RD. Car là, ce n'est plus un probléme d'écriture mais un probléme de lecture.







.... Edité par metalgear2 Le 31/08/2014 à 00h55



Mon site consacré au MSX : http://mymsx2.free.fr
Site web    
GDX Membre non connecté

Conseiller Municipal

Rang

Avatar

Inscrit le : 17/01/2011 à 08h52

Messages: 3004

Le 31/08/2014 à 07h04
z80 :
La problématique du mapper SCC c'est que l'adresse du registre pour les 4 pages, se situ dans la page elle même .

Exemple : pour sélectionner le Hank de la page 0 du mapper SCC située entre 4000h et 5FFFh , il faut écrire en 5800h. Du coup quand on flash une donnée en 5800h, on écrit à la fois dans la flash mais aussi dans le registre de sélection .


Il suffit que réécrire la valeur de la page juste après l'écriture de chaque donnée et le tour est joué. Ça ralentit un peu le flashage, c'est tout.
   
z80 Membre non connecté

Villageois

Rang

Avatar

Inscrit le : 17/05/2013 à 22h52

Messages: 956

Le 31/08/2014 à 08h32
GDX :
z80 :
La problématique du mapper SCC c'est que l'adresse du registre pour les 4 pages, se situ dans la page elle même .

Exemple : pour sélectionner le Hank de la page 0 du mapper SCC située entre 4000h et 5FFFh , il faut écrire en 5800h. Du coup quand on flash une donnée en 5800h, on écrit à la fois dans la flash mais aussi dans le registre de sélection .


Il suffit que réécrire la valeur de la page juste après l'écriture de chaque donnée et le tour est joué. Ça ralentit un peu le flashage, c'est tout.


Oui ça j'avais vu la solution de Jipe en désassemblant flashscc ou sccflash....

C'est selon moi un "work arround" (contournement du problème) la solution viable c'est de "couper" le /WR du SCC quand on veut écrire dans la flash.

C'est ce genre de mécanisme qui a été implémenter par TSUJIKAWA dans les SRAM SCC et autre Wave SCSI.

Le Coréen semble avoir fait la même chose mais avec des adresses différentes.

Il décodé deux adresses avec la porte NAND et les deux LS138. Le premier LS138 c'est pour envoyé le /WR sur la SCC ou la Flash.

La seconde adresse c'est pour la protection en écriture de la Flash et tout le séquenceur du bus SPI et le générateur du signal d'horloge du bus SPI.

Dans l'idéal et en absence de temps et d'un courroie pour le lecteur de disquette de mon Turbo-R. Si quelqu'un pouvait désassembler l'outil du coréen qui sert à flasher ses fichiers .ROM dans la flash, on serrait fixé sur le fonctionnement des mécanismes /WR et flash write protect.


TurboR GT (1Mo), CANON V20! ( en kit, modif 2+ en cours) :top
Pas encore retrouvés: V9990, Grafx9000, SUNRISE IDE 2x CF, SUNRISE MOONSOUND, FM PAC, MUSIC MODULE, NMS8280, SD SNATCHER,... :\'(
   
GDX Membre non connecté

Conseiller Municipal

Rang

Avatar

Inscrit le : 17/01/2011 à 08h52

Messages: 3004

Le 31/08/2014 à 15h04
z80 :
C'est ce genre de mécanisme qui a été implémenter par TSUJIKAWA dans les SRAM SCC et autre Wave SCSI.

C'est selon moi un "work arround" (contournement du problème) la solution viable c'est de "couper" le /WR du SCC quand on veut écrire dans la flash.


Ça serait viable que si le /WR du SCC se fait par logiciel.



Les FlashROM AMD passent en mode ROM à chaque écriture d'un octet donc ce n'est pas gênant de devoir réécrire la valeur de la page juste après. J'ai cru comprendre que ce n'était pas le cas avec certaines autres FlashROM par contre.
   
metalgear2 Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++

Inscrit le : 27/11/2010 à 23h40

Messages: 2768

Le 07/09/2014 à 08h26
Bonjour,

Derniers tests de la FlashROM.

Je sais que si je flash une 29F040 sur une "vrai" FLASHROM SCC et que je la met sur ma FLASHROM a base d'EPM7128, elle fonctionne correctememnt. L'écriture est faite dans le bon ordre et la lecture est donc faite dans le bon ordre. Je peux donc flasher et lire des roms jusqu'a 512K.
Pour l'instant, c'est la seule solution que j'ai trouvé pour la rom MMCDISK1.ROM.

Je sais aussi que si je flash une 29F040 sur ma FLASHROM avec des roms de 128K et 256K, elle fonctionne tous sans exception. Sans le son SCC bien sur. :D

La solution qu'il faut que je trouve maintenant, c'est d'écrire sur la FLASROM, une rom de plus de 256K. Là, en l'occurence, je parle d'une 512K.

Test que j'ai effectué :

Attention, a chaque fois, je parle d'un mapper a base EPM7128. Car je me suis aussi aperçu qu'une FLASHROM a base de 74LSxx n'a pas la même réaction qu'une FLASHROM a base d'EPM7128.. Pourquoi, je me le demande :hum

Le seul schéma qui fonctionne correctemement en LECTURE/ECRITURE jusqu'a 256K, en mapper SCC, est celui de Jipe, modifier par z80 au niveau d'un reset sur le 74670.

MAPPER SCC :


Dans tous les cas, je dois partir de ce schéma. A partir de là, j'ai rajouter ou modifier plusieurs chose.

Avec z80, j'ai rajouté la partie 74LSxx de la MEGA-SRAM-SCC de Tsujikawa. J'ai connecté la sortie Y3N du 74139 (inst14) à l'entré du 7432 (inst2) du mapper du dessus, à la place de "WR_MSX".
Résultat, "Flash writing error"

Partie 74LSxx de la MEGA-SRAM-SCC de Tsujikawa :


Puis, en parcourant le sujet de Jipe ici http://www.msxvillage.fr/forum/topic.php?id=1001&pt=7#m19712 , on peut lire "Le mode scc fonctionne si on charge la rom en mode konami et que l'on change les strap en mode scc ensuite". J'ai donc fait l'essai. Le seul mapper KONAMI qui fonctionne correctemement avec l'EPM, c'est celui que l'on trouve sur le site de Hans.

MAPPER KONAMI :


Donc, je charge dans l'EPM le mapper KONAMI et je programme la 29F040. Je charge ensuite le schéma du mapper SCC dans l'EPM. Le résultat est que le MSX bloque au démarrage.

J'ai fais aussi des essais de fichier VHDL de z80 et Fabf ( http://www.msxvillage.fr/forum/topic.php?id=1981#m45983 )

En lecture, il fonctionne correctemement. En écriture de la 29F040 "Flash writing error"

- Je flash l'EPM en mode SCC , la lecture est correct sur une "vrai" FLASHROM SCC
- Je flash sur une "vrai" FLASHROM SCC, la lecture est correct sur la FLSHROM
- Je flash l'EPM en mode SCC, la lecture en mode SCC_VHDL n'est pas bonne

Avec z80 et Fabf, on se demande mainteanant si c'est pas plutot un probléme de soft. Car si je resume ce test :
Je programme une 29F040 sur ma "vrai" FLASHROM SCC , avec le fichier MMCDISK1.ROM.
Ensuite, je prend cette 29F040 pour la mettre sur ma FLASHROM (Avec n'importe quel mapper dans l'EPM : Les mappers SCC en composant ou les mappers version VHDL) , elle démarre correctemement.
Ca veut donc dire que les mappers SCC qui sont dans l'EPM sont correct, puisqu'il lit correctemement et dans l'ordre.

Je pense qu'au flashage de la 29F040, ça bloque au niveau de la construction des banks et que la seule solution, serait de flasher avec un logiciel qui remet de l'ordre dans tous ça.

Qu'en pensez-vous ?



.... Edité par metalgear2 Le 07/09/2014 à 09h41



Mon site consacré au MSX : http://mymsx2.free.fr
Site web    
Jipe Membre non connecté

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 02/10/2009 à 19h41

Messages: 10326

Le 07/09/2014 à 09h05
le décodage de la partie copiée de la MEGA-SCC de Tsujikawa répond a l'adresse 3FFE

il faut comparer MGLOAD a un fichier SCCFLASH pour comprendre que ça ne fonctionne pas pareil


:noel
Site web    
Fabf Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++

Inscrit le : 24/08/2010 à 20h55

Messages: 4833

Le 07/09/2014 à 09h43
metalgear2 :


Je pense qu'au flashage de la 29F040, ça bloque au niveau de la construction des banks et que la seule solution, serait de flasher avec un logiciel qui remet de l'ordre dans tous ça.

....




Pas si facile que ça :moue



Si on prends FL.COM de GDX il flash bien dans une vrai flashrom mais pas dans ton proto.

Par contre si on prends cette flash (fraichement flasher dans une vraie flashrom) et qu'on la met sur ton proto ça marche en lecture. :fou



On pourrait en déduire un problème lié à une différence en lecture ou écriture au niveau hardware.



Si on regarde de plus près le seul mapper SCC que j'ai vu fonctionner (celui en VHDL de Kazuhiro TSUJIKAWA)



pRamAdrX <= SccBank0(5 downto 0) & pSltAdr(12 downto 0) when pSltAdr(14 downto 13) = "10" else

SccBank1(5 downto 0) & pSltAdr(12 downto 0) when pSltAdr(14 downto 13) = "11" else

SccBank2(5 downto 0) & pSltAdr(12 downto 0) when pSltAdr(14 downto 13) = "00" else

SccBank3(5 downto 0) & pSltAdr(12 downto 0);



On voit clairement (si si :lol ) que c'est A14 et A13 qui sélectionne la banck



Ensuite :

-- Mapped I/O port access on 5000-57FFh ... Bank resister write

if (pSltSltsl_n = '0' and pSltWr_n = '0' and pSltAdr(15 downto 11) = "01010" and

SccModeA(6) = '0' and SccModeA(4) = '0' and SccModeB(4) = '0') then

SccBank0 <= pSltDat;

end if;

-- Mapped I/O port access on 7000-77FFh ... Bank resister write

if (pSltSltsl_n = '0' and pSltWr_n = '0' and pSltAdr(15 downto 11) = "01110" and

SccModeA(6) = '0' and SccModeA(4) = '0' and SccModeB(4) = '0') then

SccBank1 <= pSltDat;

end if;

-- Mapped I/O port access on 9000-97FFh ... Bank resister write

if (pSltSltsl_n = '0' and pSltWr_n = '0' and pSltAdr(15 downto 11) = "10010" and

SccModeB(4) = '0') then

SccBank2 <= pSltDat;

end if;

-- Mapped I/O port access on B000-B7FFh ... Bank resister write

if (pSltSltsl_n = '0' and pSltWr_n = '0' and pSltAdr(15 downto 11) = "10110" and

SccModeA(6) = '0' and SccModeA(4) = '0' and SccModeB(4) = '0') then

SccBank3 <= pSltDat;

end if;



Là on voit que c'est A15, A14 et A13 qui sélectionne la page dans les banks

Il se peut même que A12 et A11 ai leur intérêt la dedans surtout lorsqu'on regarde le pinout d'un SCC.

http://bifi.msxnet.org/msxnet/tech/pinouts.txt



Voila juste quelques intuitions mais mon manque de connaissances me bloque pour en tirer des conclusions :(
metalgear2 Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++

Inscrit le : 27/11/2010 à 23h40

Messages: 2768

Le 07/09/2014 à 10h36
Fabf :
Si on prends FL.COM de GDX il flash bien dans une vrai flashrom mais pas dans ton proto.


Oui



Citation :
Par contre si on prends cette flash (fraichement flasher dans une vraie flashrom) et qu'on la met sur ton proto ça marche en lecture


En lecture oui, mais seulement avec ton MAPPER VHDL ou celui de z80.

A aucun momment avec le MAPPER composant.



Mon site consacré au MSX : http://mymsx2.free.fr
Site web    
Jipe Membre non connecté

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 02/10/2009 à 19h41

Messages: 10326

Le 07/09/2014 à 11h14
le mapper" composant" necessite un init des pages pour démarrer avec la flash

pour le decodage des adresses SCC :

5000 = A15 a 0 , A14 a 1 , A13 a 0 , a12 a 1 , a11 a 0

7000 = A15 a 0 , A14 a 1 , A13 a 1 , a12 a 1 , a11 a 0

9000 = A15 a 1 , A14 a 0 , A13 a 0 , a12 a 1 , a11 a 0

B000 = A15 a 1 , A14 a 0 , A13 a 1 , a12 a 1 , a11 a 0

il faut aussi compter qu'il y a une commutation du bank SCC


:noel
Site web    
Fabf Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++

Inscrit le : 24/08/2010 à 20h55

Messages: 4833

Le 07/09/2014 à 13h39
D'accord mais en concret il faudrait envoyer quoi aux 74LS670 ?

En VHDL ce doit être possible un init pendant le cycle de RESET.
Fabf Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++

Inscrit le : 24/08/2010 à 20h55

Messages: 4833

Le 07/09/2014 à 16h43
metalgear2 :
Je sais que si je flash une 29F040 sur une "vrai" FLASHROM SCC et que je la met sur ma FLASHROM a base d'EPM7128, elle fonctionne correctememnt. L'écriture est faite dans le bon ordre et la lecture est donc faite dans le bon ordre. Je peux donc flasher et lire des roms jusqu'a 512K.




Jipe :
le mapper" composant" necessite un init des pages pour démarrer avec la flash




C'est contradictoire :gne



Je rappelle que si on prends une vraie flashrom SCC et une flashROM avec EPM ou composants:

Le flash sur l'une et la lecture sur l'autre sont possible, dans les deux sens.

On pourrait en déduire quelles sont identiques pourtant... :@
Jipe Membre non connecté

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 02/10/2009 à 19h41

Messages: 10326

Le 07/09/2014 à 21h05
le mapper konami de zemina est le seul a démarrer le jeu a partir d'un MSX éteint

même le mapper ASCII de KAL ne démarre pas le jeu

pour mes loader de flash j'initialise les pages avant de fair un reset soft

si on charge les pages sous shem avec 5000 a 0 , 7000 a 1 , 9000, a 2 ,B000 a 3 le jeu démarre sous reset


:noel
Site web    
Fabf Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++

Inscrit le : 24/08/2010 à 20h55

Messages: 4833

Le 07/09/2014 à 21h11
Ok, tu aurais une idée du circuit à faire pour initialiser ces pages de façon électronique ?
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie