pico6502 Benutzerhandbuch
Hinweis: Das pico6502-Projekt befindet sich in einer fruehen Entwicklungsphase. Die Hardware ist funktionsfaehig und das Bus-Interface ist betriebsbereit, aber die Treiberunterstuetzung ist begrenzt. Dieses Handbuch spiegelt den aktuellen Stand des Projekts wider und wird mit dem Fortschritt der Entwicklung aktualisiert.
pico6502 Benutzerhandbuch
Platinenuebersicht
Anschluesse und Anzeigen
| Element | Beschreibung |
|---|---|
| 6-Pin Debug-Header | Am Platinenrand platziert. Bietet SWD (Serial Wire Debug)-Zugang zum RP2350 sowie SWO- und Reset-Leitungen. Siehe Debug-Header-Pinbelegung unten. |
| USB-Anschluss | USB-Konnektivitaet zum Firmware-Flashen ueber USB-Massenspeicher (BOOTSEL-Modus) und fuer USB-UART-Bruecke zum ESP32. |
| SD-Kartenslot | Vollformatiger SD-Kartenslot, verwaltet vom ESP32. Enthaelt config.json, ROM-Images und Dateisystem-Assets. |
Debug-Header-Pinbelegung
| Pin | Signal | Funktion |
|---|---|---|
| 1 | SWCLK |
Serial Wire Debug-Takt (ARM SWD) |
| 2 | SWDIO |
Serial Wire Debug-Daten (ARM SWD) |
| 3 | SWO |
Serial Wire Output — optionale Trace-Ausgabe vom RP2350 |
| 4 | RESET |
Aktiv-Low-Reset fuer den RP2350. Auf Low ziehen zum Zuruecksetzen. |
| 5 | GND |
Massereferenz |
| 6 | 3V3 |
3,3V Spannungsausgang (nicht als Eingang verwenden) |
Hinweis: Pins 1, 2 und 5 werden fuer SWD-Debugging verwendet (SWCLK, SWDIO, GND). Fuer das initiale RP2350-Flashen verwenden Sie den BOOTSEL-Modus, indem Sie das BOOTSEL-Signal beim Einschalten aktivieren — siehe Schritt 1 unter Erste Schritte. Pin 3 (SWO) ist optional und wird nur verwendet, wenn die Trace-Ausgabe im Firmware-Build aktiviert ist.
Erste Schritte
- RP2350-Bootloader ueber USB-Massenspeichermodus (BOOTSEL) flashen.
- ESP32-Firmware ueber
esptoolflashen. - SD-Karte mit
config.jsonund den benoetigten ROM-Images vorbereiten. - pico6502 im 6502-Sockel Ihres Host-Computers installieren.
- Einschalten und warten, bis der pico6502 seinen WiFi-Access-Point startet.
- Mit der Weboberflaeche verbinden und die Erstkonfiguration abschliessen.
Schritt 1 — RP2350-Bootloader flashen
- Stecken Sie den pico6502 noch nicht in einen Host-Computer — verbinden Sie ihn nur per USB-Kabel mit einem PC.
- Halten Sie das BOOTSEL-Signal auf Low (siehe Schaltplan Ihrer Platine fuer die Position des Testpunkts).
- Versorgen Sie den USB-Port mit Strom — der RP2350 beginnt zu booten.
- Lassen Sie BOOTSEL los, sobald die Platine als USB-Massenspeichergeraet erkannt wird.
- Am PC wird ein Laufwerk mit der Bezeichnung RPI-RP2 (oder aehnlich) eingebunden.
- Kopieren Sie
Bootloader_<Version>.uf2auf das eingebundene Laufwerk. Der RP2350 flasht sich selbst und startet automatisch neu.
Schritt 2 — ESP32-Firmware flashen
esptool geflasht. Das Verfahren ist identisch mit dem picoZ80 — siehe das picoZ80 Benutzerhandbuch — Schritt 2 fuer alle Details. Die ESP32-Firmware-Binaerdatei ist fuer beide Platinen identisch.
Python-Umgebung einrichten (nur einmal):
python3 -m venv ./venv/ source ./venv/bin/activate cd $HOME/esptool
PORT an den von Ihrem Betriebssystem zugewiesenen Geraeteknoten an:
PORT=/dev/ttyUSB0 # Linux — nach Bedarf anpassen
# 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
Hinweis: Alle nachfolgenden ESP32-Firmware-Updates koennen ueber die OTA-Webseite (ota-esp32.htm) durchgefuehrt werden, sobald das initiale Flashen abgeschlossen ist.
Schritt 3 — SD-Karte vorbereiten
- FAT32-Dateisystem.
- Jede von FAT32 unterstuetzte Kapazitaet (bis 32GB wird fuer zuverlaessige Formatierung empfohlen).
config.jsonim SD-Karten-Stammverzeichnis — die Hauptkonfigurationsdatei. Siehe Grundkonfiguration fuer ein minimales 6502-Beispiel.webfs/-Verzeichnis — die ESP32-Weboberflaechen-Assets. Kopieren Sie den Inhalt deswebfs/-Verzeichnisses aus dem Projektrepository auf die SD-Karte.
| Verzeichnis | Inhalt |
|---|---|
ROM/ |
ROM-Images, die in config.json referenziert werden (z.B. BBC Model B OS, BASIC) |
DSK/ |
Disk-Images fuer zukuenftige Laufwerks-Emulationstreiber |
config.json bearbeiten und Verzeichnisse ueber den Browser erstellen, ohne die Karte physisch zu entnehmen.
Schritt 4 — Im Host-Computer installieren
- Host-Computer ausschalten und statische Aufladung ableiten.
- Den vorhandenen 6502-CPU-Chip aus seinem DIP-40-Sockel entfernen. Ein Chip-Extraktionswerkzeug wird empfohlen, um Verbiegen der Pins zu vermeiden.
- SD-Karte in den pico6502-SD-Kartenslot einsetzen.
- Den pico6502 am 6502-Sockel ausrichten und sicherstellen, dass Pin 1 des pico6502 (mit einem Punkt oder einer Kerbe markiert) mit Pin 1 des Sockels uebereinstimmt.
- Den pico6502 vorsichtig und gleichmaessig in den Sockel druecken. Sicherstellen, dass alle 40 Pins sitzen. Nicht forcieren — bei Widerstand entfernen und Pinausrichtung pruefen.
- Host-Computer einschalten.
pico6502. Verbinden Sie sich mit diesem Netzwerk, um auf die Weboberflaeche zuzugreifen und die WiFi-Erstkonfiguration abzuschliessen.
Hinweis: Der pico6502 bezieht Strom von der 5V-Versorgung am VCC-Pin des 6502-Sockels. Der integrierte Abwaertswandler liefert 3,3V an alle Platinenkomponenten. Stellen Sie sicher, dass die 5V-Versorgung Ihres Host-Computers mindestens 500mA liefern kann — der pico6502 kann unter Spitzenlast (RP2350 bei 300MHz mit aktivem WiFi) bis zu 400mA aufnehmen.
Schritt 5 — Einschalten
config.json von der SD-Karte (oder der gecachten Flash-Kopie), initialisiert die Speicherbelegung und beginnt mit der Bedienung der 6502-Buszyklen.
Der ESP32 bootet parallel und startet das WiFi-Subsystem. Wenn keine gespeicherten Netzwerk-Anmeldedaten gefunden werden, wechselt der ESP32 automatisch in den Access-Point-Modus.
Schritt 6 — Mit der Weboberflaeche verbinden
pico6502-WiFi-Access-Point und navigieren Sie zu http://192.168.4.1. Geben Sie auf der WiFi-Manager-Seite Ihre Heimnetzwerk-Anmeldedaten ein. Nach dem Speichern und Neustart des ESP32 tritt der pico6502 Ihrem Netzwerk bei und ist unter der konfigurierten IP-Adresse erreichbar (Standard: http://192.168.1.192).
WiFi-Einrichtung
Verbindung im Access-Point-Modus
- Oeffnen Sie auf Ihrem Telefon, Tablet oder Laptop die WiFi-Einstellungen und suchen Sie nach einem Netzwerk mit dem Namen pico6502 (oder wie im Feld
esp32.wifi.ssidIhrerconfig.jsonkonfiguriert, wenn im AP-Modus). - Verbinden Sie sich mit dem pico6502-Netzwerk. Das Standard-AP-Passwort ist pico6502AP (pruefen Sie die Firmware-Release-Notes, ob sich dies geaendert hat).
- Oeffnen Sie einen Browser und navigieren Sie zu http://192.168.4.1 — dies ist die Standard-IP-Adresse im AP-Modus. Die pico6502-Weboberflaeche wird angezeigt.
- Navigieren Sie zur WiFi-Manager-Seite und geben Sie die SSID und das Passwort Ihres Heimnetzwerks ein.
- Klicken Sie auf Save & Connect. Der ESP32 startet neu und verbindet sich als Client mit Ihrem Heimnetzwerk.
Client (Station)-Modus
config.json gesetzt haben (empfohlen fuer einfachen Zugriff), navigieren Sie direkt zu:
http://192.168.1.192
Weboberflaeche
webfs/ auf der SD-Karte gespeichert.
Dashboard (index.htm)
- Firmware-Version — die aktuell laufende RP2350-Firmware-Version und das Build-Datum.
- ESP32-Version — die ESP32-Koprozessor-Firmware-Version.
- Aktive Partition — welcher der beiden Firmware-Slots (1 oder 2) aktuell aktiv ist.
- Aktive Persona — die aktuell geladene Maschinenpersoenlichkeit.
- RP2350-Takt — aktuelle CPU-Frequenz in MHz.
- PSRAM-Takt — aktuelle PSRAM-SPI-Taktfrequenz.
- WiFi-Status — Modus (AP oder Client), SSID und zugewiesene IP-Adresse.
- SD-Karte — ob eine SD-Karte eingesetzt ist und der Dateisystem-Mount-Status.
- Betriebszeit — Zeit seit dem letzten Neustart.
Config Editor (config.htm)
config.json-Datei. Der Editor verfuegt ueber Syntaxhervorhebung und grundlegende JSON-Validierung.
Zum Bearbeiten der Konfiguration:
- Navigieren Sie zur Config-Editor-Seite.
- Die aktuelle
config.jsonwird automatisch in den Editor geladen. - Nehmen Sie Ihre Aenderungen vor. Der Editor hebt Syntaxfehler in Rot hervor.
- Klicken Sie auf Save, um die aktualisierte Datei zurueck auf die SD-Karte zu schreiben.
- Klicken Sie auf Apply (oder Neustart), um die neue Konfiguration anzuwenden. Der RP2350 liest die Konfiguration beim Booten, minimiert sie und speichert sie im Flash — nachfolgende Boots verwenden die Flash-Kopie, wenn keine SD-Karte vorhanden ist.
memory-Array als FUNC-Bloecke. Aenderungen an den WiFi-Einstellungen im esp32.wifi-Block werden beim naechsten ESP32-Neustart wirksam.
Hinweis: Der Config-Editor arbeitet direkt mit der SD-Karten-Datei. Es ist empfehlenswert, vor signifikanten Aenderungen eine Sicherungskopie einer funktionierenden config.json auf Ihrem PC aufzubewahren.
Dateimanager (filemanager.htm)
- ROM-Image hochladen — navigieren Sie zum
ROM/-Verzeichnis und verwenden Sie die Upload-Schaltflaeche, um die ROM-Datei von Ihrem PC zu uebertragen. - config.json sichern — klicken Sie auf das Download-Symbol neben
config.json, um eine Kopie auf Ihrem PC zu speichern. - Web-Assets aktualisieren — navigieren Sie zu
webfs/und laden Sie Ersatz-HTML/CSS/JS-Dateien hoch, um die Weboberflaeche zu aktualisieren.
Persona-Auswahl (personality.htm)
- BBC Model B — BBC Micro Model B Persona (in Entwicklung). Bietet grundlegende Speicherbelegung mit OS- und BASIC-ROMs. Der
ModelB.c-Treiber wird inM6502CPU.cueber#ifdef INCLUDE_BBC_DRIVERSreferenziert.
Firmware-Updates (OTA)
BaseM6502_<Version>.bin statt BaseZ80_<Version>.bin.
WiFi-Manager (wifimanager.htm)
- WiFi-Modus — Access Point (der pico6502 erstellt sein eigenes Netzwerk) oder Client (der pico6502 tritt einem bestehenden Netzwerk bei).
- SSID — der Netzwerkname zum Erstellen (AP-Modus) oder Beitreten (Client-Modus).
- Passwort — die WiFi-Passphrase.
- IP-Adresse / Subnetzmaske / Gateway — feste IP-Einstellungen fuer den Client-Modus (empfohlen fuer zuverlaessigen Zugriff).
- DHCP — aktivieren, um automatisch eine Adresse von Ihrem Router zu erhalten; deaktivieren, um die festen IP-Einstellungen oben zu verwenden.
Grundkonfiguration
config.json auf der SD-Karte gesteuert. Das Folgende ist eine minimale funktionsfaehige Konfiguration fuer einen generischen 6502-Host mit RAM, ROM und einem speicherabgebildeten VIA-Peripheriegeraet. Siehe den Technischen Leitfaden — Konfigurationsreferenz fuer eine vollstaendige Beschreibung aller Optionen.
Wichtiger Unterschied zum picoZ80: Der Top-Level-CPU-Schluessel ist "6502" (nicht "z80"), und es gibt kein "io"-Array — alle Peripheriegeraete einschliesslich VIA, ACIA usw. werden mit FUNC-Bloecken im "memory"-Array abgebildet.
{
"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— 32KB RAM in PSRAM-Bank 0 (Zero Page, Stack und allgemeines RAM).0x8000 – 0x8FFF— 4KB FUNC-Block, gebunden an denVIAVirtual-Device-Handler — eine speicherabgebildete 6522 VIA-Peripherie-Emulation.0xC000 – 0xFFFF— 8KB BASIC-ROM, geladen von/ROM/basic.romauf der SD-Karte in PSRAM-Bank 1.0xE000 – 0xFFFF— 8KB OS-ROM, geladen von/ROM/os.romauf der SD-Karte in PSRAM-Bank 2. Der 6502-Reset-Vektor bei0xFFFC/0xFFFDmuss innerhalb dieses ROM-Bereichs liegen.
"io"-Array gibt — der 6502 hat keinen separaten I/O-Adressraum. Die gesamte Peripherie-Emulation verwendet FUNC-Bloecke innerhalb der Speicherbelegung.
Fehlersuche
Host-Computer startet nicht
- Ausrichtung pruefen — sicherstellen, dass Pin 1 des pico6502 mit Pin 1 des Sockels uebereinstimmt. Das rueckwaerts Einsetzen der Platine beschaedigt sowohl den pico6502 als auch den Host-Computer.
- Sitz pruefen — den pico6502 entfernen und erneut einsetzen, wobei sichergestellt wird, dass alle 40 Pins vollstaendig sitzen und keine unter der Platine verbogen sind.
- SD-Karte pruefen — wenn
config.jsonfehlt oder fehlerhaft ist, versucht die Firmware die zuvor gecachte Flash-Konfiguration zu verwenden. Wenn keine gueltige Konfiguration existiert, initialisiert der RP2350 die Speicherbelegung nicht und der Host sieht einen offenen Bus. Der 6502-Reset-Vektor muss sich in einem gueltigen ROM-Bereich befinden. - Firmware-Flash bestaetigen — versuchen Sie, den pico6502 per USB anzuschliessen (ohne ihn in den Host einzusetzen) und pruefen Sie, ob die Platine am PC erkannt wird.
- Host-Netzteil pruefen — der pico6502 kann bis zu 400mA von der 5V-Schiene aufnehmen. Einige Vintage-Computer haben grenzwertige Netzteile; pruefen Sie die 5V-Schienenspannung unter Last mit einem Multimeter.
Keine Verbindung zur Weboberflaeche moeglich
- WiFi-Modus pruefen — beim ersten Start oder nach einem Werksreset startet der ESP32 im AP-Modus. Verbinden Sie sich zuerst mit dem
pico6502-WiFi-Netzwerk und navigieren Sie dann zuhttp://192.168.4.1. - Konfigurierte IP-Adresse pruefen — wenn der Client-Modus mit einer festen IP konfiguriert ist, pruefen Sie, ob die IP mit Ihrem Netzwerk-Subnetz uebereinstimmt.
- Vorhandensein der SD-Karte pruefen — die Web-Assets in
webfs/auf der SD-Karte sind erforderlich. Ohne SD-Karte kann der Webserver keine Seiten bereitstellen. - webfs-Verzeichnis pruefen — bestaetigen Sie, dass das
webfs/-Verzeichnis auf der SD-Karte existiert und die HTML/CSS/JS-Dateien aus dem Projektrepository enthaelt. - WiFi-Werksreset — wenn Anmeldedaten verloren gehen, flashen Sie die ESP32-Firmware erneut, um NVS-Einstellungen zu loeschen und neu zu beginnen.
SD-Karte nicht erkannt
- Stellen Sie sicher, dass die SD-Karte als FAT32 formatiert ist. NTFS, exFAT und FAT16 werden nicht unterstuetzt.
- Probieren Sie eine andere SD-Karte — einige Karten mit hoher Kapazitaet oder hoher Geschwindigkeit koennen Kompatibilitaetsprobleme mit dem ESP32-SPI-SD-Interface haben.
- Karten bis 32GB werden gut unterstuetzt. Sehr grosse Karten (>32GB) erfordern moeglicherweise spezielle Formatierung.
- SD-Karte neu einsetzen — entfernen und erneut einsetzen, um guten Kontakt sicherzustellen.
ROM-Images werden nicht geladen / 6502 stuerzt beim Reset ab
- Pruefen Sie, ob der Dateipfad in
config.jsonexakt mit dem Speicherort auf der SD-Karte uebereinstimmt (Pfade sind gross-/kleinschreibungssensitiv). - Bestaetigen Sie, dass die ROM-Image-Datei auf der SD-Karte vorhanden ist — verwenden Sie den Dateimanager, um zum erwarteten Speicherort zu navigieren.
- Reset-Vektor pruefen — der 6502 liest den Reset-Vektor von den Adressen
0xFFFCund0xFFFDbeim Einschalten. Beide Adressen muessen innerhalb eines ROM- oder RAM-Blocks in Ihrer Speicherbelegung liegen. Wenn sie in einem unzugeordneten oder PHYSICAL-Bereich liegen, springt der 6502 zu einer zufaelligen Adresse und stuerzt ab. - Pruefen Sie den
fileofs-Wert — ein falscher Offset laedt fehlerhafte Daten in die ROM-Bank. - Pruefen Sie, ob das
size-Feld im Speicherbelegungs-Eintrag nicht groesser als die ROM-Image-Datei ist.
OTA-Update schlaegt fehl
- Stellen Sie sicher, dass Sie fuer RP2350-OTA-Updates eine
.bin-Datei (nicht eine.uf2) hochladen. - Stellen Sie sicher, dass die Binaerdatei fuer das pico6502-Target (
BaseM6502) erstellt wurde — laden Sie keine picoZ80-Binaerdatei auf den pico6502 hoch. - Stellen Sie sicher, dass Sie auf den inaktiven Slot hochladen, um die funktionierende Firmware zu erhalten.
- Wenn das OTA-Update fehlschlaegt oder zu einer nicht bootfaehigen Partition fuehrt, behaelt der Bootloader den vorherigen aktiven Slot bei — wiederholen Sie den Upload-Vorgang.
- Bei ESP32-OTA-Fehlern flashen Sie erneut ueber
esptoolmit der USB-Verbindung.
Referenz-Websites
| Ressource | Link |
|---|---|
| pico6502 Projektseite | /pico6502/ |
| pico6502 Technischer Leitfaden | /pico6502-technicalguide/ |
| picoZ80 Projektseite | /picoz80/ |
| picoZ80 Benutzerhandbuch | /picoz80-usermanual/ |
| RP2350 Datasheet | datasheets.raspberrypi.com |
| Pico SDK Documentation | raspberrypi.github.io/pico-sdk-doxygen |
| ESP32-S3 Technical Reference | docs.espressif.com |
| MOS 6502 Datasheet | westerndesigncenter.com |
| X (Twitter) Projektvorschau | engineerswork1 |
Regulatorischer Hinweis fuer Funkgeraete
- Zusammengebaute Geraete duerfen nicht verkauft, zum Verkauf angeboten, verschenkt oder anderweitig an Dritte verteilt werden, es sei denn, das fertige Produkt wurde unabhaengig getestet und hat eine eigene Geraetezulassung erhalten.
- Der Bau dieses Projekts fuer den persoenlichen Gebrauch in begrenzten Stueckzahlen ist im Allgemeinen unter Hobbyisten- und Experimentiervorschriften gestattet (z.B. FCC § 15.23), vorausgesetzt das Geraet verursacht keine schaedlichen Stoerungen.
- Regulatorische Anforderungen variieren je nach Land. Bauherren ausserhalb der Vereinigten Staaten sollten ihre nationale Funkfrequenzbehoerde fuer anwendbare Regeln konsultieren.
Es liegt in der alleinigen Verantwortung des Bauherrn sicherzustellen, dass jedes aus diesen Designs konstruierte Geraet allen anwendbaren Funkfrequenzvorschriften in seiner Gerichtsbarkeit entspricht. Der Autor stellt diese Designs fuer den persoenlichen, bildungsbezogenen und Hobbygebrauch zur Verfuegung und gibt keine Zusicherung, dass ein aus ihnen gebautes Geraet die regulatorischen Anforderungen fuer den kommerziellen Vertrieb erfuellt.