3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ラズパイPico2用TOPPERS/ASPのビルド手順

Last updated at Posted at 2025-08-27

はじめに

TOPPERS/ASPはiTRONベースのRTOSでAPIの使い方は書籍やネット上に使い方が記されていますが、ビルド環境の構築やビルド方法の情報が少なく初心者が自身の手でTOPPERS/ASPをビルドして実行可能なバイナリコードを生成することは非常にハードルが高いです。

また、TOPPERSプロジェクトから2025年05月20日付でRaspberry Pi Pico2(以下 ラズパイPico2)用のTOPPERS/ASP個別パッケージが公開されました。
このため公開されたTOPPERS/ASPのソースコードからラズパイPico2で動作可能なバイナリコードを生成するまでの手順を記します。

TOPPERS_CLIP1.jpg

TOPPERS_CLIP2.jpg

なお、以前にもほかのマイコンボード向けにTOPPERS/ASPやTOPPERS/ASP3のビルド方法などを記した記事も執筆していますが、
開発環境のパッケージ版数が変わることでビルドがうまくいかないなどの問題が発生することもあるため、執筆時点の最新の状態で試して記事として執筆します。

以前の記事へのリンクを 参考情報 へ記しておきます。

開発環境

今回ビルドを行う開発環境はRaspberry Pi 5(以下 ラズパイ5)と Ubuntu を、また操作端末としてWindowsPCを用います。
ラズパイ5上ではソースコードの取得と展開、コンパイラやリンカなどビルド操作に必要なコマンドの実行を行い、これらコマンドの操作やソースコードの修正はWindowsPCから端末ソフトやファイル転送アプリ、テキストエディタを使って行う想定で記しています。

なお筆者の手元にラズパイ5がありこれを開発環境としましたが、64bitで動作するラズパイ3やラズパイ4でも同じ手順でビルドを行えると思います。

Linuxのダウンロード

今回ラズパイ5のOSはPC用のLinuxでも使われる UbuntuというディストリビューションのLinuxを用います。
また基本的にビルド用の開発環境として利用することから、Desktop版ではなくシリアルコンソールや ssh 経由でPCと接続して使用するServer版をインストールします。
以下のダウンロードページの「Ubuntu 24.04.3 LTS」:「Download Ubuntu Server 24.04.3 LTS」を選択してダウンロードします。

「Ubuntu 24.04.3 LTS」
  -> 「Download Ubuntu Server 24.04.3 LTS」

SDカードへの書き込み

先の操作でxz形式のファイル ubuntu-24.04.3-preinstalled-server-arm64+raspi.img.xz がダウンロードできていると思います。
それをimgファイル(ubuntu-24.04.3-preinstalled-server-arm64+raspi.img)へ展開します。

私はWindowsPC上で「7-Zip」とうソフトを使って .xzファイルを .imgファイルへ展開しています。
https://7-zip.opensource.jp/

展開したファイルをイメージ書き込みツールなどを使い SDカードへ書き込みます。

私は DD for Windows を使ってSDカードへのイメージの書き込みを行っています。
DD for Windows : https://www.si-linux.co.jp/techinfo/index.php?DD%20for%20Windows

また、Raspberry Pi Imager というツールもあるようです。
https://www.raspberrypi.com/software/

使いやすいツールを使い先の .imgファイルをSDカードへ書き込んでください。

設定ファイルの修正

書き込みが終わったら SDカード上の config.txtファイル を編集し、以下の定義を追加してラズパイでシリアルコンソールが使えるようにします。

dtparam=uart0_console

ubuntuの起動

GPIO14(TXD)、GPIO15(RXD)、GNDへシリアルコンソール用のUSB-シリアル変換モージュールなどを接続し、SDカードをラズパイへ差し込んでラズパイへ電源を投入することで ubuntuが起動します。

RaspberryPi_Pin.jpg

コンソールへ以下のメッセージが出力されログイン可能状態になると思います。

[    6.038744] systemd[1]: Starting systemd-udev-trigger.service - Coldplug All udev Devices...
[    6.049255] systemd[1]: Started systemd-journald.service - Journal Service.

