W5500-EVB-PICO2上のFuzixでEthernetに接続する話
はじめに
本稿は、「W5500-EVB-PICO2やRaspberry pi pico2でFuzixを起動する話」の続きになりますので、先にそちらのページを参考にして、Fuzixのビルドができる環境を整えてください。
FuzixをEthernetにつなぐ方法としてWiznetのW5500Ethernetアダプタが利用されています。Z180CPUを使ったSC111ボード、Raspberry pi picoやESP8266等に用いられています。
SC111ボードには「Getting a Z80 computer on the internet」の説明があります。
Raspberry pi picoには「Fuzix OSでW5500とRaspberry Pi Picoを使用してEthernetを使用する方法」の説明があります。
ESP8266はFuzixの作者Alan CoxさんのmastodonでのつぶやきとFuzixレポジトリのREADME.MDの説明があります。
いずれの場合もEthernetアダプタをSPI接続でボードに接続します。ジャンプワイヤなどの配線材で接続します。
これらに対し、Wiznetの商品として、W5500チップとRP2350CPUを搭載したW5500-EVB-PICO2が販売されており、これを使うと配線の必要がありません。
このボードでは、基板上でW5500とRP2350がSPI接続されています。
本稿では、W5500-EVB-PICO2上で動作するEthernet接続可能なFuzixのビルド方法を紹介します。
使用するW5500-EVB-PICO2はJapanese Raspberry Pi User Groupに提供していただいたボードです。感謝です。
Ethernet接続のための準備
Raspberry pi pico、pico_w、pico2用のレポジトリには、W5500関連の設定やソースファイルなどが存在しません。先ほど紹介した「Fuzix OSでW5500とRaspberry Pi Picoを使用してEthernetを使用する方法」を参考に、足りないものを準備します。
以下のレポジトリの「3 commits ahead of」をクリックすると、修正箇所が表示されます。
- Ethernet enable on rpipico via W5500
- Increase clock speed, Update missing Makefile
- Add missing files
上記の説明によると、7個のファイルの修正と2個のファイルの追加が行われています。
・修正されたファイル
Kernel/platform-rpipico/CMakeLists.txt
Kernel/platform-rpipico/Makefile
Kernel/platform-rpipico/config.h
Kernel/platform-rpipico/devices.c
Kernel/platform-rpipico/devsdspi.c
Kernel/platform-rpipico/main.c
Kernel/platform-rpipico/update-flash.sh
・追加されたファイル
Kernel/platform-rpipico/wiznet.c
Kernel/platform-rpipico/wiznet.h
これらの修正を、「W5500-EVB-PICO2やRaspberry pi pico2でFuzixを起動する話」で用いた環境の「platform-rpipico」ディレクトリのファイルに適用し、「wiznet.c」と「wiznet.g」を「platform-rpipico」ディレクトリに追加します。
Makefileでのクロックアップの指定は、現時点で反映できていません。
ネットワークの設定
「Kernel/dev/net_w5x00.c」内の「void netdev_init(void)」の下あたりに
ipa = ntohl(0xC0A80001); // IP address、この例では、192.168.0.1
iga = ntohl(0xC0A800FE); //gateway、この例では、192.168.0.254
igm = ntohl(0xFFFFFF00); //subnet mask、この例では、255.255.255.0
がありますので、ネットワーク環境にあわせてカッコ内の16進数を修正します。
例えば、カッコ内の「0xC0A80001」のうち、「0x」は16進数であることを表していて、C0A80001」がIPアドレスの16進数表示です。
IPアドレス変換ツールがインターネット上に存在するので、そのツールを活用するとよいでしょう。
追記、修正が完了したら、ビルドして、W5500-EVB-PICO2でFuzixが動作するようファイルを書き込みます。
ネットワーク接続実験
起動後に、「ifconfig」コマンドを実行して、事前に設定した、IPアドレス、ネットマスク、ゲートウェイが表示されるか確認します。
さらに、telnetサーバーへのtelnet接続や、Webサーバーから「htget」コマンドを使ったファイルの取得を確認します。
おわりに
RP2350で動作するFuzixでも、Ethernet接続に成功しました。Fuzix上のネットワークツールは限られており、また、テキストベースの表示なので、インターネットのリソースを十分に利用することができない状態です。ネットワーク経由でLチカができないか、試す予定です。
Lチカ用プログラムのように、PICO-SDKでビルド可能なネットワークコマンドを移植するのは、マイクロコントローラ用やUNIX用プログラミングの勉強に役立つような気がします。
これまでの記事を通して、RP2040とRP2350上でFuzixを動作することができました。これらの環境のベンチマークテストを行いたいところです。
最後になりましたが、「W5500-EVB-PICO2やRaspberry pi pico2でFuzixを起動する話」と「W5500-EVB-PICO2上のFuzixでEthernetに接続する話」は、Japanese Raspberry Pi User Groupご提供のW5500-EVB-PICO2を用いて行いました。W5500-EVB-PICO2を利用する機会を与えてくださった、Japanese Raspberry Pi User Groupの皆様に、あらためて感謝いたします。
Discussion