pico6502 ユーザーマニュアル

English

注記: pico6502 プロジェクトは初期開発段階にあります。ハードウェアは動作可能でバスインターフェースも機能していますが、ドライバのサポートは限定的です。このマニュアルはプロジェクトの現状を反映しており、開発の進捗に合わせて更新されます。

pico6502 ユーザーマニュアル

pico6502 は、DIP-40 ソケットを持つあらゆるコンピューターに差し込める 6502 CPU のドロップイン代替品です。ヴィンテージコンピューターの 6502 ソケットに直接取り付けるだけで、ホスト基板に一切の改造を加えることなく、拡張メモリ、仮想ペリフェラル、WiFi 経由のブラウザベース管理インターフェースを提供します。
pico6502 は picoZ80 と同一のハードウェアを共有しています。同じ RP2350B デュアルコアマイクロコントローラー、8MB PSRAM、16MB フラッシュ、ESP32 コプロセッサー、SD カードスロット、USB ハブを備えています。主な違いはバスインターフェースのファームウェアです。pico6502 は 6502 のデュアルフェーズ PHI1/PHI2 クロックスキームと、メモリマップされたペリフェラルモデルを対象としています。Z80 とは異なり、6502 には独立した I/O アドレス空間がありません。すべてのペリフェラル(VIA、ACIA 等)は FUNC ブロックを使用してメモリマップ経由でアクセスします。
このマニュアルは物理的な基板、初期セットアップ、ホストマシンへの接続、ウェブインターフェースの使用方法について説明します。アーキテクチャの詳細、設定リファレンス、ファームウェア内部については pico6502 テクニカルガイドをご覧ください。プロジェクトの概要については pico6502 プロジェクトページをご覧ください。

基板の概要

pico6502 PCB(リビジョン 2.2)は標準的な 40 ピン DIP パッケージのフットプリント内に収まるよう設計されており、52mm × 19mm のサイズです。40 本の DIP ピンはすべて基板の裏面から出ており、実際の 6502 のピン配置と完全に一致しているため、曲げや変換なしに任意の 6502 ソケットに直接差し込めます。
表面にはすべてのアクティブ部品が搭載されています。ソケット上部の基板高は、DIP-40 ソケットが取り付けられた標準的な IC の外形に収まっており、ほとんどのヴィンテージ 6502 コンピューターのクリアランスに対応しています。

コネクターとインジケーター

pico6502 基板には以下のコネクターとインジケーターがあります:
項目 説明
6 ピンデバッグヘッダー 基板端に配置。RP2350 への SWD(シリアルワイヤデバッグ)アクセスに加え、SWO およびリセットラインを提供。デバッグヘッダーピン配置を参照。
USB ポート USB マスストレージ(BOOTSEL モード)経由のファームウェア書き込みと、ESP32 への USB-UART ブリッジングに使用。
SD カードスロット ESP32 が管理するフルサイズ SD カードスロット。config.json、ROM イメージ、各種ファイリングシステムアセットを格納。

デバッグヘッダーのピン配置

6 ピンヘッダーは初期プログラミングとソースレベルデバッグのための主要なハードウェアインターフェースです。ピンは基板端のマーカーに最も近い端のピン 1 から番号が付けられています。
ピン 信号 機能
1 SWCLK シリアルワイヤデバッグクロック(ARM SWD)
2 SWDIO シリアルワイヤデバッグデータ(ARM SWD)
3 SWO シリアルワイヤ出力 — RP2350 からのオプションのトレース出力
4 RESET RP2350 のアクティブロウリセット。ローにプルしてリセット。
5 GND グランド基準
6 3V3 3.3V 電源出力(入力として使用しないこと)

注意: ピン 1、2、5 は SWD デバッグに使用されます(SWCLK、SWDIO、GND)。RP2350 の初期書き込みには、電源投入時に BOOTSEL 信号をアサートして BOOTSEL モードを使用してください(「はじめに」のステップ 1 参照)。ピン 3(SWO)はオプションで、ファームウェアビルドでトレース出力が有効な場合のみ使用されます。


はじめに

pico6502 基板を初めてセットアップする際は、以下の手順を順番に実行してください:
  1. USB マスストレージモード(BOOTSEL)で RP2350 ブートローダーを書き込む。
  2. esptool で ESP32 ファームウェアを書き込む。
  3. config.json と必要な ROM イメージを入れた SD カードを用意する。
  4. ホストコンピューターの 6502 ソケットに pico6502 を取り付ける。
  5. 電源を入れ、pico6502 が WiFi アクセスポイントを起動するまで待つ。
  6. ウェブインターフェースに接続して初期設定を完了する。

