pico6502 Manuel Utilisateur
Remarque : Le projet pico6502 est en phase de developpement initial. Le materiel est fonctionnel et l'interface bus est operationnelle, mais la prise en charge des pilotes est limitee. Ce manuel reflete l'etat actuel du projet et sera mis a jour au fur et a mesure du developpement.
Manuel d'utilisation du pico6502
Presentation de la carte
Connecteurs et indicateurs
| Element | Description |
|---|---|
| Connecteur de debogage 6 broches | Situe sur le bord de la carte. Fournit un acces SWD (Serial Wire Debug) au RP2350, ainsi que les lignes SWO et Reset. Voir le brochage du connecteur de debogage ci-dessous. |
| Port USB | Connectivite USB pour le flashage du firmware via stockage de masse USB (mode BOOTSEL) et pour le pont USB-UART vers l’ESP32. |
| Emplacement carte SD | Emplacement carte SD pleine taille gere par l’ESP32. Contient le config.json, les images ROM et les actifs du systeme de fichiers. |
Brochage du connecteur de debogage
| Broche | Signal | Fonction |
|---|---|---|
| 1 | SWCLK |
Horloge Serial Wire Debug (ARM SWD) |
| 2 | SWDIO |
Donnees Serial Wire Debug (ARM SWD) |
| 3 | SWO |
Serial Wire Output — sortie de trace optionnelle du RP2350 |
| 4 | RESET |
Reset actif bas pour le RP2350. Tirer a la masse pour reinitialiser. |
| 5 | GND |
Reference de masse |
| 6 | 3V3 |
Sortie d’alimentation 3,3 V (ne pas utiliser comme entree) |
NB. Les broches 1, 2 et 5 sont utilisees pour le debogage SWD (SWCLK, SWDIO, GND). Pour le flashage initial du RP2350, utilisez le mode BOOTSEL en activant le signal BOOTSEL lors de la mise sous tension — voir l'etape 1 dans Premiers pas. La broche 3 (SWO) est optionnelle et n'est utilisee que lorsque la sortie de trace est activee dans la compilation du firmware.
Premiers pas
- Flasher le bootloader du RP2350 via le mode stockage de masse USB (BOOTSEL).
- Flasher le firmware de l'ESP32 via
esptool. - Preparer une carte SD avec le
config.jsonet les images ROM requises. - Installer le pico6502 dans le socket 6502 de votre ordinateur hote.
- Mettre sous tension et attendre que le pico6502 demarre son point d'acces WiFi.
- Se connecter a l'interface web et terminer la configuration initiale.
Etape 1 — Flasher le bootloader du RP2350
- N'inserez pas encore le pico6502 dans un ordinateur hote — connectez-le a un PC par cable USB uniquement.
- Maintenez le signal BOOTSEL a l'etat bas (referez-vous au schema de votre carte pour l'emplacement du point de test).
- Appliquez l'alimentation au port USB — le RP2350 commence a demarrer.
- Relâchez BOOTSEL rapidement apres que la carte est enumeree comme peripherique de stockage de masse USB.
- Le PC montera un lecteur nomme RPI-RP2 (ou similaire).
- Copiez
Bootloader_<version>.uf2sur le lecteur monte. Le RP2350 se flashe automatiquement et redemarre.
Etape 2 — Flasher le firmware de l'ESP32
esptool. La procedure est identique a celle du picoZ80 — voir le Manuel d'utilisation du picoZ80 — Etape 2 pour tous les details. Le binaire du firmware ESP32 est le meme pour les deux cartes.
Configurez l'environnement Python (une seule fois) :
python3 -m venv ./venv/ source ./venv/bin/activate cd $HOME/esptool
PORT au noeud de peripherique attribue par votre systeme d'exploitation :
PORT=/dev/ttyUSB0 # Linux — ajustez selon vos besoins
# PORT=/dev/tty.usbmodem141403 # macOS
BINPATH=/path/to/esp32/build
python3 ./esptool.py \
-p ${PORT} -b 115200 \
--before default_reset --after hard_reset \
--chip esp32s3 \
write_flash \
--flash_mode dio --flash_size 4MB --flash_freq 80m \
0x0 ${BINPATH}/bootloader.bin \
0x8000 ${BINPATH}/partition-table.bin \
0x9000 ${BINPATH}/ota_data_initial.bin \
0x10000 ${BINPATH}/sd_card.bin
NB. Toutes les mises a jour firmware ESP32 subsequentes peuvent etre effectuees via la page web OTA (ota-esp32.htm) une fois le flashage initial termine.
Etape 3 — Preparer la carte SD
- Systeme de fichiers FAT32.
- Toute capacite prise en charge par FAT32 (jusqu'a 32 Go recommande pour un formatage fiable).
config.jsona la racine de la carte SD — le fichier de configuration principal. Voir Configuration de base pour un exemple minimal 6502.- Repertoire
webfs/— les actifs de l'interface web ESP32. Copiez le contenu du repertoirewebfs/depuis le depot du projet vers la racine de la carte SD.
| Repertoire | Contenu |
|---|---|
ROM/ |
Images ROM referencees par le config.json (ex. BBC Model B OS, BASIC) |
DSK/ |
Images disque pour les futurs pilotes d’emulation de lecteur |
config.json et creer des repertoires depuis le navigateur sans retirer physiquement la carte.
Etape 4 — Installation dans l'ordinateur hote
- Eteindre l'ordinateur hote et decharger toute electricite statique.
- Retirer la puce CPU 6502 existante de son socket DIP-40. Un outil d'extraction de puce est recommande pour eviter de plier les broches.
- Inserer la carte SD dans l'emplacement carte SD du pico6502.
- Aligner le pico6502 avec le socket 6502, en s'assurant que la broche 1 du pico6502 (marquee par un point ou une encoche) est alignee avec la broche 1 du socket.
- Appuyer doucement et uniformement sur le pico6502 dans le socket. S'assurer que les 40 broches sont bien inserees. Ne pas forcer — en cas de resistance, retirer et verifier l'alignement des broches.
- Mettre l'ordinateur hote sous tension.
pico6502. Connectez-vous a ce reseau pour acceder a l'interface web et terminer la configuration WiFi initiale.
NB. Le pico6502 s'alimente depuis l'alimentation 5 V de la broche VCC du socket 6502. Le convertisseur buck integre delivre du 3,3 V a tous les composants de la carte. Assurez-vous que l'alimentation 5 V de votre ordinateur hote peut fournir au moins 500 mA — le pico6502 peut consommer jusqu'a 400 mA en charge maximale (RP2350 a 300 MHz avec WiFi actif).
Etape 5 — Mise sous tension
config.json depuis la carte SD (ou la copie Flash en cache), initialisera la carte memoire et commencera a traiter les cycles bus du 6502.
L'ESP32 demarre en parallele et lance le sous-systeme WiFi. Si aucun identifiant reseau enregistre n'est trouve, l'ESP32 entrera automatiquement en mode Point d'Acces.
Etape 6 — Connexion a l'interface web
pico6502 et naviguez vers http://192.168.4.1. Depuis la page du gestionnaire WiFi, entrez vos identifiants de reseau domestique. Apres la sauvegarde et le redemarrage de l'ESP32, le pico6502 rejoindra votre reseau et sera accessible a l'adresse IP configuree (par defaut http://192.168.1.192).
Configuration WiFi
Connexion en mode Point d'Acces
- Sur votre telephone, tablette ou ordinateur portable, ouvrez les parametres WiFi et recherchez un reseau nomme pico6502 (ou tel que configure dans le champ
esp32.wifi.ssidde votreconfig.jsonen mode AP). - Connectez-vous au reseau pico6502. Le mot de passe AP par defaut est pico6502AP (verifiez les notes de version de votre firmware si cela a change).
- Ouvrez un navigateur et naviguez vers http://192.168.4.1 — c'est l'adresse IP par defaut en mode AP. L'interface web du pico6502 apparaitra.
- Naviguez vers la page du gestionnaire WiFi pour entrer le SSID et le mot de passe de votre reseau domestique.
- Cliquez sur Save & Connect. L'ESP32 redemarrera et se connectera a votre reseau domestique en tant que client.
Mode client (station)
config.json (recommande pour un acces facile), naviguez directement vers :
http://192.168.1.192
Interface web
webfs/ sur la carte SD.
Tableau de bord (index.htm)
- Version du firmware — la version et la date de compilation du firmware RP2350 actuellement en cours d'execution.
- Version ESP32 — la version du firmware du coprocesseur ESP32.
- Partition active — lequel des deux emplacements firmware (1 ou 2) est actuellement actif.
- Persona active — la personnalite machine actuellement chargee.
- Horloge RP2350 — frequence CPU actuelle en MHz.
- Horloge PSRAM — frequence d'horloge SPI PSRAM actuelle.
- Etat WiFi — mode (AP ou client), SSID et adresse IP attribuee.
- Carte SD — si une carte SD est presente et l'etat de montage du systeme de fichiers.
- Temps de fonctionnement — temps depuis le dernier redemarrage.
Editeur de configuration (config.htm)
config.json stocke sur la carte SD. L'editeur offre la coloration syntaxique et une validation JSON basique.
Pour modifier la configuration :
- Naviguez vers la page de l'editeur de configuration.
- Le
config.jsonactuel est charge automatiquement dans l'editeur. - Effectuez vos modifications. L'editeur mettra en evidence les erreurs de syntaxe en rouge.
- Cliquez sur Save pour ecrire le fichier mis a jour sur la carte SD.
- Cliquez sur Apply (ou redemarrez) pour appliquer la nouvelle configuration. Le RP2350 lit la configuration au demarrage, la minifie et la stocke en Flash — les demarrages suivants utilisent la copie Flash si aucune carte SD n'est presente.
memory sous forme de blocs FUNC. Les modifications des parametres WiFi dans le bloc esp32.wifi prennent effet au prochain redemarrage de l'ESP32.
NB. L'editeur de configuration opere directement sur le fichier de la carte SD. Il est recommande de conserver une copie de sauvegarde d'un config.json fonctionnel sur votre PC avant d'effectuer des modifications significatives.
Gestionnaire de fichiers (filemanager.htm)
- Telecharger une image ROM — naviguez vers le repertoire
ROM/et utilisez le bouton de telechargement pour transferer le fichier ROM depuis votre PC. - Sauvegarder le config.json — cliquez sur l'icone de telechargement a cote de
config.jsonpour enregistrer une copie sur votre PC. - Mettre a jour les actifs web — naviguez vers
webfs/et telechargez les fichiers HTML/CSS/JS de remplacement pour mettre a jour l'interface web.
Selection de persona (personality.htm)
- BBC Model B — persona BBC Micro Model B (en developpement). Fournit une carte memoire basique avec les ROM OS et BASIC. Le pilote
ModelB.cest reference dansM6502CPU.cvia#ifdef INCLUDE_BBC_DRIVERS.
Mises a jour firmware (OTA)
BaseM6502_<version>.bin au lieu de BaseZ80_<version>.bin.
Gestionnaire WiFi (wifimanager.htm)
- Mode WiFi — Point d'Acces (le pico6502 cree son propre reseau) ou Client (le pico6502 rejoint un reseau existant).
- SSID — le nom du reseau a creer (mode AP) ou rejoindre (mode client).
- Mot de passe — le mot de passe WiFi.
- Adresse IP / Masque de sous-reseau / Passerelle — parametres IP fixes pour le mode client (recommande pour un acces coherent).
- DHCP — activer pour obtenir une adresse automatiquement depuis votre routeur ; desactiver pour utiliser les parametres IP fixes ci-dessus.
Configuration de base
config.json sur la carte SD. Ce qui suit est une configuration minimale fonctionnelle pour un hote 6502 generique avec RAM, ROM et un peripherique VIA mappe en memoire. Referez-vous au Guide technique — Reference de configuration pour une description complete de toutes les options.
Difference cle avec le picoZ80 : la cle CPU de niveau superieur est "6502" (pas "z80"), et il n'y a pas de tableau "io" — tous les peripheriques y compris le VIA, l'ACIA, etc. sont mappes en utilisant des blocs FUNC dans le tableau "memory".
{
"esp32": {
"core": {
"device": "6502",
"mode": 0
},
"wifi": {
"override": 1,
"wifimode": "client",
"ssid": "YourNetwork",
"password": "YourPassword",
"ip": "192.168.1.192",
"netmask": "255.255.255.0",
"gateway": "192.168.1.1",
"dhcp": 0,
"webfs": "webfs",
"persist": 0
}
},
"rp2350": {
"core": {
"cpufreq": 300000000,
"psramfreq": 133000000,
"voltage": 1.10
},
"6502": [
{
"memory": [
{
"enable": 1,
"addr": "0x0000",
"size": "0x8000",
"type": "RAM",
"bank": 0,
"tcycwait": 0,
"tcycsync": 0,
"task": "",
"file": "",
"fileofs": 0
},
{
"enable": 1,
"addr": "0x8000",
"size": "0x1000",
"type": "FUNC",
"bank": 0,
"tcycwait": 0,
"tcycsync": 0,
"task": "VIA",
"file": "",
"fileofs": 0
},
{
"enable": 1,
"addr": "0xC000",
"size": "0x4000",
"type": "ROM",
"bank": 1,
"tcycwait": 0,
"tcycsync": 0,
"task": "",
"file": "/ROM/basic.rom",
"fileofs": 0
},
{
"enable": 1,
"addr": "0xE000",
"size": "0x2000",
"type": "ROM",
"bank": 2,
"tcycwait": 0,
"tcycsync": 0,
"task": "",
"file": "/ROM/os.rom",
"fileofs": 0
}
],
"drivers": []
}
]
}
}
0x0000 – 0x7FFF— 32 Ko de RAM dans la banque PSRAM 0 (page zero, pile et RAM generale).0x8000 – 0x8FFF— bloc FUNC de 4 Ko lie au handler de peripherique virtuelVIA— une emulation de peripherique 6522 VIA mappe en memoire.0xC000 – 0xFFFF— ROM BASIC de 8 Ko chargee depuis/ROM/basic.romsur la carte SD dans la banque PSRAM 1.0xE000 – 0xFFFF— ROM OS de 8 Ko chargee depuis/ROM/os.romsur la carte SD dans la banque PSRAM 2. Le vecteur de reset du 6502 a0xFFFC/0xFFFDdoit se trouver dans cette region ROM.
"io" — le 6502 n'a pas d'espace d'adressage E/S separe. Toute l'emulation de peripheriques utilise des blocs FUNC dans la carte memoire.
Depannage
L'ordinateur hote ne demarre pas
- Verifier l'orientation — assurez-vous que la broche 1 du pico6502 est alignee avec la broche 1 du socket. Inserer la carte a l'envers endommagera a la fois le pico6502 et l'ordinateur hote.
- Verifier l'insertion — retirez le pico6502 et reinserez-le, en vous assurant que les 40 broches sont completement inserees et qu'aucune n'est pliee sous la carte.
- Verifier la carte SD — si le
config.jsonest manquant ou malformate, le firmware tentera d'utiliser la configuration Flash precedemment mise en cache. Si aucune configuration valide n'existe, le RP2350 n'initialisera pas la carte memoire et l'hote verra un bus ouvert. Le vecteur de reset du 6502 doit etre dans une region ROM valide. - Confirmer que le firmware est flashe — essayez de connecter le pico6502 via USB (sans l'inserer dans l'hote) et verifiez que la carte est enumeree sur le PC.
- Verifier l'alimentation de l'hote — le pico6502 peut consommer jusqu'a 400 mA sur le rail 5 V. Certains ordinateurs vintage ont des alimentations marginales ; verifiez la tension du rail 5 V sous charge avec un multimetre.
Impossible de se connecter a l'interface web
- Verifier le mode WiFi — au premier demarrage ou apres une reinitialisation d'usine, l'ESP32 demarre en mode AP. Connectez-vous d'abord au reseau WiFi
pico6502, puis naviguez vershttp://192.168.4.1. - Verifier l'adresse IP configuree — si le mode client est configure avec une IP fixe, verifiez que l'IP correspond a votre sous-reseau.
- Verifier la presence de la carte SD — les actifs web dans
webfs/sur la carte SD sont requis. Sans la carte SD, le serveur web ne peut servir aucune page. - Verifier le repertoire webfs — confirmez que le repertoire
webfs/existe sur la carte SD et contient les fichiers HTML/CSS/JS du depot du projet. - Reinitialisation d'usine WiFi — si les identifiants sont perdus, reflashez le firmware ESP32 pour effacer les parametres NVS et repartir a zero.
Carte SD non reconnue
- Assurez-vous que la carte SD est formatee en FAT32. NTFS, exFAT et FAT16 ne sont pas pris en charge.
- Essayez une autre carte SD — certaines cartes haute capacite ou haute vitesse peuvent presenter des problemes de compatibilite avec l'interface SPI SD de l'ESP32.
- Les cartes jusqu'a 32 Go sont bien prises en charge. Les cartes tres volumineuses (>32 Go) peuvent necessiter un formatage special.
- Reinserez la carte SD — retirez-la et reinserez-la pour garantir un bon contact.
Les images ROM ne se chargent pas / le 6502 plante au reset
- Verifiez que le chemin du fichier dans le
config.jsoncorrespond exactement a l'emplacement du fichier sur la carte SD (les chemins sont sensibles a la casse). - Confirmez que le fichier image ROM est present sur la carte SD — utilisez le gestionnaire de fichiers pour naviguer vers l'emplacement attendu.
- Verifier le vecteur de reset — le 6502 lit le vecteur de reset aux adresses
0xFFFCet0xFFFDa la mise sous tension. Les deux adresses doivent se trouver dans un bloc ROM ou RAM de votre carte memoire. Si elles se trouvent dans une region non mappee ou PHYSICAL, le 6502 sautera a une adresse aleatoire et plantera. - Verifiez la valeur
fileofs— un offset incorrect chargera des donnees incorrectes dans la banque ROM. - Verifiez que le champ
sizedans l'entree de la carte memoire n'est pas plus grand que le fichier image ROM.
La mise a jour OTA echoue
- Assurez-vous que vous telechargez un fichier
.bin(pas un.uf2) pour les mises a jour OTA du RP2350. - Assurez-vous que le binaire a ete compile pour la cible pico6502 (
BaseM6502) — ne telechargez pas un binaire picoZ80 sur le pico6502. - Assurez-vous que vous telechargez vers l'emplacement inactif pour preserver le firmware fonctionnel.
- Si la mise a jour OTA echoue ou resulte en une partition non demarrable, le bootloader conservera le slot actif precedent en fonctionnement — repetez le processus de telechargement.
- Pour les echecs OTA de l'ESP32, reflashez via
esptoolen utilisant la connexion USB.
Sites de reference
| Ressource | Lien |
|---|---|
| Page du projet pico6502 | /pico6502/ |
| Guide technique du pico6502 | /pico6502-technicalguide/ |
| Page du projet picoZ80 | /picoz80/ |
| Manuel d’utilisation du picoZ80 | /picoz80-usermanual/ |
| Fiche technique du RP2350 | datasheets.raspberrypi.com |
| Documentation du Pico SDK | raspberrypi.github.io/pico-sdk-doxygen |
| Reference technique ESP32-S3 | docs.espressif.com |
| Fiche technique du MOS 6502 | westerndesigncenter.com |
| Apercu du projet sur X (Twitter) | engineerswork1 |
Avis reglementaire sans fil
- Les appareils assembles ne doivent pas etre vendus, proposes a la vente, offerts ou distribues de quelque maniere que ce soit a des tiers, sauf si le produit fini a ete teste independamment et a obtenu sa propre autorisation d'equipement (ex. FCC ID, marquage CE avec evaluation d'un organisme notifie) dans la juridiction concernee.
- La construction de ce projet pour un usage personnel en quantites limitees est generalement autorisee en vertu des dispositions pour hobbyistes et usage experimental (ex. FCC § 15.23), a condition que l'appareil ne cause pas d'interferences nuisibles.
- Les exigences reglementaires varient selon les pays. Les constructeurs en dehors des Etats-Unis doivent consulter leur autorite nationale des radiofrequences pour les regles applicables.
Il est de la seule responsabilite du constructeur de s'assurer que tout appareil construit a partir de ces conceptions est conforme a toutes les reglementations de radiofrequences applicables dans sa juridiction. L'auteur fournit ces conceptions pour un usage personnel, educatif et de hobbyiste et ne garantit pas qu'un appareil construit a partir de celles-ci satisfait aux exigences reglementaires pour la distribution commerciale.