pico6502
Vue d'ensemble
Le pico6502 est l'equivalent du picoZ80 pour la famille 6502. Il utilise le meme materiel de carte — un microcontroleur RP2350B, 8 Mo de PSRAM, 16 Mo de Flash et un coprocesseur ESP32 — mais cible le socket MOS 6502 DIP-40 au lieu du Z80. Une fois installe dans n'importe quel ordinateur base sur le 6502, le pico6502 remplace le CPU physique et prend le controle complet et precis au cycle pres des bus d'adresses, de donnees et de controle du 6502 grace aux machines d'etat PIO du RP2350.
Comme le picoZ80, le pico6502 est entierement configure par JSON. Un fichier
config.json sur la carte SD definit la carte memoire, les images ROM et les liaisons de pilotes. Aucune recompilation n'est necessaire pour adapter la carte a un hote 6502 different ou pour modifier la disposition de la memoire. Toute la gestion s'effectue via une interface basee sur navigateur servie par l'ESP32 embarque.
- Remplacement direct du 6502
- s'installe dans n'importe quel socket 6502 DIP-40. L'hote voit un timing de bus 6502 correct depuis l'interface PIO en permanence. - Interface bus PIO precise au cycle pres
- les machines d'etat PIO du RP2350 gerent l'horloge biphasee PHI1/PHI2 du 6502, ainsi que les signaux RNW, SYNC, IRQ, NMI, RDY et RESET. - Grand espace memoire en banques
- 8 Mo de PSRAM organises en 64 banques x 64 Ko, configurables par blocs de 512 octets en types RAM, ROM, PHYSICAL ou FUNC. - Framework de peripheriques virtuels
- toute region memoire peut etre associee a une fonction handler en C, permettant la virtualisation de peripheriques tels que le 6522 VIA, le 6845 CRTC ou des E/S personnalisees. - Chargement d'images ROM
- les images ROM pour la machine hote (BIOS, moniteur, ROM de langages) sont stockees sur la carte SD et chargees dans la PSRAM au demarrage. - WiFi et gestion web
- la meme interface web Bootstrap a sept pages que le picoZ80 — tableau de bord, editeur de configuration, gestionnaire de fichiers, selection de persona, mises a jour firmware OTA, gestionnaire WiFi. - Double partition firmware
- deux emplacements firmware de 5 Mo avec prise en charge des mises a jour OTA et commutation de partition geree par le bootloader. - Mise a jour firmware USB
- le bootloader expose un pont USB pour le flashage initial sans debugger materiel.
Materiel
Le PCB du pico6502 (revision 2.2) est une carte compacte de 52 mm x 19 mm qui partage la meme conception fondamentale que le picoZ80 mais comporte une interface bus specifique au 6502 au lieu d'une interface Z80. Quatre feuillets de schemas couvrent le processeur RP2350B, le coprocesseur ESP32, l'interface bus 6502 et l'alimentation. Le hub USB present dans le picoZ80 v2.5 n'est pas monte sur la revision actuelle du pico6502. Toute la logique fonctionne en 3,3 V, avec l'interface bus concue pour les niveaux de signal 5 V du 6502.
Composants principaux
- RP2350B (Cortex-M33 double coeur)
- processeur principal cadence jusqu'a 300 MHz. Le Core 1 execute la boucle principale d'emulation du 6502 ; le Core 0 gere les E/S fichiers, l'USB et le relais ESP32. 512 Ko de SRAM interne. - Flash SPI 16 Mo
- meme disposition que le picoZ80 : bootloader, deux emplacements application de 5 Mo, deux emplacements configuration, configuration generale et table de partitions. - PSRAM 8 Mo (SPI)
- 64 banques x 64 Ko d'espace d'adressage en banques pour le 6502 emule. Les tableaux de pointeurs de blocs memoire et de fonctions E/S resident dans la PSRAM au-dessus de la zone RAM/ROM. - Coprocesseur ESP32
- WiFi, carte SD, serveur web. Communique avec le RP2350 via FSPI a 50 MHz et UART a 460,8 kbaud. - Emplacement carte SD
- FAT32, geree par l'ESP32. Stocke leconfig.json, les images ROM et les images disque. - Hub USB
- hub USB integre pour la connectivite hote et la mise a jour du firmware par pont USB. - Alimentation 3,3 V
- convertisseur buck a partir du 5 V present sur la broche VCC du DIP-40 6502.
Le materiel du pico6502 est concu dans KiCad. La revision actuelle est la v2.2. Les fichiers de schemas et de circuit imprime se trouvent dans le depot du projet sous
Feuillet 1 — Processeur RP2350B
kicad/PICO6502/.
Les quatre feuillets de schemas sont :
Affectations GPIO du RP2350B QFN-80 pour le bus 6502, Flash 16 Mo, PSRAM 8 Mo et communications ESP32. Le bus 6502 necessite A0-A15, D0-D7, PHI0/PHI1/PHI2, RNW, SYNC, IRQ, NMI, RDY et RESET — utilisant la majorite des 48 broches GPIO du RP2350B.