ステップ 1 — RP2350 ブートローダーの書き込み

pico6502 基板には物理的な BOOTSEL ボタンやリセットボタンがありません。これらの信号はプログラムで操作するかデバッグヘッダーから使用します。USB マスストレージブートローダーに入るには:
  1. まだ pico6502 をホストコンピューターに挿入しないでください — USB ケーブルのみで PC に接続します。
  2. BOOTSEL 信号をローにホールドします(テストポイントの位置は基板の回路図を参照)。
  3. USB ポートに電源を供給 — RP2350 が起動を開始します。
  4. 基板が USB マスストレージデバイスとして認識されたらすぐに BOOTSEL を解放します。
  5. PC に RPI-RP2(または同様)というラベルのドライブがマウントされます。
  6. マウントされたドライブに Bootloader_<バージョン>.uf2 をコピーします。RP2350 は自動的に自己書き込みを行い再起動します。
ブートローダーを書き込んだ後、以降の RP2350 ファームウェア更新はウェブ OTA ページから無線で行えます。通常のファームウェア更新で BOOTSEL 信号にアクセスする必要はありません。

ステップ 2 — ESP32 ファームウェアの書き込み

ESP32 ファームウェアは esptool を使用して書き込みます。手順は picoZ80 と同じです — 詳細は picoZ80 ユーザーマニュアル — ステップ 2 を参照してください。ESP32 ファームウェアのバイナリは両方の基板で共通です。
Python 環境のセットアップ(初回のみ):
python3 -m venv ./venv/
source ./venv/bin/activate
cd $HOME/esptool
次に 4 つの ESP32 ファームウェアコンポーネントをすべて書き込みます。PORT を OS が割り当てたデバイスノードに合わせて変更してください:
PORT=/dev/ttyUSB0       # Linux — 必要に応じて変更

# 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

注意: 初回書き込みが完了した後、以降の ESP32 ファームウェア更新はすべて OTA ウェブページ(ota-esp32.htm)から実行できます。

ステップ 3 — SD カードの準備

SD カードには設定ファイル、ROM イメージ、ウェブインターフェースのアセットを格納します。
フォーマット要件:
  • FAT32 ファイルシステム。
  • FAT32 でサポートされる任意の容量(信頼性の高いフォーマットのため 32GB 以下を推奨)。
最低限必要なファイル:
  • SD カードのルートにある config.json — メインの設定ファイル。最小限の 6502 設定例は 基本設定を参照。
  • webfs/ ディレクトリ — ESP32 ウェブインターフェースのアセット。プロジェクトリポジトリの webfs/ ディレクトリの内容を SD カードのルートにコピーしてください。
オプションのディレクトリ:
ディレクトリ 内容
ROM/ config.json が参照する ROM イメージ(例:BBC Model B OS、BASIC)
DSK/ 将来のドライブエミュレーションドライバー用ディスクイメージ
SD カードは pico6502 が起動した後、ウェブのファイルマネージャーから管理できます。カードを物理的に取り出すことなく、ブラウザから ROM イメージのアップロード、config.json の編集、ディレクトリの作成が可能です。

ステップ 4 — ホストコンピューターへの取り付け

安全最優先: pico6502 を取り付けまたは取り外す前に、必ずホストコンピューターの電源を切り、プラグを抜いてください。基板は内部で 3.3V で動作しており、DIP-40 ピンは適切なインターフェース回路を介して 5V のホストバスに接続されますが、電源が入った状態での挿抜は絶対に行わないでください。
取り付け手順:
  1. ホストコンピューターの電源を切り、静電気を放電させます。
  2. DIP-40 ソケットから既存の 6502 CPU チップを取り外します。ピンを曲げないよう、チップ取り外し工具の使用を推奨します。
  3. pico6502 の SD カードスロットに SD カードを挿入します。
  4. pico6502 のピン 1(ドットまたはノッチでマーク)がソケットのピン 1 と合うよう、pico6502 を 6502 ソケットに位置合わせします。
  5. pico6502 をソケットに静かに均等に押し込みます。40 本すべてのピンが確実に挿入されていることを確認してください。抵抗を感じたら、無理に押さず取り外してピンの位置を確認してください。
  6. ホストコンピューターの電源を入れます。
