1

Bonsoir,

J'aimerai prendre un peu de temps pour écrire un topic participatif sur une cartouche de test Wonderswan chew .
Ce topic présente publiquement quelques recherches que j'ai faites pour concevoir une cartouche sur cette console et tenter de lever la malédiction sur l'ancien projet trigic
Chacun est invité à réagir surtout si vous consattez de meilleurs choix possibles.

Avant toute chose une présentation du projet arme

1) Fonctionnalitées de la cartouche

-Pouvoir tester du code facilement sur la console sans programmateur externe
-Communication avec un PC par le port USB
-Éventuellement permettre un moyen de sauvegarde par EEPROM
-Doit pouvoir être soudable à la main avec une station à air chaud ou un four à refusion
-Entièrement Open Source
-Ne cannibalise aucun composant d'une cartouche officielle
-Prix de vente <= 30 € pour que ça reste attractif/utile

Ce projet n'a pas pour but de faire une cartouche flash compatible avec un maximum de jeux.
Pour cela il existe déjà la Flash Mata et il y aura la futur cartouche Wodermadeleine de Godzil.
Toutefois cette cartouche devrait être compatible avec quelques jeux officiels ( ceux dont la partie hardware est la plus basique.

C'est donc une réactualisation de l'ancien projet avec une partie hardware moderne.cheeky


2) Conception Hardware

L'encombrement relativement reduit d'une cartouche Wonderswan ne facilite pas la tâche.
Deplus pour rester dans un cout faible , il va falloir se contenter du minimum tongue

le composant principal et indispensable : le CPLD qui aura pour rôle :
-remplacer le composant Bandai des cartouches.
-avoir une fonction qui permet de faire une conversion bidirectionnelle entre les lignes de data de la console et un composant Série <> USB.
-Gestion du Bankswitch Loader / Homebrew
-*Gestion de l'EEPROM*

Une mémoire Flash qui contient le Loader + de le reste de l'espace dispo pour stocker le/les homebrews

Un composant qui fait la conversion série <> USB
Une transmission série peut être réalisé faiclement point de vue code , nécessite peu d' IO et de nombreux composant existe pour faire une transmission série <> USB y compris à faible cout ( j'y reviendrai après ).
Après mesure il est possible d'utiliser certains connecteurs micro USB dont l'encombrement reste dans la taille standart d'une cartouche.

Éventuellement si la place le permet une EEPROM pour sauvegarder des données.

Pour le basculement Loader/Jeu je pensai utiliser la pin de détection de l'USB.
Si le câble USB est brancher et qu'on démarre la console , on arrive sur le Loader , sinon on démarre le jeu.

3) Conception Software

Sauf erreur le principal problème est qu'il n’y a pas de compilateur de langage haut niveau qui permette de générer un code directement compatible avec le processeur et les spécificités de la Wonderswan.
Il faut donc écrire du code en ASM, et c'est clairement ce que je considère comme la partie la plus complexe du projet.

Je ne suis pas programmeur donc je ferai le strict nécessaire beret : pas de partition , système de gestion de fichier juste des interruptions qui iront commander le port Série.

Néanmoins pas mal de choses avait déjà été écrites à l'époque par Orion ou Zerosquare dans le précédent projet et j'aimerai dans la mesure du possible ( et avec leurs accords ) le ré utiliser au maximum
Je reviendrai plus sur la partie Software quand j'aurai quelque chose qui marche.

4) Choix des composants

CPLD : Le CPLD ne doit pas être trop encombrant , avoir assez d'éléments logique pour pouvoir charger le code de Godzil + mon propre code tout en restant à un prix raisonnable.
Après pas mal de recherche j'ai trouvé un Altera Max V qui présentent ces avantages :
5M160ZE64

Gros point positif il existe en format EQFP64 afin de conserver un faible encombrement.
Il ne coute que 3€ pièce , avec un nombre d' IO suffisant et assez d’éléments logique.
Point négatif : Il s'alimente en 1.8V ce qu'il fait qu'il faut rajouter un régulateur.

Mémoire Flash : Autant rester sur du classique : une flash en TSOP48, on trouve des versions 8Mo relativement abordable et pour le coup ça permettra d'avoir beaucoup place pour l'utilisateur avec le même encombrement.
C'est très standard donc beaucoup de ref peuvent convenir, j'ai perso l'habitude d'utiliser celles de Spansion ou de Microchip.
Idem pour l'éventuelle EEPROM : je reste sur du standart en SOIC8

Convertisseur Serial <> USB
J'ai noté deux références intéressantes :
FTDI FT232RL : Fiable , bon support et ne nécessite pas d'oscillateur externe.
par contre il est relativement cher ( plus cher que le CPLD )

CH340 est une alternative chinoises qu'on retrouve dans beaucoup d'Arduino
Il dispose de moins de fonctions , mais à un prix très largement inférieur. chinois
Les deux encombrement sont relativement proches ( SOP16 vs SSOP28) mais le CH240G nécessite lui un oscillateur externe.

Pour les composants passif ( Condo , Résistances ) j'aimerai resté en 0805 et ne pas descendre en dessous.

5) Schématique

A partir de ces réflexions j'ai commencé à mettre au point un schéma "brouillon".

