Aller au contenu
Phosphoneowiki
Sommaire

Les deux backends

Un second avis intégré : le même programme peut passer par le code de l’API compilé, ou par le vrai firmware sur un RP2040 émulé.

Les deux backends de PhosphoneoLe même programme peut passer par deux chemins. Par défaut, le comportement lié : le code de l'API du firmware est compilé dans l'émulateur et répond directement. Avec --neo-emu, la co-simulation : le vrai fichier ELF du firmware tourne sur un émulateur de RP2040, et le 65C02 est servi sur le bus comme sur la carte. Les mêmes captures et les mêmes journaux sortent des deux ; les cas de référence doivent concorder.Programme .neoComportement lié (défaut)API compilée dans l'émulateurrapide, tous les journauxlatence d'appel : 0 cycleCo-simulation (--neo-emu)firmware ELF sur RP2040 émulébus servi comme sur la cartelatences mesurées en pas ARMMêmes sortiescaptures PPM, textevidéo, WAVétats comparablesLes cas de référence sont rejoués dans les deux backends et doivent concorder.
Deux chemins pour un même programme ; les sorties sont de même nature et doivent concorder.

Le comportement lié (par défaut)

Le code de l’API est compilé dans Phosphoneo et répond directement quand le 65C02 écrit à $FF00. C’est rapide, et c’est le seul backend qui offre tous les journaux (--api-log, la trace avec adresses effectives, les arrêts sur appel d’API). La latence d’un appel y vaut 0 cycle, sauf --api-latency.

La co-simulation (--neo-emu)

Le vrai fichier ELF du firmware s’exécute sur un émulateur de RP2040 (Cortex-M0+, PIO, DMA, USB, snapshots) : le programme PIO qui sert le bus du 65C02 est celui de la carte, et DSPHandler s’exécute en ARM. Cela donne :

  • les latences des appels en pas ARM (--api-latency-out écrit la table) ;
  • un second avis : une partie des cas de référence est rejouée dans les deux backends et doit concorder ;
  • les firmwares « reload » (BBC Micro, Oric) qui prennent le bus en bit-bang.

Ses limites sont écrites dans la précision : écran, USB et son y sont simulés à gros grain, la bibliothèque flottante de la ROM est simulée, et le journal d’API n’est pas disponible (l’appel s’y exécute sur l’ARM émulé).

Sources dans le dépôt : docs/ACCURACY.md, docs/adr/0001-liaison-firmware-common.md, docs/ETUDE-COSIM.md.