zSoft 概要
zSoft は ZPU プロセッサー向けに開発されたすべてのアプリケーションとオペレーティングシステムの総称です。もともと Z は ZPU を意味していましたが、追加の CPU アーキテクチャが含まれるようになり、現在はギリシャ語アルファベットの 6 番目の文字であるゼータ(Zeta)を意味します。
tranZPUterSW プロジェクトは、ソフトウェア開発によって tranZPUter 設計をより迅速に進めるための派生として誕生しました。NXP K64F プロセッサー(ARM Cortex-M4 派生品)の形で実現されました。この CPU を追加するには、2 つ(まもなく NIOS II を含む 3 つ)の異なる処理アーキテクチャに対応するためにソースコードにかなりの変更が必要でしたが、z-soft ソフトウェアをサードパーティがより使いやすくしています。特に、入手可能な ARM 開発ボードが豊富にあることを考えると、独自のプロジェクトに活用しやすくなっています。
zSoft コレクションには現在以下が含まれています:
zOS
zOS は ZPU 設計の進化に伴うテストを支援するアプリケーションとして始まり、当初は ZPUTA(ZPU Testing Application)という名前でした。作業していたいくつかの FPGA 開発ボードはメモリ(BRAM)が限られており、利用可能なメモリに合わせてサイズを設定できるようアプリケーションを設定可能にする必要がありました。ハードウェア SoC に SD カードが追加されると、アプリケーションはより本格的なオペレーティングシステムへと発展し、アプリケーションをビルドに含めるのではなくディスクに保存するようになりました。そこで zOS のアイデアが生まれました。ZPUTA を基に、不要なテストコードを取り除き、tranZPUter、tranZPUterSW、ZPU、Sharp MZ エミュレータープロジェクトの中核として使用する OS を作成するというものです。
現在、欠けているスケジューリングなどの機能を提供するために RTOS を統合することを検討していますが、特に ZPU GCC コンパイラーのプロジェクトへの制約(C++98/C99 仕様)を考えると、それは別の機会のことになります。
ZPUTA
ZPUTA は OS へと進化し、zOS を形成するために分割された元々のテストアプリケーションです。元来の目的であるテスト機能の提供は引き続き継続され、zOS では利用できない機能を提供します。また、アプリケーションアプレット機能のほとんどを組み込んだ単一プログラムとしてビルドする機能もあり、SD カードがない環境でも有用です。zOS は時間とともに自分のプロジェクト向けに洗練された OS となり、ZPUTA は CPU/ハードウェアテスト用として継続されます。
IOCP
ZPUTA 以前に、IOCP(I/O Control Program)というブートストラッププログラムを作成しました。最低レベルのハードウェアで動作し、ZPUTA などの高度なプログラムをブートできます。IOCP はサイズに敏感で、あらゆるメモリデバイスからブートストラップできるよう設計されています。SD カードと Petit FatFS を含めることで、SD カードからブートストラップできます。IOCP はもともと ZPUTA をブートストラップするために使用され、変更を加えた際に ZPUTA カーネルを SD カードにコピーするだけで開発速度が向上しましたが、最終的には低レベルコードを ZPUTA に組み込み、IOCP を必要とせずにプライマリソフトウェアとして起動できるようになりました。IOCP は ZPUTA や zOS レベルの洗練度を必要としない任意のアプリケーションをブートするためにプロジェクト内に残されています。
左側のナビゲーションバーで選択できる以降のセクションでは、zOS、ZPUTA、IOCP、およびすべてのアプリケーションアプレットの現在の進化状態について説明します。
自動セットアップとビルド(推奨)
build.sh によって駆動され、選択した CPU 向けに IOCP、選択した OS(zOS または ZPUTA)、アプリケーションアプレットを 1 回のパスでアセンブル/コンパイルします。3 つのツールチェーンが関与し、セットアップスクリプトはそのすべてを提供します:
| ツールチェーン | ターゲット CPU | ソース |
|---|---|---|
ZPU zpu-elf-gcc 3.4.2 |
Small Medium Flex Evo EvoMin (ZPU) |
/opt/zpu にインストール(ZPU_TOOLCHAIN_URL から) |
ARM arm-none-eabi |
K64F (Kinetis / Teensy 3.5) |
リポジトリ内 tools/arm に同梱(インストール不要) |
M68000 m68k-linux-gnu |
M68K(組み込み M68000、SharpMZ / tranZPUter SW-700) |
オプション。Linux では確認を求められ、ディストリビューションからインストールされます(WSL1 / Docker イメージにも組み込まれています)。 |
これらのツールチェーンは Linux / クロスバイナリであるため、ビルドは Linux ではネイティブ、macOS では Docker(イメージ zsoft-build:latest)、Windows では WSL1 経由で実行されます:
| スクリプト | プラットフォーム | 備考 |
|---|---|---|
setup_zSoft.sh |
Linux(ネイティブ)/ macOS(Docker) | 基本ビルドツール + ZPU ツールチェーンをインストール。macOS では zsoft-build:latest Docker イメージ内でビルドします。 |
setup_zSoft_windows.cmd |
Windows 10 / 11 | 下記の PowerShell スクリプトを呼び出すダブルクリックランチャー。 |
setup_zSoft_windows_native.ps1 |
Windows 10 / 11 (WSL1) | WSL1(デフォルトディストリビューション Ubuntu-24.04)をセットアップし、その中で Linux セットアップを実行します。 |
setup_zSoft_wsl1.sh |
WSL1 内 | WSL1 ディストリビューション内で自動的に呼び出される Linux セットアップステップ。 |
Linux / macOS — setup_zSoft.sh
chmod +x setup_zSoft.sh
./setup_zSoft.sh
Windows 10 / 11 — setup_zSoft_windows_native.ps1 — setup_zSoft_windows.cmd をダブルクリックするか、PowerShell プロンプトから:
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
.\setup_zSoft_windows_native.ps1
セットアップは ZSOFT_REPO_URL(デフォルト https://git.eaw.app/eaw/zSoft.git)を ~/zSoft にクローンします。完了したら、任意の組み合わせをビルドできます(build.sh はホストに応じてネイティブ / Docker / WSL1 を自動選択します):
./build.sh -C Evo -O zos # Evo ZPU 用 zOS
./build.sh -C K64F -O zos # K64F 用 zOS (ARM Cortex-M4)
./build.sh -C Evo -O zputa # Evo ZPU 用 ZPUTA
./buildm68k.sh # SharpMZ M68000 ビルド(ビルド可能なスケルトン、ハードウェア未検証)
./build.sh -h # すべてのオプション (-C CPU, -I IOCP, -O os, -o os ver, アドレス, サイズ ...)
-I(IOCP 機能レベル)および -o(OS モデル)フラグは、IOCP ブートローダーのどの程度をイメージに組み込むかを選択します。アプリケーションアプレットは同じパス内で OS と一緒にコンパイルされます。出力は build/ および build/SD/ 以下に生成されます — ブート ROM(BOOT.ROM / BOOTTINY.ROM)、IOCP_<func>_<addr>.bin ブートローダー、OS の .bin、そして FAT フォーマットの SD カードにコピーする準備が整った bin/ のアプリバイナリです。
有用な環境変数の上書き:
| 変数 | 用途 |
|---|---|
ZSOFT_REPO_URL |
クローンするリポジトリ(デフォルト https://git.eaw.app/eaw/zSoft.git)。 |
ZSOFT_DIR |
クローンせずに既存のチェックアウト内でビルドします。 |
ZPU_TOOLCHAIN_URL |
/opt/zpu にインストールされる zpu-elf-gcc 3.4.2 ツールチェーンの tarball の場所。 |
ZSOFT_BUILD_IMAGE |
macOS ビルドで使用される Docker イメージ(デフォルト zsoft-build:latest)。 |
ZSOFT_WSL_DISTRO |
Windows での WSL1 ディストリビューション名(デフォルト Ubuntu-24.04)。 |
ZSOFT_ASSUME_YES=1 |
すべてのプロンプトを非対話的に受け入れます(無人 / CI インストール)。 |
build.sh フラグマトリクス)は、zOS、ZPUTA、IOCP の各ページのソフトウェアビルドセクション(左側のナビゲーションバーで選択)で説明されています。