Lien du schéma : tromb Fichier joint : Schématique.pdf

6) Encombrement

J'ai également vérifié l’encombrement sur un patron de PCB non routé.
Voici un aperçu

https://imgur.com/a/X9NV2i7

Avant d'aller plus loin , je voulais partagé publiquement mes réflexions ( des fois que ça puisse servir à d'autres tongue ) et avoir votre avis sur mes choix.

Merci d'avoir lu toilettes

2

Je doute que tu puisse faire rentrer tout ça dans ce CPLD. :/
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

3

147 LE pour la Wondermadeleine sans l'EEPROM ( sinon c'est 149)
8 LE pour mon code qui gère le parallèles <> Serial

ça fait 155/160 sauf erreur ça passe au chausse pied cool

4

Pas encore eu le temps de regarder en détails, mais quelques commentaires à chaud :

X-death (./1) :
-Pouvoir tester du code facilement sur la console sans programmateur externe
-Communication avec un PC par le port USB
-Éventuellement permettre un moyen de sauvegarde par EEPROM
-Doit pouvoir être soudable à la main avec une station à air chaud ou un four à refusion
-Entièrement Open Source
-Ne cannibalise aucun composant d'une cartouche officielle
-Prix de vente <= 30 € pour que ça reste attractif/utile
top

