L'atelier Proto d'un lecteur de carte SD
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)
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
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 ?
Là ou je me perd vraiment c'est pourquoi ça marche en soft reset et pas en hard reset ?
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.
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)
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
Fabf :
Il serait intéressant de faire le teste suivant :
Programmation avec un mapper konami puis lecture avec un SCC.
Programmation avec un mapper konami puis lecture avec un SCC.
C'est un essai que je n'ais jamais fait.
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.
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
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 .
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.
GDX :
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 :
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 .
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)
Pas encore retrouvés: V9990, Grafx9000, SUNRISE IDE 2x CF, SUNRISE MOONSOUND, FM PAC, MUSIC MODULE, NMS8280, SD SNATCHER,...
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.
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
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.
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
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
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.
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
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
Fabf
Membre non connecté
Conseiller Municipal
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.
....
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
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.
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 ) 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
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.
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
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
Fabf
Membre non connecté
Conseiller Municipal
D'accord mais en concret il faudrait envoyer quoi aux 74LS670 ?
En VHDL ce doit être possible un init pendant le cycle de RESET.
En VHDL ce doit être possible un init pendant le cycle de RESET.
Fabf
Membre non connecté
Conseiller Municipal
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
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...
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
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
Fabf
Membre non connecté
Conseiller Municipal
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