Ubuntu 24.04.3 LTS ubuntu ttyAMA0

ubuntu login:

ubuntuの設定

コンソールからubuntuへログインし、Linux操作に必要なログインパスワード、ネットワーク、エディタ、タイムゾーンなどを利用者の環境に併せて設定します。
とくにネットワークの設定はインターネットからパッケージを取得するのに必須です。

設定方法などは 「ubuntu ネットワーク設定」など "ubuntu"と併せて必要なキーワードでネットワーク上で検索すれば出てくると思います。
また、以下のページの設定も参考になると思います。

パッケージのインストール

TOPPERS/ASPのビルドに必要ようなパッケージのほか、ラズパイPico、Pico2をUbuntu上で使う上で便利そうなパッケージも併せてインストールしておきます。

まず、既存のインストールパッケージを最新にします。

sudo apt update
sudo apt -y upgrade

次にビルドに必要なパッケージをインストールします。

sudo apt install -y cmake gcc-arm-none-eabi libnewlib-arm-none-eabi build-essential
sudo apt install -y libboost-all-dev libxerces-c-dev make g++ net-tools

ビルド環境の準備としては以上になります。

ソースツリーの構築

ラズパイPico2用TOPPERS/ASPのビルドに必要なソースコードの取得とビルドするためのソースツリーの構築を行います。

ソースコードの取得

まず TOPPERS/ASPのソースコードとして以下の2つのパッケージを取得します。

また TOPPERS/ASPのカーネルやアプリケーションの環境設定に必要なコンフィグレーションツールを取得します。

これらのソースコードを取得するにあたり今後の作業用のディレクトリを作成し、その配下へ移動します。
今回は toppers_asp_pico2 というディレクトリ名にしました。

ubuntu@ubuntu:~$ mkdir toppers_asp_pico2
ubuntu@ubuntu:~$ cd toppers_asp_pico2/
ubuntu@ubuntu:~/toppers_asp_pico2$

ディレクトリ移動後、ラズパイPico2用TOPPERS/ASPのソースとコンフィグレータのソースパッケージの3ファイルをダウンロードします。

wget https://www.toppers.jp/download.cgi/asp-1.9.3.tar.gz
wget https://www.toppers.jp/download.cgi/asp_arch_arm_m33_gcc-1.9.3.tar.gz
wget https://www.toppers.jp/download.cgi/cfg-1.9.6.tar.gz

ダウンロード後の作業ディレクトリは以下のようになります。

ubuntu@ubuntu:~/toppers_asp_pico2$ ll
total 1100
drwxrwxr-x 2 ubuntu ubuntu   4096 Aug 19 05:03 ./
drwxr-x--- 5 ubuntu ubuntu   4096 Aug 19 05:02 ../
-rw-rw-r-- 1 ubuntu ubuntu 520676 Aug 19 05:02 asp-1.9.3.tar.gz
-rw-rw-r-- 1 ubuntu ubuntu 437776 Aug 19 05:03 asp_arch_arm_m33_gcc-1.9.3.tar.gz
-rw-rw-r-- 1 ubuntu ubuntu 153788 Aug 19 05:02 cfg-1.9.6.tar.gz

各ファイルを取得後、作業ディレクトリ内でパッケージを展開します。

tar xzf asp-1.9.3.tar.gz
tar xzf asp_arch_arm_m33_gcc-1.9.3.tar.gz
tar xzf cfg-1.9.6.tar.gz

展開後の作業ディレクトリは以下のように aspディレクトリ、cfgディレクトリの2つのディレクトリが追加されます。