X-death (./1) :
Pour le basculement Loader/Jeu je pensai utiliser la pin de détection de l'USB.
Si le câble USB est brancher et qu'on démarre la console , on arrive sur le Loader , sinon on démarre le jeu.
Attention à prévoir un moyen simple de pouvoir tester son code en étant connecté au PC, sans devoir débrancher/rebrancher le câble USB à chaque fois, sinon ça va être vite galère pour les développeurs. (On en a fait l'expérience à l'AC avec Vince avec les cartouches flashables pour Lynx, sauf que c'était pire, il fallait sortir la cartouche de la console à chaque fois.)

X-death (./1) :
Néanmoins pas mal de choses avait déjà été écrites à l'époque par Orion ou Zerosquare dans le précédent projet et j'aimerai dans la mesure du possible ( et avec leurs accords ) le ré utiliser au maximum
Aucun souci (au contraire) pour mon code, pour Orion_ il faudra lui demander mais je pense qu'il sera d'accord aussi.

X-death (./1) :
Point négatif : Il s'alimente en 1.8V ce qu'il fait qu'il faut rajouter un régulateur.
Si tu veux un CPLD qui n'est pas en fin de vie (donc susceptible de plus être dispo bientôt), ça risque d'être de toute façon obligatoire. Ceci dit ce n'est pas un gros problème, un régulateur en boîtier SOT-23 + deux condensateurs céramiques, ça ne prend pas énormément de place et ça ne coûte pas très cher. Par exemple il y a le MCP1700T-1802E/TT, qui est plus petit que celui que tu as choisi, un peu moins cher, et qui n'utilise que des condensateurs de 1 µF. Il est limité à 200 mA, mais je doute que le CPLD consomme autant (et si c'était le cas, la pile de la Wonderswan ne tiendrait pas longtemps grin)

X-death (./1) :
Convertisseur Serial <> USB
J'ai noté deux références intéressantes :
FTDI FT232RL : Fiable , bon support et ne nécessite pas d'oscillateur externe.
par contre il est relativement cher ( plus cher que le CPLD )

CH340 est une alternative chinoises qu'on retrouve dans beaucoup d'Arduino
Il dispose de moins de fonctions , mais à un prix très largement inférieur. chinois
Les deux encombrement sont relativement proches ( SOP16 vs SSOP28) mais le CH240G nécessite lui un oscillateur externe.
Effectivement FTDI est top question fiabilité, mais nettement plus cher que les concurrents.
C'est dommage, il y a une version low-cost avec moins de broches qui conviendrait (FT234XD-R), mais elle n'existe qu'en QFN, donc difficilement soudable à la main à l'air chaud, et impossible au fer (il faut un vrai four de refusion pour souder proprement ce genre de boîtier, et une machine à rayons X pour contrôler ensuite).
Si tu acceptes un débit maximum de 64 Ko/s, il y a aussi le FT260S qui a l'air intéressant et pas trop cher, par contre je ne l'ai jamais testé.

Le CH*** est pas cher, mais outre le fait que le quartz est externe, c'est un machin chinois dont le support peut être abandonné du jour au lendemain, et qui pose davantage de problèmes de drivers/fiabilité. C'est pas cher mais perso je m'en méfierais. Dans cette gamme de prix, je te conseillerais plutôt le MCP2200. Malgré ce que je pense de Microchip, je pense que ce sera de meilleure qualité. (Attention à compter le prix du quartz si tu compares à FTDI).

Autre possibilité : une interface parallèle 4 ou 8 bits au lieu de l'UART (certains FTDI gèrent ça, pour les autres marques je sais pas). C'est plus rapide et ça consommera probablement moins de LE dans ton CPLD.

Important : prévois un mécanisme de contrôle de flux matériel (RTS/CTS si c'est une UART, ou l'équivalent si c'est une autre interface), parce que le PC va envoyer plus vite que ce que sera capable de traiter la Wonderswan. (On peut aussi le faire en logiciel, mais c'est chiant et ça diminue les perfs.)
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

5

Autre chose, comment charge-t-on le loader dans la mémoire Flash la première fois ? Avec ton dumper de cartouches ?

Est-ce qu'on pourra le mettre à jour ensuite, et si oui, comment éviter de bricker accidentellement la cartouche ?
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

6

les QFN se font très bien et fiablement au fer mais

-il faut un trou de 1.5mm traversant au centre pour souder le pad a la fin
-il faut du flux épais
-il faut un fer fin

maintenant, après en avoir soudé une dizaine, je les fais mieux au fer weller rt1 qu'a l'air chaud.

7

Zerosquare (./4) :
Pas encore eu le temps de regarder en détails, mais quelques commentaires à chaud :

Déjà merci pour tes réponses top
Ca conforte dans l'idée de travailler en participatif / Open-Source pour ce projet.

Zerosquare (./4) :
Attention à prévoir un moyen simple de pouvoir tester son code en étant connecté au PC, sans devoir débrancher/rebrancher le câble USB à chaque fois, sinon ça va être vite galère pour les développeurs. (On en a fait l'expérience à l'AC avec Vince avec les cartouches flashables pour Lynx, sauf que c'était pire, il fallait sortir la cartouche de la console à chaque fois.)

Je prends note ,Je vois plus ça comme un problème software/Bankswitch.
Logiquement en phase de programmation depuis le Loader , on va tourner depuis la RAM vers des écritures sur la Flash ,donc après flash prévoir un moyen de "forcer certaines adresses" puis éteindre et rallumer la console.
Initialement pour des raisons de simplicité je pensais juste forcer une adresse haute sur la Flash pour activer le Loader ( lire avec un offset ), c'est pas du tout économique en capacité mais très simple à mettre en place pour commencer ( bien plus qu'un système de Bankswitch).
C'est de toute façon un point qu'il va falloir discuté et c'est liée à ta question sur la sécurité.

Zerosquare (./4) :
Aucun souci (au contraire) pour mon code, pour Orion_ il faudra lui demander mais je pense qu'il sera d'accord aussi.
Merci , il était d'accords lui aussi et m'avais même envoyé ses fichiers.
On est donc loin de partir d'une feuille blanche pour le code du Loader smile

Zerosquare (./4) :
MCP1700T est plus petit que celui que tu as choisi, un peu moins cher, et qui n'utilise que des condensateurs de 1 µF. Il est limité à 200 mA, mais je doute que le CPLD consomme autant.

J'ai regardé et effectivement à part le courant de sortie plus faible ( mais suffisant ) je n'y vois que des avantages.
Enplus ça permet de ne pas multiplier les condensateurs à valeur différentes , vu le régulateur on est pas obliger de prendre des Tantalum on peu même rester sur du classique ?

Zerosquare (./4) :
Autre possibilité : une interface parallèle 4 ou 8 bits au lieu de l'UART (certains FTDI gèrent ça, pour les autres marques je sais pas). C'est plus rapide et ça consommera probablement moins de LE dans ton CPLD.

C'est une idée qui me plait et qui permettrait d'économiser des LE car c'est déjà chaud ( La Wodermadeleine uniquement prends 92% des LE ).
Je ne savais pas que ça existait , j'ai commencé de regardé et de ce que je comprends , FTDI propose des composants compatible avec une interface proprio ( hybride SPI ? ) le FT1248 compatible 1 - 2 - 4 - 8 Bit vers USB.
SI effectivement ça va simplifié la partie hardware , ça implique de faire un code côté Swan compatible avec cette interface.
Est-ce que tu as déjà utilisé ça ?

côté référence le FT221XS-R ( SSOP20) pourrais convenir , Il n'est plus en stock sur Farnell mais on peut encore en trouvé sur Mouser ou Arrow au prix de 1.8€ pièce ce qui reste raisonnable.
Par contre c'est un composant obsolète.

Zerosquare (./4) :
Autre chose, comment charge-t-on le loader dans la mémoire Flash la première fois ? Avec ton dumper de cartouches ?

L'idée c'est d'utiliser mon dumper de cartouche pour développer le Loader au moins jusqu'a un point ou j'ai un code qui permet de mettre à jour le Loader en USB et chargé des Homebrew.
Après ça , ceux qui veulent pourront m'aider à l'améliorer.
Mais le dumper de cartouche c'est un outil que j'ai développer pour mes recherches avec ce que j'avais en rab , hors de question d'imposé aux autres d'en faire un ( sauf si vous voulez participer dès le début à la conception du Loader tongue ).

Pour ceux qui veulent monter eux mêmes leurs cartouche je pense qu'ils ont déjà quoi Flasher une TSOP48 et sinon pas mal de vendeurs Pro ( même sur Ebay ) propose ce genre de service pour un cout raisonnable.

Dans l'hypothèse ou tout fonctionne et qu'on a une cartouche qui marche , je veut bien proposer un lot de cartouche si il y a au moins 10 personnes intéresser.
Celles qui passeront par chez moi , seront donc prêt à l'emploi avant envoi.

Mais de toute façon on en est pas encore à ce stade wink

Zerosquare (./4) :
Est-ce qu'on pourra le mettre à jour ensuite, et si oui, comment éviter de bricker accidentellement la cartouche ?

Oui il va falloir un système qui permette de mettre à jour le Loader et surtout une sécurité.
J'ai pas trop réfléchi sur ce point mais j mais vu q'il me reste quelques IO en rab , je pensais mettre un pad à souder ( ou un jumper ) de "sécurité".
Le Loader serais flasher en double , si le point est souder on boot sur le Loader de secours ( à creuser ).

Dans un premier temps je pense qu'il faut qu'on valide la partie hardware notamment le moyen de conversion console vers USB.
Ensuite s’assurer que tout rentre bien dans le CPLD et physiquement sur le PCB.

8

Squally: ce CPLD a un powerpad et c’est la masse donc pas le choix: air chaud.
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

9

pad traversant métallisé sur le dessous. tu soudes le tour sans t'occuper du powerpad, puis tu bourres le pad central a travers le trou métallisé.

10

squalyl (./6) :
-il faut un trou de 1.5mm traversant au centre pour souder le pad a la fin
-il faut du flux épais
-il faut un fer fin

maintenant, après en avoir soudé une dizaine, je les fais mieux au fer weller rt1 qu'a l'air chaud.
Intéressant, mais comment tu fais pour les QFN dont les pads ne dépassent pas sur les côtés latéraux ?

X-death (./7) :
vu le régulateur on est pas obliger de prendre des Tantalum on peu même rester sur du classique ?
Mieux vaut du céramique X7R, le découplage est meilleur et surtout ça ne se dégrade pas avec le temps (contrairement aux condensateurs tantales, qui vieillissent mal).

X-death (./7) :
Est-ce que tu as déjà utilisé ça ?
Non, jamais utilisé, seulement lu quelques trucs là-dessus. Mais ça ne me semble pas poser de souci particulier à coder.
Au besoin, j'ai également du code déjà prêt et multiplateforme pour gérer la communication USB (via émulation série ou HID). Faudra juste que je le dépoussière un peu.

X-death (./7) :
côté référence le FT221XS-R ( SSOP20) pourrais convenir , Il n'est plus en stock sur Farnell mais on peut encore en trouvé sur Mouser ou Arrow au prix de 1.8€ pièce ce qui reste raisonnable.
Par contre c'est un composant obsolète.
Il n'est plus vendu sur Farnell, mais il n'est pas indiqué comme obsolète (ni sur le site du fabricant, ni chez Mouser).
Sinon il y a aussi le FT240XS qui semble aussi intéressant et qui est vendu chez Farnell.

X-death (./7) :
Pour ceux qui veulent monter eux mêmes leurs cartouche je pense qu'ils ont déjà quoi Flasher une TSOP48 et sinon pas mal de vendeurs Pro ( même sur Ebay ) propose ce genre de service pour un cout raisonnable.
Flasher une mémoire à ce format soi-même c'est pas si évident que ça :
- soit on le fait sans souder, et ça suppose un support ZIF pour TSOP (c'est pas aussi répandu qu'un ZIF pour DIP qu'on trouve sur n'importe quel programmateur, et probablement pas donné)
- soit on soude la mémoire sur un PCB adaptateur pour la programmer et on la dessoude ensuite, mais il faut croiser les doigts pour ne pas abîmer de broche lors du cycle soudage - dessoudage - ressoudage.

X-death (./7) :
Oui il va falloir un système qui permette de mettre à jour le Loader et surtout une sécurité.
J'ai pas trop réfléchi sur ce point mais j mais vu q'il me reste quelques IO en rab , je pensais mettre un pad à souder ( ou un jumper ) de "sécurité".
Le Loader serais flasher en double , si le point est souder on boot sur le Loader de secours ( à creuser ).
Bonne idée.
Certaines mémoires flash ont la possibilité de protéger une zone contre l'écriture/l'effacement, ça peut être intéressant. Au besoin on peut y caser un code très limité qui permet juste de reflasher le loader principal.

X-death (./7) :
Dans un premier temps je pense qu'il faut qu'on valide la partie hardware notamment le moyen de conversion console vers USB.
Ensuite s’assurer que tout rentre bien dans le CPLD et physiquement sur le PCB.
Ça me semble bien smile
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

11

Zero: ca existe peut être mais j'en ai jamais rencontré, même un pouième de dépassement suffit.

12

C'est fréquent sur les accéléromètres par exemple :
179268609_Kionix-ROHM_KXTJ3Tri-axisDigitalAccelerometer.png
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

13

Zerosquare (./10) :
Sinon il y a aussi le FT240X qui semble aussi intéressant et qui est vendu chez Farnell.

Effectivement , celui-ci est différent il n'utilise pas le mode proprio FT1248 mais va écrire dans une FIFO.
J'ai lu la datasheet et je le trouve bien plus pratique que l'autre car de ce que j'ai compris l'accès à la FIFO se fait de la même manière qu'une mémoire parallèle classique et ça , ça peu vraiment nous arranger tongue.
Il ya également deux pins RXF# et TXF# qui peuvent servir pour le contrôle de Flux.

Je pense qu'il va falloir se contenter d'un accès en 4bit et utiliser les lignes de data restantes pour les pins de contrôle de la FIFO.
L'accès à la FIFO pourrait se faire en utilisant la pin de la SRAM du CPLD ( /CE_SRAM vers /RESET FIFO) ce qui fait qu'on aurait rien deplus à écrire sur le code du CPLD smile .

Dans cette gamme de FTDI il ya deux références très proches FT240 et FT245 vendu 2x plus cher.
Ce dernier utilise une mémoire EEPROM au lieu d'une MTP ce qui permet un cycle de réecriture beaucoup plus importante pour la zone user mais la taille de la FIFO est plus faible ( 128 RX /256 TX au lieu de 512/512 pour le FT240).
Finalement je trouve la version moins chère plus pratique dommage que la mémoire MTP est un cycle aussi faible de réecriture ( 2000 cycles ) sinon on aurait pu laissé les 940 bytes de mémoire pour l'utilisateur (mieu que rien ).

On trouve des petites board de dev pour moins de 10€ ( c'est une FT245 mais le principe est le même )
https://www.ebay.fr/itm/FT245RL-USB-FIFO-Board-Type-A-FT245-USB-to-Parallel-FIFO-Communication-Module/323291823666?hash=item4b45b1be32:g:KYoAAOSwKwpbGQ6M
SI tout est OK pour ce chip , je peut m'en servir pour mettre au point un code simple en C qu'il faudra ensuite porter en ASM pour Wonderswan

Zerosquare (./10) :
Mieux vaut du céramique X7R, le découplage est meilleur et surtout ça ne se dégrade pas avec le temps (contrairement aux condensateurs tantales, qui vieillissent mal).
Ok c'est noté , merci.

Zerosquare (./10) :
Au besoin, j'ai également du code déjà prêt et multiplateforme pour gérer la communication USB (via émulation série ou HID). Faudra juste que je le dépoussière un peu.
Toujours bon à prendre.
J'ai aussi du HID mais j'ai jamais travailler avec un FTDI qui fait USB en émulation série.
Je pense qu’une fois que c'est reconnu par Windows ça doit pouvoir s’accéder directement comme n'importe quel périphérique série.

Zerosquare (./10) :
Certaines mémoires flash ont la possibilité de protéger une zone contre l'écriture/l'effacement, ça peut être intéressant. Au besoin on peut y caser un code très limité qui permet juste de reflasher le loader principal.
Je rajoute ça aussi dans la TodoList ^^.
SI le FT240 est conforme sa zone memory user peut aussi être utilisé vu que ça sera qu'en lecture.

Zerosquare (./10) :
Flasher une mémoire à ce format soi-même c'est pas si évident que ça :
- soit on le fait sans souder, et ça suppose un support ZIF pour TSOP (c'est pas aussi répandu qu'un ZIF pour DIP qu'on trouve sur n'importe quel programmateur, et probablement pas donné)
- soit on soude la mémoire sur un PCB adaptateur pour la programmer et on la dessoude ensuite, mais il faut croiser les doigts pour ne pas abîmer de broche lors du cycle soudage - dessoudage - ressoudag
C'est vrai mais c'est un problème difficile à résoudre sans de lourde modification.

1) On peut séparer les mémoires , une pour le Loader ( amovible ? ) et une pour la ROM mais ça complexifie le routage , nécessite un système de Bankswitch pour le CPLD et augmente les couts.
2) On peut tenté de trouver un connecteur à 48 broches avec une nappe et l'ajouté sur le PCB , ceux qui veulent reflasher la mémoire devront avoir un PCB custom ( sans parlé du routage tongue )
3)On passe sur un plus gros CPLD ( TQFP100 , BGA ? ) , on relie toutes les broches de la mémoire au CPLD et on pourras programmer la mémoire de manière indirect par JTAG mais pas sur d'avoir assez de place pour ajouter l'usb derrière
4) On considère qu'une cartouche de Dev wonderswan s'adresse à un public quand même assez restreint, est-ce vraiment nécessaire d'ajouter cette fonctionnalitée ?
5) Je vous écoute tongue