新しいファームウェアをインストールした後の初回起動時、ESP32 はアクセスポイントモードで起動し、pico6502 という名前の WiFi ネットワークをブロードキャストします。このネットワークに接続してウェブインターフェースにアクセスし、初期 WiFi 設定を完了してください。

注意: pico6502 は 6502 ソケットの VCC ピンにある 5V 電源から電力を供給されます。搭載のバックコンバーターがすべての基板コンポーネントに 3.3V を供給します。ホストコンピューターの 5V 電源が少なくとも 500mA を供給できることを確認してください。pico6502 はピーク負荷時(WiFi アクティブで 300MHz 動作の RP2350)に最大 400mA を消費することがあります。

ステップ 5 — 電源投入

ホストコンピューターの電源を入れます。pico6502 は RP2350 ブートローダーから起動し、フラッシュからアプリケーションファームウェアを読み込み、SD カード(またはキャッシュされたフラッシュのコピー)から config.json を読み取り、メモリマップを初期化して、6502 バスサイクルのサービスを開始します。
ESP32 は並行して起動し、WiFi サブシステムを開始します。保存されたネットワーク認証情報が見つからない場合、ESP32 は自動的にアクセスポイントモードに入ります。

ステップ 6 — ウェブインターフェースへの接続

初回起動時は、pico6502 WiFi アクセスポイントに接続し、http://192.168.4.1 にアクセスします。WiFi マネージャーページでホームネットワークの認証情報を入力してください。保存して ESP32 を再起動すると、pico6502 はネットワークに参加し、設定された IP アドレス(デフォルト http://192.168.1.192)でアクセス可能になります。

WiFi セットアップ

pico6502 の WiFi セットアップ手順は picoZ80 と同一です。ESP32 コプロセッサーが WiFi 接続を提供します。初回起動時(または WiFi 認証情報が保存されていない場合)、ESP32 はアクセスポイント(AP)モードで起動します。

アクセスポイントモードでの接続

  1. スマートフォン、タブレット、またはノートパソコンで WiFi 設定を開き、pico6502(または AP モード時の config.jsonesp32.wifi.ssid フィールドで設定したもの)というネットワークを探します。
  2. pico6502 ネットワークに接続します。デフォルトの AP パスワードは pico6502AP です(変更されている場合はファームウェアのリリースノートを確認してください)。
  3. ブラウザを開き、http://192.168.4.1 にアクセスします — これがデフォルトの AP モード IP アドレスです。pico6502 ウェブインターフェースが表示されます。
  4. WiFi マネージャーページに移動して、ホームネットワークの SSID とパスワードを入力します。
  5. 保存して接続をクリックします。ESP32 が再起動し、クライアントとしてホームネットワークに接続します。

クライアント(ステーション)モード

クライアントモードが設定されると、ESP32 はホーム WiFi ネットワークに参加し、ダッシュボードページに表示された IP アドレスで到達可能になります。config.json で固定 IP を設定した場合(アクセスの一貫性のために推奨)、直接以下に接続できます:
http://192.168.1.192
設定した IP アドレスに置き換えてください。DHCP を使用している場合は、ルーターの DHCP クライアントリストから割り当てられたアドレスを確認してください。
ウェブインターフェースはブラウザ上で完全に動作します。追加ソフトウェアは不要です。pico6502 ウェブサーバーはポート 80 で動作します。

ウェブインターフェース

pico6502 ウェブインターフェースは picoZ80 のものと同一です。ESP32 が提供する 7 ページの Bootstrap 4 アプリケーションです。すべてのページは各ページ上部のナビゲーションバーからアクセスできます。ウェブアセットは SD カードの webfs/ ディレクトリに格納されています。

ダッシュボード (index.htm)

ダッシュボードはウェブインターフェースのホームページです。リアルタイムのシステム情報を表示し、pico6502 の状態の概要を提供します。
ダッシュボードに表示される情報:
  • ファームウェアバージョン — 現在動作中の RP2350 ファームウェアバージョンとビルド日付。
  • ESP32 バージョン — ESP32 コプロセッサーのファームウェアバージョン。
  • アクティブパーティション — 現在アクティブなファームウェアスロット(1 または 2)。
  • アクティブペルソナ — 現在ロードされているマシンペルソナ。
  • RP2350 クロック — 現在の CPU 周波数(MHz)。
  • PSRAM クロック — 現在の PSRAM SPI クロック周波数。
  • WiFi ステータス — モード(AP またはクライアント)、SSID、割り当てられた IP アドレス。
  • SD カード — SD カードの有無とファイルシステムのマウント状態。
  • アップタイム — 最後の再起動からの経過時間。
