Tout est possible
J'ai essayé à peu près toutes les méthodes, et le temps est venu d'en choisir une pour les démos à venir.
1) SDBOOT, lancé à partir de n'importe quel support (cassette, disquette ou carte SD), initialise la carte SD et lance l'exécution d'un loader situé à une adresse physique donnée sur la carte. Peut fonctionner sans contrôleur CS91-280.
C'est la solution utilisée dans les premières démos du site dcmoto. Le programme SDBOOT n'est pas à jour (il contient des versions anciennes des fonctions d'accès à la carte SD). Il faudrait l'actualiser pour les démos à venir, si cette solution est retenue.
2) Un programme indépendant initialise la carte SD et exécute la démo. Le fichier .sd de la démo ne contient que des données.
Peut fonctionner sans contrôleur CS91-280.
Cette solution est intéressante car elle sépare les données du "moteur" de la démo. J'ai fait beaucoup d'essais mais je ne crois pas avoir diffusé les programmes.
3) Même méthode que ci-dessus, mais avec un contrôleur CS91-280. Le programme de démo utilise les fonctions déjà présentes dans le contrôleur pour initialiser la carte et appeler les commandes d'accès aux secteur. Ne fonctionne pas sans contrôleur CS91-280.
Cette solution est utilisée dans les exemples de ce fil de discussion :
http://forum.system-cfg.com/viewtopic.php?f=25&t=5448
Les exemples sont donnés pour le MO6, mais doivent fonctionner aussi bien sur TO. Les programmes sont à jour et fonctionnent avec les versions actuelles du contrôleur CS91-280.
Mes hésitations dans le choix d'une méthode tournent autour de deux questions :
- Les démos doivent-elles être indépendantes ou non du contrôleur CS91-280 ?
- Les programmes de démos doivent-ils être indépendants ou non des données ?
L'utilisation des fonctions du contrôleur CS91-280 a deux gros avantages : éviter de dupliquer ces fonctions, et assurer la mise à jour de tous les programmes en cas de nouvelle version de l'EPROM. Et un gros inconvénient : interdire l'utilisation des démos aux utilisateurs de SDMOTO ne disposant pas du contrôleur.
En analysant ce dilemme, on peut trouver une troisième voie qui me semble tenir la route :
- Ne pas recopier dans les démos les fonctions d'initialisation et d'accès à la carte SD
- Utiliser les fonctions du contrôleur CS91-280 s'il est présent
- A défaut de contrôleur, appeler ces mêmes fonctions dans une bibliothèque indépendante chargée en RAM
Les fonctions utilisées sont simples, en fait il n'y en a que trois :
- Initialisation de la carte
- Lancement d'une commande quelconque
- Lecture d'un secteur de 512K dans un buffer
A priori les démos n'écrivent pas sur la carte. Pour le streaming elle lancent la commande "Lecture Multiple" et utilisent en général un programme optimisé de lecture d'un octet (en déroulant la boucle). Elles n'ont donc pas besoin de la troisième fonction. Dans la journée je vais essayer de résumer tous les appels nécessaires pour écrire la démo et je donnerai les sources (à jour) de toutes les fonctions utilisées.