14

15

X-death (./13) :
Effectivement , celui-ci est différent il n'utilise pas le mode proprio FT1248 mais va écrire dans une FIFO.
J'ai lu la datasheet et je le trouve bien plus pratique que l'autre car de ce que j'ai compris l'accès à la FIFO se fait de la même manière qu'une mémoire parallèle classique et ça , ça peu vraiment nous arranger tongue.
Il ya également deux pins RXF# et TXF# qui peuvent servir pour le contrôle de Flux.
Oui, après avoir lu la doc, ça semble bien adapté à ce qu'on veut faire.

X-death (./13) :
Je pense qu'il va falloir se contenter d'un accès en 4bit et utiliser les lignes de data restantes pour les pins de contrôle de la FIFO.
L'accès à la FIFO pourrait se faire en utilisant la pin de la SRAM du CPLD ( /CE_SRAM vers /RESET FIFO) ce qui fait qu'on aurait rien deplus à écrire sur le code du CPLD smile .
Pourquoi se limiter à 4 bits ? On peut connecter directement D0 à D7 au bus de données de la Wonderswan.
Attention, /RESET n'est pas un Chip Select, c'est un vrai reset du composant. En fait il ne semble ne y en avoir de Chip Select (étrangement), du coup il faudra synthétiser des signaux /RD et /WR pour la FIFO à partir des signaux /RD et /WR de la Wonderswan et du décodage d'adresses ; le CPLD peut faire ça facilement. Il faudra aussi relier les signaux /TXE, /RXF, /SIWU et /PWREN au CPLD (on peut mapper ça simplement sur un port I/O inutilisé).
Dommage qu'on ne puisse pas lire le nombre d'octets en attente dans la FIFO. Du coup il faudra tester avant de lire chaque octet, alors que sinon on aurait pu utiliser rep movsb ou rep insb pour faire des transferts rapides.