ubuntu@ubuntu:~/toppers_asp_pico2$ ll
total 1108
drwxrwxr-x  4 ubuntu ubuntu   4096 Aug 19 05:08 ./
drwxr-x---  5 ubuntu ubuntu   4096 Aug 19 05:02 ../
drwxr-xr-x 15 ubuntu ubuntu   4096 Sep  2  2024 asp/       ←TOPPERS/ASP用のソースディレクトリ
-rw-rw-r--  1 ubuntu ubuntu 520676 Aug 19 05:02 asp-1.9.3.tar.gz
-rw-rw-r--  1 ubuntu ubuntu 437776 Aug 19 05:03 asp_arch_arm_m33_gcc-1.9.3.tar.gz
drwxrwxr-x  4 ubuntu ubuntu   4096 Aug 19 05:08 cfg/       ←コンフィグレータ用のソースディレクトリ
-rw-rw-r--  1 ubuntu ubuntu 153788 Aug 19 05:02 cfg-1.9.6.tar.gz

なお、asp_arch_arm_m33_gcc-1.9.3.tar.gzファイルは aspディレクトリ配下に展開されます。
asp_arch_arm_m33_gcc-1.9.3.tar.gzファイルの構成を以下に記しておきます。

 |--asp
 |  |--README_COREM33.txt
 |  |--configure
 |  |
 |  |--arch/
 |  |  |--arm_m_gcc/
 |  |
 |  |--target/
 |  |  |--raspberrypi_pico2_gcc/
 |  |  |--stm32l552nucleo144_gcc/
 |  |
 |  |--tools/

ラズパイPico2用TOPPERS/ASPのビルド

TOPPERS/ASPのビルドを行うには以下の手順が必要です。
それぞれの手順を説明していきます。

  • コンフィグレーションコマンドcfcの生成
  • TOPPERS/ASPカーネルソースのコンフィグレーション
  • TOPPERS/ASP+アプリケーションのビルド

コンフィグレーションコマンドcfcの生成

cfg-1.9.6.tar.gzを展開して得られるコンフィグレータ用のソースコードをビルドしてコンフィグレーションコマンドcfcの生成を行います。
ただし、コンフィギュレータのページには以下の注記があり、そのままではビルドできません。

cfg_message.jpg

実際に提供されたソースコードをそのままビルドするとヘッダファイルのインクルード不足によるエラーで止まってしまいます。
このため、以下のようにcfg/toppers/text.hppファイルとcfg/toppers/cpp.hppファイルへインクルードの定義を追加します。

cfg/toppers/text.hpp
 54 #include "toppers/text_line.hpp"
 55 #include "toppers/misc.hpp"
 56 #include <boost/next_prior.hpp>  /* ※ 追加 */
 57 #include <boost/utility.hpp>
 58 #include <boost/iterator/iterator_facade.hpp>
cfg/toppers/cpp.hpp
 44 #include "toppers/codeset.hpp"
 45 #include "toppers/diagnostics.hpp"
 46 #include <boost/next_prior.hpp>  /* ※ 追加 */
 47 #include <boost/utility.hpp>
 48 #include <boost/filesystem/path.hpp>

次にソースコード内のconfigureスクリプトを使ってコンフィグレーションを行いますが、configureスクリプトの改行コードに「0x0d」が含まれているため正しく動作しません。
このため以下のコマンドで不要な改行コード「0x0d」を削除したconfigureスクリプトを生成します。

cd cfg
mv configure configure.org
tr -d '\r' < configure.org > configure
chmod u+x configure

修正後、以下のコマンドでコンフィグレーションを実行します。

./configure --with-libraries=/usr/lib/aarch64-linux-gnu

configureスクリプトの実行が成功したら以下のコマンドでコンフィギュレータをビルドします。

make OPTIONS=-std=c++11

ビルドに成功すると cfgディレクトリ配下にcfgコマンドが生成されます。

 |--cfg/
 |  |--cfg/
 |  |  |--cfg

生成されたcfgコマンドを aspディレクトリ配下のcfg/cfgディレクトリへコピーしてカーネルのコンフィグレーションの準備が完了です。

mkdir -p ../asp/cfg/cfg
cp ./cfg/cfg ../asp/cfg/cfg/cfg

TOPPERS/ASPカーネルソースのコンフィグレーション

