pico6502 Manuale Utente
Nota: Il progetto pico6502 e in fase di sviluppo iniziale. L'hardware e funzionale e l'interfaccia bus e operativa, ma il supporto dei driver e limitato. Questo manuale riflette lo stato attuale del progetto e sara aggiornato man mano che lo sviluppo progredisce.
Manuale utente pico6502
Panoramica della scheda
Connettori e indicatori
| Elemento | Descrizione |
|---|---|
| Connettore di debug a 6 pin | Situato sul bordo della scheda. Fornisce accesso SWD (Serial Wire Debug) all’RP2350, oltre alle linee SWO e Reset. Vedere il pinout del connettore di debug sotto. |
| Porta USB | Connettivita USB per il flashing del firmware tramite memoria di massa USB (modalita BOOTSEL) e per il bridge USB-UART verso l’ESP32. |
| Slot scheda SD | Slot scheda SD a dimensione piena gestito dall’ESP32. Contiene il config.json, le immagini ROM e gli asset del filesystem. |
Pinout del connettore di debug
| Pin | Segnale | Funzione |
|---|---|---|
| 1 | SWCLK |
Clock Serial Wire Debug (ARM SWD) |
| 2 | SWDIO |
Dati Serial Wire Debug (ARM SWD) |
| 3 | SWO |
Serial Wire Output — uscita di traccia opzionale dall’RP2350 |
| 4 | RESET |
Reset attivo basso per l’RP2350. Portare a massa per resettare. |
| 5 | GND |
Riferimento di massa |
| 6 | 3V3 |
Uscita alimentazione 3,3 V (non utilizzare come ingresso) |
NB. I pin 1, 2 e 5 sono utilizzati per il debug SWD (SWCLK, SWDIO, GND). Per il flashing iniziale dell'RP2350, utilizzare la modalita BOOTSEL attivando il segnale BOOTSEL durante l'accensione — fare riferimento al Passo 1 in Primi passi. Il Pin 3 (SWO) e opzionale e utilizzato solo quando l'uscita di traccia e abilitata nella compilazione del firmware.
Primi passi
- Flashare il bootloader dell'RP2350 tramite la modalita memoria di massa USB (BOOTSEL).
- Flashare il firmware dell'ESP32 tramite
esptool. - Preparare una scheda SD con il
config.jsone le immagini ROM necessarie. - Installare il pico6502 nel socket 6502 del computer host.
- Accendere e attendere che il pico6502 avvii il suo access point WiFi.
- Connettersi all'interfaccia web e completare la configurazione iniziale.
Passo 1 — Flashare il bootloader dell'RP2350
- Non inserire ancora il pico6502 in un computer host — collegarlo a un PC solo tramite cavo USB.
- Tenere il segnale BOOTSEL a livello basso (fare riferimento allo schema della scheda per la posizione del punto di test).
- Applicare alimentazione alla porta USB — l'RP2350 inizia l'avvio.
- Rilasciare BOOTSEL prontamente dopo che la scheda viene enumerata come dispositivo di memoria di massa USB.
- Il PC montera un'unita denominata RPI-RP2 (o simile).
- Copiare
Bootloader_<version>.uf2sull'unita montata. L'RP2350 si auto-flashera e si riavviera automaticamente.
Passo 2 — Flashare il firmware dell'ESP32
esptool. La procedura e identica a quella del picoZ80 — consultare il Manuale utente del picoZ80 — Passo 2 per tutti i dettagli. Il binario del firmware ESP32 e lo stesso per entrambe le schede.
Configurare l'ambiente Python (una sola volta):
python3 -m venv ./venv/ source ./venv/bin/activate cd $HOME/esptool
PORT al nodo di dispositivo assegnato dal vostro sistema operativo:
PORT=/dev/ttyUSB0 # Linux — modificare secondo necessita
# 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. Tutti i successivi aggiornamenti firmware dell'ESP32 possono essere eseguiti tramite la pagina web OTA (ota-esp32.htm) una volta completato il flash iniziale.
Passo 3 — Preparare la scheda SD
- Filesystem FAT32.
- Qualsiasi capacita supportata da FAT32 (fino a 32 GB raccomandato per una formattazione affidabile).
config.jsonnella radice della scheda SD — il file di configurazione principale. Consultare Configurazione di base per un esempio minimo 6502.- Directory
webfs/— gli asset dell'interfaccia web ESP32. Copiare il contenuto della directorywebfs/dal repository del progetto alla radice della scheda SD.
| Directory | Contenuto |
|---|---|
ROM/ |
Immagini ROM referenziate dal config.json (es. BBC Model B OS, BASIC) |
DSK/ |
Immagini disco per futuri driver di emulazione unita |
config.json e creare directory dal browser senza rimuovere fisicamente la scheda.
Passo 4 — Installazione nel computer host
- Spegnere il computer host e scaricare l'elettricita statica.
- Rimuovere il chip CPU 6502 esistente dal suo socket DIP-40. Si raccomanda un estrattore di chip per evitare di piegare i pin.
- Inserire la scheda SD nello slot della scheda SD del pico6502.
- Allineare il pico6502 con il socket 6502, assicurandosi che il Pin 1 del pico6502 (contrassegnato con un punto o una tacca) sia allineato con il Pin 1 del socket.
- Premere delicatamente e uniformemente il pico6502 nel socket. Assicurarsi che tutti i 40 pin siano inseriti. Non forzare — se si avverte resistenza, rimuovere e controllare l'allineamento dei pin.
- Accendere il computer host.
pico6502. Connettersi a questa rete per accedere all'interfaccia web e completare la configurazione WiFi iniziale.
NB. Il pico6502 si alimenta dalla linea 5 V sul pin VCC del socket 6502. Il convertitore buck integrato fornisce 3,3 V a tutti i componenti della scheda. Assicurarsi che l'alimentazione 5 V del computer host possa fornire almeno 500 mA — il pico6502 puo assorbire fino a 400 mA sotto carico massimo (RP2350 a 300 MHz con WiFi attivo).
Passo 5 — Accensione
config.json dalla scheda SD (o la copia Flash in cache), inizializzera la mappa di memoria e iniziera a servire i cicli bus del 6502.
L'ESP32 si avvia in parallelo e avvia il sottosistema WiFi. Se non vengono trovate credenziali di rete salvate, l'ESP32 entrera automaticamente in modalita Access Point.
Passo 6 — Connessione all'interfaccia web
pico6502 e navigare verso http://192.168.4.1. Dalla pagina del gestore WiFi, inserire le credenziali della rete domestica. Dopo il salvataggio e il riavvio dell'ESP32, il pico6502 si unira alla vostra rete e sara accessibile all'indirizzo IP configurato (predefinito http://192.168.1.192).
Configurazione WiFi
Connessione in modalita Access Point
- Sul vostro telefono, tablet o laptop, aprire le impostazioni WiFi e cercare una rete denominata pico6502 (o come configurato nel campo
esp32.wifi.ssiddel vostroconfig.jsonin modalita AP). - Connettersi alla rete pico6502. La password AP predefinita e pico6502AP (controllare le note di rilascio del firmware se e stata modificata).
- Aprire un browser e navigare verso http://192.168.4.1 — questo e l'indirizzo IP predefinito in modalita AP. Apparira l'interfaccia web del pico6502.
- Navigare alla pagina del gestore WiFi per inserire SSID e password della rete domestica.
- Cliccare Save & Connect. L'ESP32 si riavviera e si connettera alla rete domestica come client.
Modalita client (stazione)
config.json (raccomandato per facilita di accesso), navigare direttamente a:
http://192.168.1.192
Interfaccia web
webfs/ sulla scheda SD.
Dashboard (index.htm)
- Versione firmware — la versione e la data di compilazione del firmware RP2350 attualmente in esecuzione.
- Versione ESP32 — la versione del firmware del coprocessore ESP32.
- Partizione attiva — quale dei due slot firmware (1 o 2) e attualmente attivo.
- Persona attiva — la personalita macchina attualmente caricata.
- Clock RP2350 — frequenza CPU attuale in MHz.
- Clock PSRAM — frequenza clock SPI PSRAM attuale.
- Stato WiFi — modalita (AP o client), SSID e indirizzo IP assegnato.
- Scheda SD — se una scheda SD e presente e lo stato di montaggio del filesystem.
- Uptime — tempo dall'ultimo riavvio.
Editor di configurazione (config.htm)
config.json memorizzato sulla scheda SD. L'editor offre evidenziazione della sintassi e validazione JSON di base.
Per modificare la configurazione:
- Navigare alla pagina dell'editor di configurazione.
- Il
config.jsonattuale viene caricato automaticamente nell'editor. - Apportare le modifiche. L'editor evidenziera gli errori di sintassi in rosso.
- Cliccare Save per scrivere il file aggiornato sulla scheda SD.
- Cliccare Apply (o riavviare) per applicare la nuova configurazione. L'RP2350 legge la configurazione all'avvio, la minifica e la memorizza in Flash — gli avvii successivi utilizzano la copia Flash se non e presente alcuna scheda SD.
memory come blocchi FUNC. Le modifiche alle impostazioni WiFi nel blocco esp32.wifi hanno effetto al prossimo riavvio dell'ESP32.
NB. L'editor di configurazione opera direttamente sul file della scheda SD. E buona pratica conservare una copia di backup di un config.json funzionante sul PC prima di apportare modifiche significative.
File Manager (filemanager.htm)
- Caricare un'immagine ROM — navigare alla directory
ROM/e utilizzare il pulsante Upload per trasferire il file ROM dal PC. - Backup config.json — cliccare l'icona di download accanto a
config.jsonper salvare una copia sul PC. - Aggiornare gli asset web — navigare a
webfs/e caricare file HTML/CSS/JS sostitutivi per aggiornare l'interfaccia web.
Selezione persona (personality.htm)
- BBC Model B — persona BBC Micro Model B (in sviluppo). Fornisce una mappa di memoria di base con le ROM OS e BASIC. Il driver
ModelB.ce referenziato inM6502CPU.ctramite#ifdef INCLUDE_BBC_DRIVERS.
Aggiornamenti firmware (OTA)
BaseM6502_<version>.bin anziche BaseZ80_<version>.bin.
Gestore WiFi (wifimanager.htm)
- Modalita WiFi — Access Point (il pico6502 crea la propria rete) o Client (il pico6502 si unisce a una rete esistente).
- SSID — il nome della rete da creare (modalita AP) o a cui unirsi (modalita client).
- Password — la passphrase WiFi.
- Indirizzo IP / Maschera sottorete / Gateway — impostazioni IP fisse per la modalita client (raccomandate per un accesso coerente).
- DHCP — abilitare per ottenere un indirizzo automaticamente dal router; disabilitare per utilizzare le impostazioni IP fisse sopra.
Configurazione di base
config.json sulla scheda SD. Quanto segue e una configurazione minima funzionante per un host 6502 generico con RAM, ROM e una periferica VIA mappata in memoria. Consultare il Guida tecnica — Riferimento configurazione per una descrizione completa di tutte le opzioni.
Differenza chiave dal picoZ80: la chiave CPU di livello superiore e "6502" (non "z80"), e non c'e un array "io" — tutte le periferiche inclusi VIA, ACIA, ecc. sono mappate utilizzando blocchi FUNC nell'array "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 KB di RAM nel banco PSRAM 0 (pagina zero, stack e RAM generale).0x8000 – 0x8FFF— blocco FUNC da 4 KB legato all'handler di periferica virtualeVIA— un'emulazione di periferica 6522 VIA mappata in memoria.0xC000 – 0xFFFF— ROM BASIC da 8 KB caricata da/ROM/basic.romsulla scheda SD nel banco PSRAM 1.0xE000 – 0xFFFF— ROM OS da 8 KB caricata da/ROM/os.romsulla scheda SD nel banco PSRAM 2. Il vettore di reset del 6502 a0xFFFC/0xFFFDdeve trovarsi all'interno di questa regione ROM.
"io" — il 6502 non ha uno spazio di indirizzamento I/O separato. Tutta l'emulazione periferiche utilizza blocchi FUNC nella mappa di memoria.
Risoluzione dei problemi
Il computer host non si avvia
- Controllare l'orientamento — assicurarsi che il Pin 1 del pico6502 sia allineato con il Pin 1 del socket. Inserire la scheda al contrario danneggia sia il pico6502 che il computer host.
- Controllare l'inserimento — rimuovere il pico6502 e reinserirlo, assicurandosi che tutti i 40 pin siano completamente inseriti e che nessuno sia piegato sotto la scheda.
- Controllare la scheda SD — se il
config.jsonmanca o e malformato, il firmware tentera di utilizzare la configurazione Flash precedentemente in cache. Se non esiste una configurazione valida, l'RP2350 non inizializzera la mappa di memoria e l'host vedra un bus aperto. Il vettore di reset del 6502 deve trovarsi in una regione ROM valida. - Confermare che il firmware e stato flashato — provare a collegare il pico6502 via USB (senza inserirlo nell'host) e verificare che la scheda venga enumerata sul PC.
- Controllare l'alimentazione dell'host — il pico6502 puo assorbire fino a 400 mA dalla linea 5 V. Alcuni computer vintage hanno alimentatori marginali; controllare la tensione della linea 5 V sotto carico con un multimetro.
Impossibile connettersi all'interfaccia web
- Controllare la modalita WiFi — al primo avvio o dopo un reset di fabbrica, l'ESP32 si avvia in modalita AP. Connettersi prima alla rete WiFi
pico6502, poi navigare versohttp://192.168.4.1. - Controllare l'indirizzo IP configurato — se la modalita client e configurata con un IP fisso, verificare che l'IP corrisponda alla sottorete.
- Controllare la presenza della scheda SD — gli asset web in
webfs/sulla scheda SD sono necessari. Senza la scheda SD il server web non puo servire alcuna pagina. - Controllare la directory webfs — confermare che la directory
webfs/esista sulla scheda SD e contenga i file HTML/CSS/JS dal repository del progetto. - Reset di fabbrica WiFi — se le credenziali sono perse, ri-flashare il firmware ESP32 per cancellare le impostazioni NVS e ricominciare da zero.
Scheda SD non riconosciuta
- Assicurarsi che la scheda SD sia formattata come FAT32. NTFS, exFAT e FAT16 non sono supportati.
- Provare una scheda SD diversa — alcune schede ad alta capacita o alta velocita possono avere problemi di compatibilita con l'interfaccia SPI SD dell'ESP32.
- Le schede fino a 32 GB sono ben supportate. Le schede molto grandi (>32 GB) possono richiedere una formattazione speciale.
- Reinserire la scheda SD — rimuoverla e reinserirla per garantire un buon contatto.
Le immagini ROM non si caricano / il 6502 crasha al reset
- Verificare che il percorso del file nel
config.jsoncorrisponda esattamente alla posizione del file sulla scheda SD (i percorsi sono case-sensitive). - Confermare che il file immagine ROM sia presente sulla scheda SD — utilizzare il File Manager per navigare alla posizione attesa.
- Controllare il vettore di reset — il 6502 legge il vettore di reset dagli indirizzi
0xFFFCe0xFFFDall'accensione. Entrambi gli indirizzi devono trovarsi all'interno di un blocco ROM o RAM nella mappa di memoria. Se si trovano in una regione non mappata o PHYSICAL, il 6502 saltera a un indirizzo casuale e crashera. - Controllare il valore
fileofs— un offset errato carichera dati spazzatura nel banco ROM. - Verificare che il campo
sizenella voce della mappa di memoria non sia piu grande del file immagine ROM.
L'aggiornamento OTA fallisce
- Assicurarsi di caricare un file
.bin(non un.uf2) per gli aggiornamenti OTA dell'RP2350. - Assicurarsi che il binario sia stato compilato per il target pico6502 (
BaseM6502) — non caricare un binario picoZ80 sul pico6502. - Assicurarsi di caricare nello slot inattivo per preservare il firmware funzionante.
- Se l'aggiornamento OTA fallisce o risulta in una partizione non avviabile, il bootloader manterra lo slot attivo precedente in funzione — ripetere il processo di caricamento.
- Per i fallimenti OTA dell'ESP32, ri-flashare tramite
esptoolutilizzando la connessione USB.
Siti di riferimento
| Risorsa | Link |
|---|---|
| Pagina del progetto pico6502 | /pico6502/ |
| Guida tecnica del pico6502 | /pico6502-technicalguide/ |
| Pagina del progetto picoZ80 | /picoz80/ |
| Manuale utente del picoZ80 | /picoz80-usermanual/ |
| Scheda tecnica RP2350 | datasheets.raspberrypi.com |
| Documentazione Pico SDK | raspberrypi.github.io/pico-sdk-doxygen |
| Riferimento tecnico ESP32-S3 | docs.espressif.com |
| Scheda tecnica MOS 6502 | westerndesigncenter.com |
| Anteprima progetto X (Twitter) | engineerswork1 |
Avviso normativo wireless
- I dispositivi assemblati non devono essere venduti, offerti in vendita, regalati o altrimenti distribuiti a terzi a meno che il prodotto finito non sia stato testato indipendentemente e abbia ottenuto la propria autorizzazione per l'apparecchiatura (es. FCC ID, marcatura CE con valutazione di un Organismo Notificato) nella giurisdizione pertinente.
- La costruzione di questo progetto per uso personale in quantita limitate e generalmente consentita in base alle disposizioni per hobbisti e uso sperimentale (es. FCC § 15.23), a condizione che il dispositivo non causi interferenze dannose.
- I requisiti normativi variano da paese a paese. I costruttori al di fuori degli Stati Uniti dovrebbero consultare la propria autorita nazionale per le radiofrequenze per le regole applicabili.
E responsabilita esclusiva del costruttore assicurarsi che qualsiasi dispositivo costruito da questi design sia conforme a tutte le normative sulle radiofrequenze applicabili nella propria giurisdizione. L'autore fornisce questi design per uso personale, educativo e hobbistico e non garantisce che un dispositivo costruito da essi soddisfi i requisiti normativi per la distribuzione commerciale.