X-death (./13) :
Dans cette gamme de FTDI il ya deux références très proches FT240 et FT245 vendu 2x plus cher.
Ce dernier utilise une mémoire EEPROM au lieu d'une MTP ce qui permet un cycle de réecriture beaucoup plus importante pour la zone user mais la taille de la FIFO est plus faible ( 128 RX /256 TX au lieu de 512/512 pour le FT240).
Finalement je trouve la version moins chère plus pratique dommage que la mémoire MTP est un cycle aussi faible de réecriture ( 2000 cycles ) sinon on aurait pu laissé les 940 bytes de mémoire pour l'utilisateur (mieu que rien ).
Je pense que la MTP n'est accessible que via USB, donc sans intérêt pour nous. Donc autant prendre un FT240.

X-death (./13) :
Je pense qu’une fois que c'est reconnu par Windows ça doit pouvoir s’accéder directement comme n'importe quel périphérique série.
Oui c'est ça. En fait on peut utiliser soit les fonctions standard pour les ports série, soit une API propriétaire. Il y a un peu plus de boulot si on utilise l'émulation de port série (surtout si on veut que ce soit asynchrone), mais ça se fait.

X-death (./13) :
SI le FT240 est conforme sa zone memory user peut aussi être utilisé vu que ça sera qu'en lecture.
Voir ci-dessus : je ne pense pas que ce soit accessible depuis la Wonderswan.