cfgコマンドの生成とコピーが終わったら次はTOPPERS/ASPカーネルソースのコンフィグレーションを実行します。
まずはtoppers_asp_pico2ディレクトリ直下へ戻りTOPPERS/ASPのビルド用ディレクトリを作成し、移動します。

cd ..
mkdir build
cd build

ビルド用ディレクトリへ移動したら以下のconfigureスクリプトを実行することでカーネルソースのコンフィグレーションを行います。
引数「-T raspberrypi_pico2_gcc」がラズパイPico2の指定となります。
引数「-dROM」はROM (Flash) 上で実行するコードを生成する指定となります。

../asp/configure -T raspberrypi_pico2_gcc -dROM

コンフィグレーションに成功するとbuildディレクトリ配下にMakefileが生成され、サンプルアプリケーションがコピーされます。

ubuntu@ubuntu:~/toppers_asp_pico2/build$ ll
total 48
drwxrwxr-x 2 ubuntu ubuntu  4096 Aug 26 15:29 ./
drwxrwxr-x 8 ubuntu ubuntu  4096 Aug 26 15:29 ../
-rw-rw-r-- 1 ubuntu ubuntu 15334 Aug 26 15:29 Makefile
-rw-rw-r-- 1 ubuntu ubuntu 15652 Aug 26 15:29 sample1.c
-rw-rw-r-- 1 ubuntu ubuntu   918 Aug 26 15:29 sample1.cfg
-rw-rw-r-- 1 ubuntu ubuntu  3246 Aug 26 15:29 sample1.h

TOPPERS/ASP+アプリケーションのビルド

TOPPERS/ASPカーネルソースのコンフィグレーションを実行するとサンプルアプリケーションがコピーされ、Makefileもサンプルアプリケーションをビルドするための内容になります。
独自のアプリケーションをビルドする場合、ソースファイルの修正や追加を行い、併せてMakefileも修正してください。

今回はサンプルアプリケーションをそのまま使いTOPPERS/ASPとアプリケーションのビルドを行います。
ビルドはbuildディレクトリ配下でmakeコマンドを実行します。
なお、TOPPERS/ASPカーネルソースのビルドでは必要なファイルを生成しながらコンパイルが行われるため、ビルド処理を並行して行う 「-j」オプションの指定( make -j4 など)は禁止です

make

TOPPERS/ASP+アプリケーションのビルドに成功すると以下のaspファイルが生成されます。

-rwxrwxr-x 1 ubuntu ubuntu 301404 Aug 20 07:36 asp*
-rwxrwxr-x 1 ubuntu ubuntu  87956 Aug 20 07:36 asp.srec*
-rw-rw-r-- 1 ubuntu ubuntu   9239 Aug 20 07:36 asp.syms

uf2形式変換ツールのビルド

TOPPERS/ASP+アプリケーションのビルドが成功するとaspファイル、asp.srecファイルがバイナリファイルとして生成されます。
ラズパイPico2のBOOTSELボタンを押しながら起動するとマスストレージモードで立ち上がってバイナリファイルを書き込める状態になりますが、このとき利用できるのはuf2形式のファイルで先の2つのファイルでは書き込むことができません。
このためELF形式のaspファイルを uf2形式へ変換するツールを用意します。

ELF形式からuf2形式への変換ツールですが、以前はpico-sdkパッケージに含まれていましたが、現在はpicotoolパッケージで提供されています。
picotoolパッケージから変換ツールをビルドする手順を記します。

ソースパッケージの取得

以下の2つのパッケージを取得します。

toppers_asp_pico2ディレクトリ移動後、2ファイルをダウンロードします。
2ファイルともgithub上のファイルなのでgit cloneでダウンロードすることで展開もされます。

cd ~/toppers_asp_pico2
git clone https://github.com/raspberrypi/picotool.git
git clone https://github.com/raspberrypi/pico-sdk.git

picotoolパッケージのビルド

picotoolパッケージのビルド用ディレクトリを作成・移動してpico-sdkへのパス設定とpicotoolのcmakeを実行します。
cmakeでビルドに必要なファイルを生成してmakeでビルドを実行します。