ダッシュボードには RP2350 の再起動ボタンと、完全な再起動なしに SD カードから設定をリロードするボタンも用意されています。

設定エディター (config.htm)

設定エディターページは、SD カードに保存された config.json ファイルをブラウザ内で編集する機能を提供します。エディターにはシンタックスハイライトと基本的な JSON バリデーション機能があります。
設定の編集手順:
  1. 設定エディターページに移動します。
  2. 現在の config.json が自動的にエディターに読み込まれます。
  3. 変更を加えます。エディターはシンタックスエラーを赤色でハイライトします。
  4. 保存をクリックして更新されたファイルを SD カードに書き戻します。
  5. 適用をクリック(または再起動)して新しい設定を適用します。RP2350 は起動時に設定を読み込み、最小化してフラッシュに保存します。以降の起動では、SD カードがない場合はフラッシュのコピーが使用されます。
メモリマップと ROM イメージへの変更は次回の RP2350 リセット時に有効になります。pico6502 には独立した I/O マップがないことに注意してください — すべてのペリフェラルバインディングは memory 配列内の FUNC ブロックとして記述します。esp32.wifi ブロックの WiFi 設定への変更は次回の ESP32 再起動時に有効になります。

注意: 設定エディターは SD カードのファイルに直接操作します。大きな変更を行う前に、動作中の config.json のバックアップコピーを PC に保存しておくことをお勧めします。

ファイルマネージャー (filemanager.htm)

ファイルマネージャーは SD カードの内容をブラウザベースで表示します。ディレクトリの移動、新しいファイル(ROM イメージ、ディスクイメージ)のアップロード、既存ファイルの PC へのダウンロード、新しいディレクトリの作成、ファイルとディレクトリの削除が可能です。
ファイルマネージャーでの一般的な操作:
  • ROM イメージのアップロードROM/ ディレクトリに移動し、アップロードボタンを使用して PC から ROM ファイルを転送します。
  • config.json のバックアップconfig.json の横にあるダウンロードアイコンをクリックして PC にコピーを保存します。
  • ウェブアセットの更新webfs/ に移動し、HTML/CSS/JS ファイルをアップロードしてウェブインターフェースを更新します。
ファイル操作は ESP32 を介して SD カードに直接実行されます。大きなファイルのアップロードはファイルサイズと WiFi 信号品質によっては数秒かかることがあります。

ペルソナ選択 (personality.htm)

ペルソナ選択ページでは、pico6502 がホストコンピューターに提示するマシンペルソナ(個性)を選択できます。異なるペルソナは設定から異なるメモリマップと ROM イメージを読み込みます。
現在サポートされている 6502 ペルソナ(初期開発段階):
  • BBC Model B — BBC Micro Model B ペルソナ(開発中)。OS および BASIC ROM を備えた基本的なメモリマップを提供します。ModelB.c ドライバーは #ifdef INCLUDE_BBC_DRIVERS 経由で M6502CPU.c から参照されます。
追加の 6502 ホストペルソナはプロジェクトの発展とともに追加されます。6502 には独立した I/O 空間がないため、すべてのペルソナ固有のペリフェラルエミュレーションはメモリマップ内の FUNC ブロックを通じて処理されます。仮想 VIA、ACIA などのすべてのペリフェラルはメモリマップされています。

ファームウェア更新(OTA)

RP2350 と ESP32 両方のファームウェアは、ウェブインターフェースから無線(OTA)で更新できます。手順は picoZ80 と同一です — 詳細は picoZ80 ユーザーマニュアル — ファームウェア更新を参照してください。
唯一の違いは RP2350 ファームウェアのバイナリファイル名です。pico6502 では、アプリケーションバイナリは BaseZ80_<バージョン>.bin ではなく BaseM6502_<バージョン>.bin という名前です。

WiFi マネージャー (wifimanager.htm)