X-death (./13) :
C'est vrai mais c'est un problème difficile à résoudre sans de lourde modification.

1) On peut séparer les mémoires , une pour le Loader ( amovible ? ) et une pour la ROM mais ça complexifie le routage , nécessite un système de Bankswitch pour le CPLD et augmente les couts.
Le seul format amovible pratique c'est du DIP, et je vois mal comment tu vas faire rentrer ça dans une cartouche de WS vu le peu de place qu'il y a grin

X-death (./13) :
2) On peut tenté de trouver un connecteur à 48 broches avec une nappe et l'ajouté sur le PCB , ceux qui veulent reflasher la mémoire devront avoir un PCB custom ( sans parlé du routage tongue )
Ça va prendre de la place et compliquer le routage à mort...

X-death (./13) :
3)On passe sur un plus gros CPLD ( TQFP100 , BGA ? ) , on relie toutes les broches de la mémoire au CPLD et on pourras programmer la mémoire de manière indirect par JTAG mais pas sur d'avoir assez de place pour ajouter l'usb derrière
Pas bête, mais gros impact sur la complexité.

X-death (./13) :
4) On considère qu'une cartouche de Dev wonderswan s'adresse à un public quand même assez restreint, est-ce vraiment nécessaire d'ajouter cette fonctionnalitée ?
En fait ça n'a pas d'intérêt même pour les développeurs "ordinaires".
C'est surtout pour éviter le problème de la poule et de l'œuf pour ceux qui fabriquent la cartouche eux-même. Mais bon, tu peux toujours filer le code et les laisser se débrouiller pour le flasher, ce serait pas la première fois pour de l'open-source grin
En plus ça permettrait à Godzil de vendre des WonderLyzer pour servir de breakout boards #sifflote#
S'il y a peu de demande pour ça (ce qui sera probablement le cas : entre ceux qui demandent de l'open-source et ceux qui vont vraiment en tirer partie, il y a un gouffre), c'est l'option qui me semble la plus viable. S'il y en a davantage, on peut organiser l'achat d'un lot de mémoire préprogrammées et les revendre.
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

16

Et squalyl > c'est du LGA en fait, mais on va pas chipoter embarrassed
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

17

toi, tu chipotes pas? Alors que le QFN est soudable au fer au contraire du LGA (qui est une plaie calibre BGA, je le reconnais) embarrassed

18

Bon d'accord.
On te promeut responsable officiel de la soudure des QFN au fer. Ne me remercie pas grin
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

19

Juste quelque bricoles:

- Le code "WonderMadeleine" est extremement incomplet, et n'est en aucun cas garanti fonctionnel (tel quel)
- Tu ne peux pas attaquer la flash tel que depuis la wonderswan, il faut implementer des foncitonalité manquantes dans le code qui sont ce qu'utilise le BDC2003.
- La Madeleine utilise le meme CPLD, et j'ai largement moins de fonctionalitée que ce que tu cherche a faire et je suis dans l'incapacité actuellement de faire tenir pour la version retail le code pour gerer les FIFOs pour l'EEPROM
- Si ton but est 100% pour le dev, je n'utiliserais pas de la flash, mais uniquement de la SRAM, plus rapide pour ecrire. pas de protocole complexe pour y écrire.
- Il y a potentiellement un moyen de ne pas avoir le "bootloader" dans la flash en elle même, mais dans le bloc UFM du CPLD. mais c'est consommateur en LE