mkdir build-tool
cd build-tool
export PICO_SDK_PATH=../pico-sdk
cmake ../picotool
make

make実行後にpicotoolという実行ファイルが生成されれば成功です。

-rwxrwxr-x  1 ubuntu ubuntu 1488432 Aug 27 07:22 picotool*
ubuntu@ubuntu:~/toppers_asp_pico2/build-tool$ ./picotool version
picotool v2.2.0-a4 (Linux, GNU-13.3.0, Release)

uf2ファイルの生成

ビルドしたpicotoolを使ってTOPPERS/ASP+アプリケーションのELF形式からuf2形式へ変換を行います。
ここからはTOPPERS/ASP+アプリケーションをビルドした ~/toppers_asp_pico2/buildディレクトリ で作業を行います。

cd ~/toppers_asp_pico2/build

buildディレクトリ配下に生成されたasp ファイルが ELF形式のファイルなのですが、picotoolの仕様でaspというファイル名では ELF形式のファイルと認識されずに picotoolコマンドがエラーとなります。

ubuntu@ubuntu:~/toppers_asp_pico2/build$ ../build-tool/picotool info asp
ERROR: filename 'asp' does not have a recognized file type (extension)

このためaspファイルを asp.elfというファイルへコピーします。
※ mvコマンドでファイル名の変更でも構いませんが、確認のため元ファイルが残るコピー操作に必要なファイルを生成します。

cp -a asp asp.elf
ubuntu@ubuntu:~/toppers_asp_pico2/build$ ll asp*
-rwxrwxr-x 1 ubuntu ubuntu 301404 Aug 20 07:36 asp*
-rwxrwxr-x 1 ubuntu ubuntu 301404 Aug 20 07:36 asp.elf*
-rwxrwxr-x 1 ubuntu ubuntu  87956 Aug 20 07:36 asp.srec*
-rw-rw-r-- 1 ubuntu ubuntu   9239 Aug 20 07:36 asp.syms

生成した asp.elf で問題がないか確認しておきます。

ubuntu@ubuntu:~/toppers_asp_pico2/build$ ../build-tool/picotool info asp.elf
File asp.elf:

Program Information
 name:          asp
 version:       1.9.3
 binary start:  0x10000000
 binary end:    0x1000726c
 target chip:   RP2350
 image type:    ARM Secure

以下のコマンドでELF形式からuf2形式へ変換を行います。
asp.uf2ファイルが生成されていれば成功です。

../build-tool/picotool uf2 convert asp.elf asp.uf2
ubuntu@ubuntu:~/toppers_asp_pico2/build$ ll asp*
-rwxrwxr-x 1 ubuntu ubuntu 301404 Aug 20 07:36 asp*
-rwxrwxr-x 1 ubuntu ubuntu 301404 Aug 20 07:36 asp.elf*
-rwxrwxr-x 1 ubuntu ubuntu  87956 Aug 20 07:36 asp.srec*
-rw-rw-r-- 1 ubuntu ubuntu   9239 Aug 20 07:36 asp.syms
-rw-rw-r-- 1 ubuntu ubuntu  58880 Aug 27 07:47 asp.uf2

ラズパイPico2を使っての動作確認

TOPPERS/ASP+アプリケーションをビルドし、変換したバイナリファイル asp.uf2が実際のラズパイPico2で動作するかを確認します。

シリアルコンソールの準備

TOPPERS/ASPのサンプルアプリケーションはシステムログを通してUARTからログを出力するようになっています。
ラズパイPico2用TOPPERS/ASPの初期状態ではUART0のTXD、RXDがそれぞれGPIO0、GPIO1を使用するように設定されています。
なお、通信速度は115200bpsです。
このため、USBシリアル変換モジュールなどを使いWindowsPCと接続することで動作結果をWindowsPC上のターミナルソフトで入出力を行うことができます。
シリアルコンソールとして使用するピンや接続先を以下に記すので接続を行ってください。
接続後、WindowsPC上でターミナルソフトを起動し、USBシリアル変換モジュールのCOMポートへ設定してください。