Module ESP32, interface carte SD, antenne et communication inter-processeur (FSPI + UART). Fonctionnellement identique a la conception du picoZ80.

Les connexions du socket DIP-40 et le reseau de resistances de l'interface bus. Contrairement au Z80, le 6502 n'a pas d'espace E/S separe — tous les peripheriques sont mappes en memoire. Tous les signaux d'adresse, de donnees et de controle sont achemines via des resistances serie vers les broches GPIO du RP2350 gerees par les machines d'etat PIO.

Convertisseur buck synchrone TLV62590BV 5 V vers 3,3 V avec filtrage d'entree/sortie. Alimente depuis la broche VCC du socket DIP-40 6502.

Fichiers source KiCad :
kicad/PICO6502/PICO6502_Schematic.pdf (PDF du schema) et kicad/PICO6502/ (projet KiCad complet).
👀 BOM interactif — pico6502 v2.2 (visualiseur de placement des composants PCB)
Architecture
Conception double coeur
L'affectation des coeurs du RP2350B est identique a celle du picoZ80 :
Core 0 — pont USB, coordination des mises a jour firmware, relais d'E/S fichiers vers l'ESP32, dispatch des commandes UART ESP32, gestion des partitions.
Core 1 — boucle principale d'emulation du 6502. Traite les FIFO PIO pour les transactions bus du 6502, resout chaque adresse par rapport a la carte memoire et dispatche vers la PSRAM, le pass-through PHYSICAL ou les handlers de peripheriques virtuels FUNC. La boucle interne s'execute depuis la SRAM du RP2350 pour une latence minimale.
La communication inter-coeurs utilise le meme passage de messages
Interface bus PIO
queue_t que le picoZ80, transportant des messages pour les changements d'images disquette/disque, les rechargements de configuration, la lecture/ecriture de fichiers et les requetes de version firmware.
L'interface bus 6502 est implementee dans
M6502.pio. Le RP2350 fournit trois blocs PIO ; le firmware 6502 utilise les trois :
- PIO 0 — Bus d'adresses et de donnees (GPIO 0-23)
- executem6502_addr(A0-A15, GPIO 0-15) etm6502_data(D0-D7, GPIO 16-23) simultanement. Les mots d'adresse sont envoyes au FIFO du Core 1 ; les donnees sont pilotees ou echantillonnees selon RNW. - PIO 1 — Signaux de controle et execution de cycle (GPIO 16-47)
- execute le sequenceur de cycle (m6502_cycle), la recuperation d'opcode (m6502_fetch), la lecture/ecriture memoire (m6502_read,m6502_write), la detection IRQ (m6502_irq), la detection NMI (m6502_nmi) et la detection Set Overflow (m6502_so). - PIO 2 — Generation d'horloge (GPIO 16-47)
- executem6502_clock_6502, qui genere les horloges biphasees non chevauchantes PHI1 et PHI2 a partir d'une entree PHI0 externe, garantissant un timing bus 6502 correct independamment de la planification du Core 1.
M6502.pio est :
| Programme | Fonction |
|---|---|
m6502_clock_6502 |
Genere les horloges biphasees PHI1/PHI2 a partir de PHI0 externe. |
m6502_addr |
Produit l’adresse 16 bits (A0-A15) et signale le debut de cycle (IRQ 0). |
m6502_data |
Pilote ou echantillonne D0-D7 (IRQ 1), avec controle tri-state. |
m6502_irq |
Detecte l’assertion IRQ (drapeau IRQ 5). |
m6502_nmi |
Detecte l’assertion NMI (drapeau IRQ 4). |
m6502_so |
Detecte l’assertion de la broche Set Overflow (SO) (drapeau IRQ 6). |
m6502_cycle |
Sequenceur de cycle bus de niveau superieur ; IRQ 7 signale la sortie de la boucle d’execution. |
m6502_fetch |
Cycle bus de recuperation d’opcode (PHI2 + RNW = lecture). |
m6502_read |
Cycle bus de lecture memoire. |
m6502_write |
Cycle bus d’ecriture memoire. |
Les machines d'etat se synchronisent via les drapeaux IRQ PIO : IRQ 0 (adresse/debut de cycle), IRQ 1 (phase donnees), IRQ 4 (NMI), IRQ 5 (IRQ), IRQ 6 (SO), IRQ 7 (sortie de boucle d'execution). La difference cle par rapport a l'interface Z80 est l'horloge biphasee du 6502 — PHI1 et PHI2 sont non chevauchantes ; le bus d'adresses est valide sur le front montant de PHI1 et les donnees sont presentees ou echantillonnees avant le front descendant de PHI2. Dedier entierement PIO 2 a la generation d'horloge signifie que le timing du 6502 est toujours correct quelle que soit l'activite du Core 1.
Modele memoire
Le modele memoire du 6502 est structurellement identique au modele Z80 mais sans espace d'E/S separe — parce que le 6502 n'a pas d'equivalent IORQ, tous les registres de peripheriques apparaissent dans la carte memoire de 64 Ko. La meme architecture a trois niveaux s'applique :
Niveau 1 — SRAM du RP2350 : tableau de pointeurs de blocs de 128 entrees pour un dispatch O(1) par bloc de 512 octets.
Niveau 2 — PSRAM (8 Mo) : 64 banques x 64 Ko d'images RAM/ROM et tableaux de pointeurs de fonctions.
Niveau 3 — Flash (16 Mo) : firmware, images ROM, JSON de configuration minifie. Types de blocs memoire disponibles pour la carte memoire du 6502 :
Niveau 2 — PSRAM (8 Mo) : 64 banques x 64 Ko d'images RAM/ROM et tableaux de pointeurs de fonctions.
Niveau 3 — Flash (16 Mo) : firmware, images ROM, JSON de configuration minifie. Types de blocs memoire disponibles pour la carte memoire du 6502 :
| Type | Description |
|---|---|
PHYSICAL |
Pass-through vers le materiel reel de l’hote. |
PHYSICAL_VRAM |
RAM video de l’hote avec etats d’attente. |
RAM |
Lecture/ecriture — sauvegardee dans une banque PSRAM. |
ROM |
Lecture seule — sauvegardee dans une banque PSRAM. |
FUNC |
Peripherique virtuel — handler C appele a chaque acces. Utilise pour toute l’emulation de peripheriques, puisque le 6502 n’a pas d’espace E/S. |
PTR |
Redirection par octet. |
Identique a la disposition du picoZ80 :
| Partition | Plage d’adresses | Taille | Contenu |
|---|---|---|---|
| Bootloader | 0x10000000–0x1001FFFF |
128 Ko | Pont USB, mise a jour firmware, selecteur de partition |
| App Slot 1 | 0x10020000–0x1051FFFF |
5 Mo | Firmware principal 6502 (partition 1) |
| App Slot 2 | 0x10520000–0x10A1FFFF |
5 Mo | Firmware principal 6502 (partition 2) |
| App Config 1 | 0x10A20000–0x10C9FFFF |
2,5 Mo | Images ROM + JSON de configuration minifie (slot 1) |
| App Config 2 | 0x10CA0000–0x10F1FFFF |
2,5 Mo | Images ROM + JSON de configuration minifie (slot 2) |
| General Config | 0x10F20000–0x10FFEFFF |
892 Ko | Parametres principaux, espace de travail |
| Partition Table | 0x10FFF000–0x11000000 |
4 Ko | Slot actif, checksums, metadonnees |
Instructions de compilation
Le pico6502 utilise le meme systeme de compilation et la meme structure de repertoires que le picoZ80. Veuillez suivre les instructions de compilation du picoZ80 pour la procedure complete de configuration — creation du repertoire racine, definition de
Cloner le projet
PICO_PATH, execution de get_and_build_sdk.sh et configuration de l'alias Docker pour ESP-IDF. Les differences specifiques au pico6502 sont notees ci-dessous.
Le firmware du pico6502 ne necessite pas la bibliotheque d'emulateur Zeta Z80. Aucun clone de projects/Z80 n'est necessaire.
mkdir -p <root>/projects
cd <root>/projects
git clone <tzpuPico-repo-url> tzpuPico
Le meme script
build_tzpuPico.sh est utilise. Assurez-vous que PICO_PATH est correctement defini en haut du script, puis executez depuis la racine :
cd <root>
# Compilation release standard
./build_tzpuPico.sh
# Compilation debug
./build_tzpuPico.sh DEBUG
# Compilation complete incluant le firmware ESP32 via Docker
./build_tzpuPico.sh ALL
cd <root>/projects/tzpuPico/esp32
idf54 build
Voir les instructions de compilation du picoZ80 pour la definition de l'alias Docker
Flashage
idf54.
La procedure de flashage est identique a celle du picoZ80 — flashage initial du RP2350 via stockage de masse USB, flashage initial de l'ESP32 via esptool, et mises a jour subsequentes via les pages web OTA. Voir la section Flashage du picoZ80 pour tous les details, y compris la commande esptool et les notes sur les revisions de carte.
Debogage
Le debogage du pico6502 suit la meme procedure que la section Debogage du picoZ80 — referez-vous-y pour la description complete des connexions materielles, la configuration d'OpenOCD et l'initialisation GDB globale. Les seules differences par rapport au picoZ80 sont le repertoire de compilation du firmware principal (
RP2350 — Debogage SWD
BaseM6502 au lieu de BaseZ80) et l'entree add-auto-load-safe-path dans ~/.gdbinit.
Connectez une sonde CMSIS-DAP aux broches
SWCLK (broche 1), SWDIO (broche 2) et GND (broche 5) du connecteur de debogage 6 broches. Le pico6502 utilise la meme cible OpenOCD personnalisee rp2350_tzpu.cfg que le picoZ80 — voir la section Debogage du picoZ80 pour le contenu complet du fichier. Installez-le une fois, puis demarrez OpenOCD :
sudo cp rp2350_tzpu.cfg /usr/local/share/openocd/scripts/target/
openocd -f interface/cmsis-dap.cfg -f target/rp2350_tzpu.cfg -c "adapter speed 5000"
Ajoutez ce qui suit a
~/.gdbinit (ajustez les chemins en absolu si necessaire) :
set history save on set history filename ~/.gdb_history set history size 65536 add-auto-load-safe-path build/bin/model/BaseM6502/.gdbinit:build/bin/model/Bootloader/.gdbinitDebogage du Bootloader
# Core 0 cd build/bin/model/Bootloader cp ../../../../.gdbinit.bootloader.3333 .gdbinit gdb-multiarch Bootloader.elf # Core 1 (terminal separe) cd build/bin/model/Bootloader cp ../../../../.gdbinit.bootloader.3334 .gdbinit gdb-multiarch Bootloader.elfDebogage du firmware principal
# Core 0 cd build/bin/model/BaseM6502 cp ../../../../.gdbinit.3333 .gdbinit gdb-multiarch BaseM6502_0x10020000.elf # Core 1 (terminal separe) cd build/bin/model/BaseM6502 cp ../../../../.gdbinit.3334 .gdbinit gdb-multiarch BaseM6502_0x10020000.elfESP32 — Debogage USB
Connectez un cable USB au port USB ESP32 de la carte pico6502. L'interface USB-JTAG integree de l'ESP32-S3 ne necessite aucune sonde externe. Demarrez OpenOCD puis lancez le GDB Xtensa :
openocd -f board/esp32s3-builtin.cfg
xtensa-esp32s3-elf-gdb esp32/build/main.elf (gdb) target extended-remote :3333
Configuration (JSON)
Le pico6502 utilise le meme mecanisme de configuration JSON que le picoZ80. La cle de niveau superieur est
"rp2350", avec une section "core" pour les parametres de fonctionnement du RP2350. La section specifique au CPU utilise la cle "6502" (au lieu de "z80"), et puisque le 6502 n'a pas d'espace E/S separe, il n'y a pas de tableau "io" — tous les mappages de peripheriques apparaissent dans le tableau "memory" sous forme de blocs FUNC.
{
"esp32": {
"core": {
"device": "6502",
"mode": 0
},
"wifi": {
"override": 1,
"wifimode": "client",
"ssid": "MyNetwork",
"password": "MyPassword",
"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": [ ... ],
"drivers": [ ... ]
}
}
}
L'objet de niveau superieur
esp32.core
esp32 configure le coprocesseur ESP32. Il contient deux sous-objets : core et wifi.
| Cle | Type | Description |
|---|---|---|
device |
string | Type de CPU — indique a l’ESP32 quelle personnalite processeur utiliser. Valeurs valides : "Z80" (picoZ80), "6502" (pico6502), "6512" (pico6512). |
mode |
integer | Mode de demarrage par defaut : 0 = mode client (station), 1 = mode Point d’Acces. Persiste dans le NVS. |
L'objet
wifi injecte les identifiants WiFi et les parametres reseau depuis config.json, remplacant ce qui est stocke dans le NVS. Definissez override a 0 pour ignorer ce bloc et s'appuyer sur les parametres NVS precedemment persistes.
| Cle | Type | Description |
|---|---|---|
override |
0/1 | Interrupteur principal. 1 = appliquer tous les parametres ci-dessous ; 0 = ignorer ce bloc et utiliser les parametres NVS persistes. |
wifimode |
string | "ap" pour le mode Point d’Acces ; "client" pour le mode client/station. |
ssid |
string | Nom du reseau WiFi a creer (AP) ou rejoindre (client). |
password |
string | Mot de passe WiFi. |
ip |
string | Adresse IP fixe (ex. "192.168.1.192"). |
netmask |
string | Masque de sous-reseau (ex. "255.255.255.0"). |
gateway |
string | Adresse de la passerelle par defaut. |
dhcp |
0/1 | Mode client uniquement. 1 = DHCP ; 0 = utiliser les parametres fixes ip/netmask/gateway. |
webfs |
string | Repertoire racine du systeme de fichiers web de remplacement sur la carte SD (par defaut "webfs"). |
persist |
0/1 | 1 = ecrire les parametres resolus dans le NVS ; 0 = appliquer pour cette session uniquement. |
| Cle | Type | Description |
|---|---|---|
cpufreq |
integer | Frequence d’horloge systeme du RP2350 en Hz (ex. 300000000 pour 300 MHz). |
psramfreq |
integer | Frequence d’horloge SPI de la PSRAM en Hz (ex. 133000000 pour 133 MHz). |
voltage |
float | Tension du coeur du RP2350 (ex. 1.10). |
Parce que le 6502 est une architecture a E/S mappees en memoire, tous les peripheriques apparaissent dans le tableau
memory. Utilisez le type FUNC pour toute plage d'adresses qui correspond a un handler de peripherique virtuel.
| Cle | Type | Description |
|---|---|---|
enable |
0/1 | Si cette entree est active. |
addr |
hex string | Adresse de debut dans l’espace d’adressage du 6502. |
size |
hex string | Taille de la region. |
type |
string | PHYSICAL, PHYSICAL_VRAM, RAM, ROM, FUNC, PTR. |
bank |
integer | Numero de banque PSRAM pour les types RAM/ROM. |
task |
string | Identifiant de tache optionnel pour les blocs de type FUNC. |
file |
string | Chemin sur la carte SD vers une image ROM a charger au demarrage. |
"memory": [
{
"enable": 1,
"addr": "0xE000",
"size": "0x2000",
"type": "ROM",
"bank": 0,
"task": "",
"file": "/ROM/host_bios.rom"
},
{
"enable": 1,
"addr": "0x0000",
"size": "0xE000",
"type": "RAM",
"bank": 0,
"task": "",
"file": ""
},
{
"enable": 1,
"addr": "0xC000",
"size": "0x0010",
"type": "FUNC",
"bank": 0,
"task": "via6522",
"file": ""
}
]
Le modele de pilote du 6502 est plus simple que celui du Z80. Chaque entree de pilote charge une ou plusieurs images ROM dans la PSRAM au demarrage. Il n'y a pas de sous-tables de remappage d'adresses ou de remappage E/S ; toute la disposition memoire est definie dans le tableau
memory.
| Cle | Type | Description |
|---|---|---|
enable |
0/1 | Si cette entree de pilote est active. |
name |
string | Nom descriptif pour cette entree de chargement ROM. |
rom |
array | Images ROM a charger dans la PSRAM au demarrage. |
Entree rom[] :
| Cle | Type | Description |
|---|---|---|
enable |
0/1 | Si cette image ROM est chargee. |
file |
string | Chemin sur la carte SD vers le binaire ROM. |
loadaddr |
array | Descripteurs d’adresses de chargement. |
Entree loadaddr[] :
| Cle | Type | Description |
|---|---|---|
enable |
0/1 | Si cette entree d’adresse de chargement est active. |
position |
integer | Index dans le file (pour les fichiers multi-ROM). |
addr |
hex string | Adresse de destination dans l’espace d’adressage du 6502. |
bank |
integer | Banque PSRAM dans laquelle charger. |
size |
hex string | Nombre d’octets a charger. |
"drivers": [
{
"enable": 1,
"name": "BIOS",
"rom": [
{
"enable": 1,
"file": "/ROM/host_bios.rom",
"loadaddr": [
{
"enable": 1,
"position": 0,
"addr": "0xE000",
"bank": 0,
"size": "0x2000"
}
]
}
]
},
{
"enable": 1,
"name": "CharROM",
"rom": [
{
"enable": 1,
"file": "/ROM/charrom.bin",
"loadaddr": [
{
"enable": 1,
"position": 0,
"addr": "0xB800",
"bank": 0,
"size": "0x0800"
}
]
}
]
}
]
Une configuration minimale pour un hote 6502 avec une zone RAM de 2 Ko pour la page zero/pile, 48 Ko de RAM generale, une ROM BIOS de 8 Ko et un handler de peripherique VIA a
0xC000 :
{
"rp2350": {
"core": {
"cpufreq": 300000000,
"psramfreq": 133000000,
"voltage": 1.10
},
"6502": {
"memory": [
{ "enable":1, "addr":"0x0000", "size":"0x0200",
"type":"RAM", "bank":0, "task":"", "file":"" },
{ "enable":1, "addr":"0x0200", "size":"0xBE00",
"type":"RAM", "bank":0, "task":"", "file":"" },
{ "enable":1, "addr":"0xC000", "size":"0x0010",
"type":"FUNC", "bank":0, "task":"via6522", "file":"" },
{ "enable":1, "addr":"0xE000", "size":"0x2000",
"type":"ROM", "bank":0, "task":"", "file":"/ROM/host_bios.rom" }
],
"drivers": [
{
"enable":1, "name":"BIOS",
"rom": [
{ "enable":1, "file":"/ROM/host_bios.rom",
"loadaddr":[{ "enable":1, "position":0,
"addr":"0xE000", "bank":0, "size":"0x2000" }] }
]
}
]
}
}
}
Interface web
L'interface web du pico6502 est identique en structure a l'interface du picoZ80 — sept pages Bootstrap 4 servies par l'ESP32 a
http://<device-ip>/. Connectez-vous au point d'acces WiFi de la carte au premier demarrage, puis configurez le mode client via le gestionnaire WiFi pour rejoindre votre reseau.
| Page | URL | Fonction |
|---|---|---|
| Tableau de bord | / |
Etat du systeme en temps reel : processeur, peripherique, version firmware, partition active. |
| Editeur de configuration | /config.htm |
Editeur config.json dans le navigateur avec coloration syntaxique et rechargement sans redemarrage. |
| Gestionnaire de fichiers | /filemanager.htm |
Navigateur de fichiers de la carte SD : telechargement montant/descendant, renommage, suppression. Transferez les images ROM et disque sans retirer la carte SD. |
| Selection de persona | /personality.htm |
Selection de la persona machine active par partition firmware. |
| OTA ESP32 | /ota-esp32.htm |
Telechargement du firmware ESP32 via WiFi ; telechargement de l’archive FilePack versionnee du systeme de fichiers web sur la carte SD. |
| OTA RP2350 | /ota-rp2350.htm |
Telechargement du firmware RP2350 via WiFi ; affichage et commutation de la partition active. |
| Gestionnaire WiFi | /wifimanager.htm |
Configuration du SSID WiFi, du mot de passe et du mode (AP ou client). |
Voir la page picoZ80 pour une description detaillee de chaque page de l'interface web — l'implementation du pico6502 est identique.
Sites de reference
Le tableau ci-dessous contient tous les sites references dans la conception et la programmation du pico6502.
| Site | Langue | Description |
|---|---|---|
| RP2350 Datasheet | Anglais | Reference technique officielle et fiche technique du Raspberry Pi RP2350. |
| Pico SDK | Anglais | SDK C/C++ Raspberry Pi Pico — systeme de compilation et couche d'abstraction materielle utilises par le firmware du pico6502. |
| MOS 6502 Datasheet | Anglais | Fiche technique originale du MPU MOS Technology 6502 — timing bus, descriptions des broches et caracteristiques electriques. |
| ESP-IDF | Anglais | Framework de developpement IoT Espressif utilise pour le firmware du coprocesseur ESP32. |
| 6502 Software Repository | Anglais | Depot communautaire de logiciels et d'images ROM 6502. |
Manuels et fiches techniques
Le tableau ci-dessous contient toutes les fiches techniques et manuels references dans la conception et la programmation du pico6502.
| Fiche technique | Langue | Description |
|---|---|---|
| RP2350 | Anglais | Fiche technique du microcontroleur Raspberry Pi RP2350. |
| ESP32-S3 | Anglais | Fiche technique du SoC Espressif ESP32-S3 — coprocesseur WiFi/BT de la carte pico6502. |
| APS6404L PSRAM | Anglais | Fiche technique de la PSRAM SPI 8 Mo — la RAM etendue principale utilisee pour les banques memoire. |
| W25Q128 Flash | Anglais | Fiche technique de la Flash SPI NOR Winbond 16 Mo — stocke le firmware et les images ROM. |
| TLV62590 | Anglais | Convertisseur buck synchrone Texas Instruments 5 V vers 3,3 V alimentant le pico6502 depuis la broche VCC du DIP-40 6502. |
| CH334F | Anglais | Controleur hub USB 2.0 4 ports CH334F — fournit la fonctionnalite hub USB pour les mises a jour firmware. |
Apercu du projet
Les projets picoZ80 et pico6502 ont ete presentes pour la premiere fois sur X (anciennement Twitter) :
https://x.com/engineerswork1/status/1953171627065188841
Videos de demonstration
Des videos de demonstration pour le pico6502 seront ajoutees au fur et a mesure de la maturation du projet. Voir les Videos de demonstration du picoZ80 pour des exemples de la plateforme partagee en action.
Restriction d'usage commercial
Aucune utilisation commerciale n'est autorisee sans autorisation ecrite expresse.
La conception materielle du pico6502 (schemas, circuit imprime, fichiers KiCad), le firmware et tous les logiciels associes sont mis a disposition pour un usage personnel, educatif et non commercial uniquement. Aucune partie de cette conception — incluant mais sans s'y limiter les dessins de PCB, la nomenclature, les binaires firmware, le code source ou la documentation — ne peut etre utilisee, reproduite, fabriquee, vendue ou incorporee dans un produit ou service commercial sans l'autorisation ecrite expresse de l'auteur (Philip D. Smart).
Pour demander une licence commerciale ou discuter des utilisations autorisees, veuillez contacter l'auteur via le site web eaw.app.
Remerciements
Le projet pico6502 s'appuie sur le travail de plusieurs individus et projets open-source. Leurs contributions sont chaleureusement reconnues.
- Manuel Sainz de Baranda y Goni
Auteur de la bibliotheque d'emulation CPU Z80 en langage C Z80 (github.com/redcode/Z80), utilisee par le projet compagnon picoZ80. La meme philosophie d'emulation haute precision et l'infrastructure firmware partagee influencent la conception du pico6502, et le travail de Manuel est chaleureusement reconnu en tant que membre de la famille elargie du projet. - Raspberry Pi Ltd
Auteurs du Pico SDK et du materiel RP2350. L'assembleur PIO, le SDK C, l'integration de la chaine d'outils CMake et le silicium RP2350B rendent possible l'interface bus 6502 precise au cycle pres. - Espressif Systems
Auteurs du framework ESP-IDF et du materiel ESP32. Le coprocesseur ESP32, la pile WiFi, la bibliotheque OTA et le framework de stockage NVS sous-tendent l'interface de gestion web. - Philip Smart
Conception materielle (schemas KiCad et circuit imprime), firmware PIO du RP2350, application web ESP32, systeme de configuration JSON et toute la documentation du projet. - Grok (xAI)
Assistant IA qui a fourni une aide precieuse lors du debogage des machines d'etat PIO — en particulier pour le diagnostic de cas limites de timing et de problemes d'interaction bus precis au cycle pres dans les programmes PIO du RP2350. - Claude (Anthropic)
Assistant IA contribuant a ce projet dans plusieurs domaines : redaction et structuration de la documentation du projet, analyse de l'interface FSPI/UART entre le RP2350 et l'ESP32 et recommandations d'amelioration du firmware, et assistance continue au developpement du firmware.
Licences
Le projet pico6502 est compose de plusieurs composants, chacun couvert par sa propre licence :
En resume : le firmware et les logiciels que vous compilez a partir du code source de ce projet sont open-source sous la GPL v3 ; les conceptions materielles et la documentation sont sous licence CC BY-NC-SA 4.0 (usage non commercial uniquement — licence commerciale disponible sur demande) ; les bibliotheques tierces conservent leurs propres licences comme indique ci-dessus. Voir les fichiers
| Composant | Licence |
|---|---|
| Firmware RP2350 du pico6502 (PIO, sources C) | GNU General Public License v3 |
| Firmware ESP32 du pico6502 et interface web | GNU General Public License v3 |
| Fichiers de conception materielle KiCad (schemas, PCB, Gerbers) | Creative Commons BY-NC-SA 4.0 |
| Documentation et guides d'utilisation | Creative Commons BY-NC-SA 4.0 |
| Raspberry Pi Pico SDK | BSD 3-Clause |
| Framework ESP-IDF | Apache License 2.0 |
| Bootstrap 4 (interface web) | MIT License |
LICENSE et NOTICE dans le depot pour les details complets.
Conditions de licence
Copyright © 2019–2026 Philip Smart. Tous droits reserves.
Conceptions materielles — CC BY-NC-SA 4.0
Toutes les conceptions materielles (schemas KiCad, circuits imprimes, fichiers de fabrication Gerber, nomenclatures) sont sous licence Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. Vous etes libre de partager et d'adapter les conceptions a des fins non commerciales uniquement, a condition de citer l'auteur de maniere appropriee et de distribuer toute modification sous la meme licence. La fabrication ou la vente commerciale necessite une licence separee — veuillez contacter info@eaw.app. Firmware et logiciels — GNU GPL v3
Le firmware et le code source logiciel sont des logiciels libres sous la GNU General Public License v3. Vous pouvez redistribuer et modifier le code selon les termes de la GPL v3. Toute modification distribuee doit egalement etre sous licence GPL v3 avec le code source rendu disponible. Marques et attribution
Les noms picoZ80, pico6502 et engineers@work sont des marques de Philip Smart. Vous ne pouvez pas utiliser ces noms pour promouvoir des produits derives sans autorisation ecrite. Vous ne pouvez pas supprimer ou modifier les avis de copyright, l'attribution a l'auteur ou les credits de l'ecran de demarrage. Le re-branding de ce projet et sa presentation comme votre propre travail sont expressement interdits. Voir le fichier
Si vous etes un fabricant ou un distributeur interesse par la production de cartes picoZ80 ou pico6502 pour la vente commerciale, veuillez contacter : info@eaw.app. L'utilisation personnelle, educative et de hobbyiste/club est toujours autorisee sous les licences open-source ci-dessus. Les textes complets des licences sont inclus dans le depot sous les noms
Toutes les conceptions materielles (schemas KiCad, circuits imprimes, fichiers de fabrication Gerber, nomenclatures) sont sous licence Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. Vous etes libre de partager et d'adapter les conceptions a des fins non commerciales uniquement, a condition de citer l'auteur de maniere appropriee et de distribuer toute modification sous la meme licence. La fabrication ou la vente commerciale necessite une licence separee — veuillez contacter info@eaw.app. Firmware et logiciels — GNU GPL v3
Le firmware et le code source logiciel sont des logiciels libres sous la GNU General Public License v3. Vous pouvez redistribuer et modifier le code selon les termes de la GPL v3. Toute modification distribuee doit egalement etre sous licence GPL v3 avec le code source rendu disponible. Marques et attribution
Les noms picoZ80, pico6502 et engineers@work sont des marques de Philip Smart. Vous ne pouvez pas utiliser ces noms pour promouvoir des produits derives sans autorisation ecrite. Vous ne pouvez pas supprimer ou modifier les avis de copyright, l'attribution a l'auteur ou les credits de l'ecran de demarrage. Le re-branding de ce projet et sa presentation comme votre propre travail sont expressement interdits. Voir le fichier
NOTICE dans le depot pour les details complets.
Licence commercialeSi vous etes un fabricant ou un distributeur interesse par la production de cartes picoZ80 ou pico6502 pour la vente commerciale, veuillez contacter : info@eaw.app. L'utilisation personnelle, educative et de hobbyiste/club est toujours autorisee sous les licences open-source ci-dessus. Les textes complets des licences sont inclus dans le depot sous les noms
LICENSE, LICENSE-HARDWARE.txt et LICENSE-SOFTWARE.txt.
Avis reglementaire sans fil
Cet appareil incorpore un module sans fil ESP32-S3-PICO-1 qui emet dans la bande ISM 2,4 GHz, ce qui en fait un emetteur intentionnel au regard des reglementations de radiofrequences dans le monde entier (y compris FCC Part 15 Subpart C aux Etats-Unis et la Directive Equipements Radio 2014/53/EU dans l'Union europeenne).
Bien que le module ESP32-S3-PICO-1 lui-meme possede des certifications reglementaires prealables (FCC, CE et autres), ces certifications au niveau du module ne s'etendent pas automatiquement a un produit fini qui incorpore le module. L'exemption de module pre-certifie permet aux hobbyistes individuels de construire un nombre limite d'appareils pour un usage personnel, experimental ou educatif sans obtenir d'autorisation d'equipement separee.
Limitations importantes
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.
- 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.