WiFi マネージャーページでは ESP32 のネットワーク設定を構成します。ここでの変更は ESP32 NVS(不揮発性ストレージ)に保存され、次回再起動時に有効になります。
利用可能な設定:
  • WiFi モードアクセスポイント(pico6502 が独自のネットワークを作成)またはクライアント(pico6502 が既存のネットワークに参加)。
  • SSID — 作成する(AP モード)または参加する(クライアントモード)ネットワーク名。
  • パスワード — WiFi パスフレーズ。
  • IP アドレス / ネットマスク / ゲートウェイ — クライアントモード用の固定 IP 設定(一貫したアクセスのために推奨)。
  • DHCP — 有効にするとルーターから自動的にアドレスを取得し、無効にすると上記の固定 IP 設定を使用します。
保存後、ESP32 を再起動をクリックして新しい設定を適用します。ESP32 が再起動し、新しい設定で接続します。クライアントモードの接続に失敗した場合(誤った SSID またはパスワード)、ESP32 はタイムアウト後にアクセスポイントモードにフォールバックし、再接続して設定を修正できるようにします。

基本設定

pico6502 のすべての動作は SD カードの config.json によって制御されます。以下は、RAM、ROM、およびメモリマップされた VIA ペリフェラルを持つ汎用 6502 ホスト用の最小限の動作設定です。すべてのオプションの完全な説明については テクニカルガイド — 設定リファレンスを参照してください。
picoZ80 との主な違い:トップレベルの CPU キーは("z80" ではなく)"6502" であり、"io" 配列はありません — VIA、ACIA などすべてのペリフェラルは "memory" 配列内の FUNC ブロックを使用してマップされます。
{
  "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 — PSRAM バンク 0 に 32KB の RAM(ゼロページ、スタック、一般 RAM)。
  • 0x8000 – 0x8FFFVIA 仮想デバイスハンドラーにバインドされた 4KB の FUNC ブロック — メモリマップされた 6522 VIA ペリフェラルエミュレーション。
  • 0xC000 – 0xFFFF — SD カードの /ROM/basic.rom から PSRAM バンク 1 に読み込まれた 8KB の BASIC ROM。
  • 0xE000 – 0xFFFF — SD カードの /ROM/os.rom から PSRAM バンク 2 に読み込まれた 8KB の OS ROM。0xFFFC/0xFFFD にある 6502 リセットベクターはこの ROM 領域内になければなりません。
"io" 配列がないことに注意してください — 6502 には独立した I/O アドレス空間がありません。すべてのペリフェラルエミュレーションはメモリマップ内の FUNC ブロックを使用します。

トラブルシューティング

ホストコンピューターが起動しない

  • 向きを確認する — pico6502 のピン 1 がソケットのピン 1 と合っていることを確認してください。基板を逆向きに挿入すると pico6502 とホストコンピューターの両方が損傷します。
  • 装着状態を確認する — pico6502 を取り外して再挿入し、40 本すべてのピンが完全に挿入されており、基板の下に曲がったピンがないことを確認してください。
  • SD カードを確認するconfig.json が存在しないか破損している場合、ファームウェアは以前にキャッシュされたフラッシュの設定を使用しようとします。有効な設定が存在しない場合、RP2350 はメモリマップを初期化できず、ホストはオープンバスを認識します。6502 のリセットベクターは有効な ROM 領域内になければなりません。
  • ファームウェアの書き込みを確認する — pico6502 を USB で接続し(ホストには挿入せずに)、PC 上で基板が認識されることを確認してみてください。
  • ホスト電源を確認する — pico6502 は 5V レールから最大 400mA を消費することがあります。一部のヴィンテージコンピューターの電源は余裕が少ない場合があります。負荷時の 5V レール電圧をマルチメーターで確認してください。

ウェブインターフェースに接続できない

  • WiFi モードを確認する — 初回起動時またはファクトリーリセット後、ESP32 は AP モードで起動します。まず pico6502 WiFi ネットワークに接続し、次に http://192.168.4.1 にアクセスしてください。
  • 設定された IP アドレスを確認する — クライアントモードで固定 IP が設定されている場合、IP がネットワークのサブネットと一致していることを確認してください。
  • SD カードが存在することを確認する — SD カードの webfs/ にあるウェブアセットが必要です。SD カードがない場合、ウェブサーバーはページを提供できません。
  • webfs ディレクトリを確認する — SD カードに webfs/ ディレクトリが存在し、プロジェクトリポジトリからの HTML/CSS/JS ファイルが含まれていることを確認してください。
  • WiFi のファクトリーリセット — 認証情報が失われた場合、ESP32 ファームウェアを再書き込みして NVS 設定をクリアし、初期状態から始めてください。

SD カードが認識されない

  • SD カードが FAT32 でフォーマットされていることを確認してください。NTFS、exFAT、FAT16 はサポートされていません。
  • 別の SD カードを試してください — 一部の大容量や高速カードは ESP32 の SPI SD インターフェースとの互換性に問題がある場合があります。
  • 32GB までのカードは良好にサポートされています。非常に大容量のカード(32GB 超)は特別なフォーマットが必要な場合があります。
  • SD カードを再挿入してください — 取り外して再挿入し、良好な接触を確保してください。

ROM イメージが読み込まれない / リセット時に 6502 がクラッシュする

  • config.json のファイルパスが SD カード上のファイルの場所と完全に一致していることを確認してください(パスは大文字と小文字を区別します)。
  • ROM イメージファイルが SD カードに存在することを確認してください — ファイルマネージャーを使用して期待される場所を参照してください。
  • リセットベクターを確認する — 6502 は電源投入時にアドレス 0xFFFC0xFFFD からリセットベクターを読み取ります。両方のアドレスがメモリマップ内の ROM または RAM ブロック内になければなりません。マップされていない領域や PHYSICAL 領域にある場合、6502 はランダムなアドレスにジャンプしてクラッシュします。
  • fileofs の値を確認してください — 誤ったオフセットは ROM バンクにゴミデータを読み込みます。
  • メモリマップエントリーの size フィールドが ROM イメージファイルより大きくないことを確認してください。

OTA 更新が失敗する

  • RP2350 の OTA 更新には .uf2 ではなく .bin ファイルをアップロードしていることを確認してください。
  • バイナリが pico6502 ターゲット(BaseM6502)用にビルドされていることを確認してください — picoZ80 のバイナリを pico6502 にアップロードしないでください。
  • 動作中のファームウェアを保護するため、非アクティブスロットにアップロードしていることを確認してください。
  • OTA 更新が失敗した場合、または起動しないパーティションが作成された場合、ブートローダーは以前のアクティブスロットで動作を継続します — アップロード処理を繰り返してください。
  • ESP32 OTA の失敗については、USB 接続を使用して esptool で再書き込みしてください。

参考サイト

リソース リンク
pico6502 プロジェクトページ /pico6502/
pico6502 テクニカルガイド /pico6502-technicalguide/
picoZ80 プロジェクトページ /picoz80/
picoZ80 ユーザーマニュアル /picoz80-usermanual/
RP2350 データシート datasheets.raspberrypi.com
Pico SDK ドキュメント raspberrypi.github.io/pico-sdk-doxygen
ESP32-S3 テクニカルリファレンス docs.espressif.com
MOS 6502 データシート westerndesigncenter.com
X (Twitter) プロジェクトプレビュー engineerswork1

無線規制に関する注意事項

本デバイスは 2.4 GHz ISM バンドで送信する ESP32-S3-PICO-1 無線モジュールを搭載しており、世界各国の無線周波数規制(米国の FCC Part 15 Subpart C、欧州連合の無線機器指令 2014/53/EU を含む)において意図的放射器に該当します。
ESP32-S3-PICO-1 モジュール自体は既存の規制認証(FCC、CE など)を取得していますが、そのモジュールレベルの認証は、モジュールを組み込んだ完成品に自動的に適用されるものではありません。事前認証モジュールの免除規定は、個人の趣味愛好家個人使用、実験、または教育目的で少数のデバイスを製作する場合に、個別の機器認可を取得せずに行うことを許可するものです。
重要な制限事項
  • 組み立てられたデバイスは、完成品が独自にテストされ、該当する管轄区域で機器認可(例:FCC ID、認定機関による CE マーキング評価)を取得しない限り、第三者への販売、販売の申し出、贈与、またはその他の方法での配布を行ってはなりません
  • 個人使用のために少数を製作することは、趣味愛好家および実験使用の規定(例:FCC § 15.23)に基づき、デバイスが有害な干渉を引き起こさない限り、一般的に許可されています。
  • 規制要件は国によって異なります。米国外の製作者は、適用される規則について自国の無線周波数当局に確認してください。
製作者の責任
本設計に基づいて製作されたデバイスが、管轄区域内の適用されるすべての無線周波数規制に準拠することは、製作者の単独の責任です。著者は本設計を個人使用、教育、および趣味愛好家向けに提供しており、本設計から製作されたデバイスが商業的配布の規制要件を満たすことについて、いかなる表明も行いません。