Default UART0 Physical Pin GPIO Pin USB-シリアル
UART0_TX 1 GPIO0 RX
UART0_RX 2 GPIO1 TX
GND 3 - (GND) GND

Pico_Def_UART_line.jpg

プログラムの書き込み

ラズパイPico2へのプログラムの書き込みについて記します。

  • uf2ファイルのWindowsPCへの転送
    ビルド、形式変換してラズパイ5上にあるasp.uf2ファイルをWindowsPCへ転送します。
    WinSCPなどのツールを使いネットワーク経由で、もしくは、USBメモリなどを仲介してラズパイ5からWindowsPCへ転送してください。

  • ラズパイPico2をWindowsPCへ接続
    USBミニBケーブルを使いWindowsPCのUSBポートとラズパイPico2を接続します。
    接続する際にラズパイPico2上のBOOTSELボタンを押しながらWindowsPCと接続してください。
    なお、ラズパイPico2に加工、または拡張ボードを使いリセットボタンが利用可能であれば接続時にBOOTSELボタンの押下はせずに
    プログラムの書き込み直前にBOOTSELボタンを押下しながらリセット操作を行ってもよいです。

  • プログラムの書き込み
    WindowsPC上のエクスプローラーを開き、ドライブ RP2350(?:)asp.uf2ファイルをコピーしてください。
    ドライブ RP2350(?:) が存在しない場合、前述のBOOTSELボタンを押しながらWindowsPCとの接続、もしくは、リセット操作を再度行ってください。

プログラムの動作確認

ラズパイPico2へのasp.uf2ファイルのコピーが成功するとWindowsPC上のターミナルソフトへ以下のような表示がされれば成功です。

ToppersContest2025_ASP_01.jpg

シリアルポートの変更方法

シリアルポートとして使用するピンやデバイスの定義はTOPPERS/ASPのソースツリーの以下の箇所に記述されています。
使用するハードウェアに合わせて定義し、ビルドすることで使用するデバイス、ピンを変更することができます。

asp/target/raspberrypi_pico2_gcc/target_serial.h
 64 #define TX1_PINPOS         0
 65 #define RX1_PINPOS         1
 66 #define TX2_PINPOS         8
 67 #define RX2_PINPOS         9
asp/target/raspberrypi_pico2_gcc/Makefile.target
 70 #
 71 #  シリアルポートの定義
 72 #
 73 COPTS := $(COPTS) -DSIO_PORTID=1

なおシリアルポートとして使用するデバイスは下表のように定義します。

デバイス 設定 使用ピン定義
UART0 SIO_PORTID=1 TX1_PINPOS, RX1_PINPOS
UART1 SIO_PORTID=2 TX2_PINPOS, RX2_PINPOS

例えば下表のデバイスとピンをシリアルとして使用する場合の変更内容は以下の通りです。

デバイス UART1
TXD GPIO 20
RXD GPIO 21
asp/target/raspberrypi_pico2_gcc/target_serial.h
 66 #define TX2_PINPOS         20
 67 #define RX2_PINPOS         21
asp/target/raspberrypi_pico2_gcc/Makefile.target
 73 COPTS := $(COPTS) -DSIO_PORTID=2

さいごに

TOPPERS/ASPはconfigureによる環境設定が必要で自前のcfgコマンドを使ってカーネルのコンフィグレーションを行います。
ただし、cfgコマンドは利用者それぞれの環境でのビルドが必要であり使用する環境によってはそのままビルドできない問題を含んでいます。
このため、TOPPERSの初心者が利用するにはハードルが高いソフトウェアとなっていると思います。
今回のビルド手順ではubuntuでそのままビルドできない問題の回避方法を記すとともに、TOPPERS/ASPカーネル+アプリケーションのビルドが成功するまでの環境構築から操作手順、および実際にラズパイPico2上でプログラムを動作させる方法を記していますので、TOPPERS/ASPを使う開発者の参考になれば幸いです。

参考情報

TOPPERS/ASPやTOPPERS/ASP3のビルド方法などを記した記事の一覧を以下に記します。

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?