Fait le code pour le CPLD avant de commencer a construire le hardware sinon tu vas te retrouver avec une cartouche dont tu ne pourras rien faire sur les bras

Autre point, fait ta cartouche comme pour celle du flashmasta, surtout si c'est pour du DEV uniquement: ne pas avoir besoin d'un boitier (donc plus epaisse et plus large au niveau du connecteur)

Met un connecteur mini USB avec autant de traversant que possible. les microUSB monté en surface sont EXTRÊMEMENT fragile, et la moindre torsion sans partie mécanique pour le tenir va instantanément casser et probablement tirer les pads et une partie des pistes avec.
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

20

Godzil (./19) :
Si ton but est 100% pour le dev, je n'utiliserais pas de la flash, mais uniquement de la SRAM, plus rapide pour ecrire. pas de protocole complexe pour y écrire.
C'est vrai, mais c'est quand même sympa de pouvoir tester (ou faire tester) son jeu sans avoir besoin de recharger depuis un PC à chaque fois.

Godzil (./19) :
les microUSB monté en surface sont EXTRÊMEMENT fragile, et la moindre torsion sans partie mécanique pour le tenir va instantanément casser et probablement tirer les pads et une partie des pistes avec.
pencil
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

21

Si le process est rapide, ce n'est pas vraimetn un probleme a vrai dire, mais on peux aussi sauver la SRAM avec un pile
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

22

Yep (mais la pile et le switch d'alim prend de la place).
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

23

Le chip que j'utilise sur Madeleine est vraiment petit (celui qui remplace le Giza) et tu n'est pas obligé de partir sur du CR2032, tu peux prendre du 1025 par exemple. Si c'est sur un support, c'est facile a changer!
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

24

C'est cool ça a bien participé aujourd'hui, par contre y'a pas forcement que des bonnes nouvelles couic


Godzil (./19) :
- Le code "WonderMadeleine" est extrêmement incomplet, et n'est en aucun cas garanti fonctionnel (tel quel)
Déjà merci pour ta participation cheeky , par contre c'est vraiment une mauvaise nouvelle si le code est non fonctionnel.
Pourrais tu m'en dire plus sur ce qui ne marche pas/manque ?
Car je me suis beaucoup appuyer sur la Wondermadeleine pour écrire le code de mon lecteur de cartouche , notamment sur la partie Bankswitch et déverrouillage du Bandai.
J'arrive avec succès à lire la ROM et commander les accès Bankswitch + SRAM, j'ai donc du mal à voir ce qu'il manque ?

Godzil (./19) :
- Tu ne peux pas attaquer la flash tel que depuis la Wonderswan, il faut implémenter des fonctionnalité manquantes dans le code qui sont ce qu'utilise le BDC2003.

La aussi franchement je ne comprends pas pourquoi je ne pourrai pas le faire ?
En admettant qu'on utilise une mémoire NOR Flash telle que celle-ci (que j'ai déjà utilisé dans un autre projet):
https://www.mouser.fr/ProductDetail/Microchip-Technology/SST38VF6401-90-5C-EKE?qs=sGAEpiMZZMvtrnhC60i%252bOhFLsFhiuaIN

En mode lecture elle va s’accéder de manière classique , comme une EPROM/EEPROM parallèle : il faut juste contrôler /OE et /CE
en mode écriture il faut ajouter la gestion de /WE et utiliser un code comme celui que j'utilise dans mon lecteur/programmateur de cartouche Megadrive
X-death25/STM32_ProjectsGitHubUltimate-Consoles projects for STM32F103C8. Contribute to X-death25/STM32_Projects development by creating an account on GitHub.

A partir du moment ou ces 3 I/O sont pilotable, pourquoi je ne pourrai pas le faire ? et pourquoi le Bandai me bloque ?

Godzil (./19) :
La Madeleine utilise le même CPLD, et j'ai largement moins de fonctionalitée que ce que tu cherche a faire et je suis dans l'incapacité actuellement de faire tenir pour la version retail le code pour gerer les FIFOs pour l'EEPROM

Bon déjà si tu utilise le même CPLD c'est une bonne chose smile
En même temps il ny' a pas 36 choix possibles.

En ce qui concerne les fonctionnalités :
-mettons de côté l' EEPROM pour le moment
- Pour le contrôle du FT240 il va me falloir au minimum 2 entrées et 2 sorties.
plutôt que d'utiliser le CPLD je pensai ne faire la transmission qu'en 4 bit ( D0 D1 D2 et D3 ) et gérer RXF# TXF# RD# et WR# avec D4 D5 D6 et D7 du bus.
Si c'est possible il n'y aurai que le code de la Wondermadeleine dans le CPLD ( 149 LE / 160 )
le pilotage de /WE ROM + l'éveil du FT240 en utilisant /CE_SRAM + l'activation de A21 à faire avec les LE restantes : si il n'y a que ça : largement jouable

Godzil (./19) :
- Si ton but est 100% pour le dev, je n'utiliserais pas de la flash, mais uniquement de la SRAM, plus rapide pour ecrire. pas de protocole complexe pour y écrire.
ça veut dire que pour conserver la même capacitée ( au moins 4 Mo de dispo pour l'utilisateur ) il faut passer en BGA...


Je préfère attendre les réponses avant d'enchainer encore smile

25

X-death (./24) :
plutôt que d'utiliser le CPLD je pensai ne faire la transmission qu'en 4 bit ( D0 D1 D2 et D3 ) et gérer RXF# TXF# RD# et WR# avec D4 D5 D6 et D7 du bus.
Ce n'est pas possible. Il y aurait un conflit avec l'utilisation normale du bus de données pour le reste (sans parler du fait que la direction du bus de données est fixée pour l'ensemble, alors que certains de tes signaux sont des entrées et d'autres des sorties).

Pour le reste Godzil, est-ce que ton code est optimisé ? Si ce n'est pas le cas on peut probablement le faire pour diminuer le nombre de LEs utilisés.
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

26

Il n'est pas garanti fonctionel parceque le code tel que n'a jamais ete testé face au vrai hardware.

Pourquoi il manque des trucs?
Manque de temps, j'ai découvert certains points en travaillant sur madeleine, longtemps après avoir écrit ce code.

Le code est potentiellement ok, en tout cas il l'est pour le déblocage, je ne suis pas sur que le code soit exactement identique a celui utilisé dans la vidéo de démo que j'avais fait il y a un long moment en arrière (qui tournais sur une FPGA).
Depuis je suis partit sur la base de code pour la Madeleine et il y a eu pas mal de changement, dont beaucoup ne sont pas public.
A vrai dire l'autre raison pour n'avoir jamais terminé ce code est simple: je n'ai jamais eu de demande pour avoir des composants pre-programmé (ou des question sur le fonctionnement/non fonctionnement du bousin)

Pour la flash, la raison est extremement simple:

La WonderSwan ne peux PAS écrire sur la région mémoire lié a la ROM, c'est physique dans le SoC, et on ne peux pas le changer.
Il n'y a qu'un seul moyen qui est celui utilisé par le BANDAI2003: mapper la ROM sur la banque de la SRAM avec toutes les limitations que ca impose.
http://daifukkat.su/docs/wsman/#REG_WW_FLASH_CE


Zero: il faut que je compare avec le code de madeleine, mais pour "optimiser" j'avais du réduire le nombre de bits utilisé pour certains registres. Il y a malheureusement pas mal de registres, et ça bouffe pas mal de LE ces bêtes la...
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

27

Godzil (./26) :
La WonderSwan ne peux PAS écrire sur la région mémoire lié a la ROM, c'est physique dans le SoC, et on ne peux pas le changer.
Il n'y a qu'un seul moyen qui est celui utilisé par le BANDAI2003: mapper la ROM sur la banque de la SRAM avec toutes les limitations que ca impose.
http://daifukkat.su/docs/wsman/#REG_WW_FLASH_CE

Merci pour le lien.
Par contre je ne suis pas si catégorique en lisant ça :

This flash ROM can be written from WonderSwan code, however you must not be simultaneously executing and writing code to the flash ROM. Thus, you will need to drop code into RAM and execute from there in order to write the flash ROM.
The procedure for writing the flash can be found in any datasheet for the part, but I will explain the basic flashing procedure anyways for reference.
Firstly, change the SRAM bank to the bank you wish to write to, inclusive-OR 8. You must then swap the SRAM out for the Flash by writing 001h to REG_WW_FLASH_CE. Next, set the chip to Fast Mode by writing the following sequence to the SRAM region:

Ils disent que tu ne peut pas le faire depuis la Bank active mais qu'il faut passer par la RAM , (enfait comme le ferai n'importe quelle Loader) + activer la bank SRAM pour forcer /CE_ROM à 1
Le reste c'est la condition par le registre et les commandes classiques d'une mémoire Flash qui permet de préparer la bank active et de refaire passer CE_ROM à 0.
SI j'ajoute une condition similaire dans le code du Wondermadeleine qui permet de repasser CE_ROM à 0, je serai quand même bloquer ?

28

Ben ça correspond avec ce que Godzil explique : pour écrire dans la flash, il faut d'abord la mapper dans la région de la SRAM. Si tu essaies d'écrire directement dans la région de la flash, il ne se passe rien (j'ai constaté ça aussi, il n'y a pas d'impulsion sur le signal /WR du port cartouche).

Godzil > à vrai dire je pensais (comme X-Death) que tu avais déjà testé le code sur le vrai hardware et que c'était fonctionnel.
Pour ce qui est de l'optimisation, je pensais surtout au handshake au boot. Vu que c'est toujours la même séquence, on doit pouvoir optimiser ça pas mal.
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

29

Je ne suis pas sur sur ce code, j'ai plusieurs projets qui partagent du code, celui qui a servit pour la démo, celui la et madeleine, et qui est sur github n'a pas été mis a jours depuis longtemps. Je ne peux pas confirmer la tel que la correspondance avec le code de madeleine et celui de la démo
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

30

Est ce que tu accepterai de le tester ?
Je pense que tu es équipé bandana