##はじめに
Raspberry Pi財団が開発・提供しているワンチップマイコンボード Rapsberry Pi Pico(以後、ラズパイPIco)で動作する RTOSの TOPPERS/ASP3 3.5.0のソースコードがTOPPERSプロジェクトから公開されています。
ただし、TOPPERS/ASP3のカーネル本体は 3.6.0が最新版としてリリースされていて、ビルド環境の制限などが改善されています。
このため、ラズパイPico用TOPPERS/ASP3 3.5.0のソースコードを流用し、TOPPERS/ASP3 3.6.0をラズパイPicoで動作させようと考えました。
・ASP3 3.5.0 Raspberry Pi Pico 簡易パッケージ
https://www.toppers.jp/asp3-e-download.html#raspi_pico
・TOPPERS/ASP3のページ
https://www.toppers.jp/asp3-kernel.html
##開発環境
以前にQiitaへ記した「TOPPERS/ASP3のビルド環境の検証」の「環境構築」にラズベリーパイを使った開発環境の構築方法を記してあるので、こちらを参照ください。
・「TOPPERS/ASP3のビルド環境の検証」の「環境構築」
https://qiita.com/Yukiya_Ishioka/items/2317b35ab0b98e15f6d0#環境構築
##ソースのダウンロード
「TOPPERS/ASP3カーネル ターゲット非依存部パッケージ」のasp3-3.6.0.tar.gzと「TOPPERS/ASP3カーネル簡易パッケージ・Raspberry Pi Pico簡易パッケージ」の
asp3_raspberrypi_pico_gcc-20211016.tar.gzを使います。
以下の URLから各ファイルをダウンロードしてください。
・asp3-3.6.0.tar.gz
https://www.toppers.jp/download.cgi/asp3-3.6.0.tar.gz
・asp3_raspberrypi_pico_gcc-20211016.tar.gz
https://www.toppers.jp/download.cgi/asp3_raspberrypi_pico_gcc-20211016.tar.gz
●参考
・「TOPPERS/ASP3カーネル個別パッケージのダウンロード」ページ
https://www.toppers.jp/asp3-d-download.html
・「TOPPERS/ASP3カーネル簡易パッケージのダウンロード」ページ
https://www.toppers.jp/asp3-e-download.html
##ソースツリーの構築
前項でダウンロードしたソースファイルから必要なファイル、ディレクトリを集めてビルドに必要なソースツリーを構築します。
###ディレクトリの作成
ホームディレクトリ配下にtoppersディレクトリを作成し、ここに先にダウンロードしたasp3-3.6.0.tar.gzとasp3_raspberrypi_pico_gcc-20211016.tar.gzを配置します。
/home/ubuntu/toppers
-rw-rw-r-- 1 ubuntu ubuntu 718432 Dec 13 19:09 asp3-3.6.0.tar.gz
-rw-rw-r-- 1 ubuntu ubuntu 2171357 Dec 13 19:08 asp3_raspberrypi_pico_gcc-20211016.tar.gz
/home/ubuntu/toppersディレクトリへ移動し、tempディレクトリを作成します。
mkdir temp
###ソースファイルの展開
まず、/home/ubuntu/toppersディレクトリでasp3-3.6.0.tar.gzを展開します。
tar xzf asp3-3.6.0.tar.gz
ubuntu@ubuntu:~/toppers$ ll
total 2844
drwxrwxr-x 4 ubuntu ubuntu 4096 Dec 14 00:15 ./
drwxr-xr-x 37 ubuntu ubuntu 4096 Dec 14 00:10 ../
drwxrwxr-x 16 ubuntu ubuntu 4096 Dec 14 00:15 asp3/
-rw-rw-r-- 1 ubuntu ubuntu 718432 Dec 13 19:09 asp3-3.6.0.tar.gz
-rw-rw-r-- 1 ubuntu ubuntu 2171357 Dec 13 19:08 asp3_raspberrypi_pico_gcc-20211016.tar.gz
drwxrwxr-x 2 ubuntu ubuntu 4096 Dec 14 00:13 temp/
次にtempディレクトリへ移動してasp3_raspberrypi_pico_gcc-20211016.tar.gzを展開します。
cd temp
tar xzf ../asp3_raspberrypi_pico_gcc-20211016.tar.gz
ubuntu@ubuntu:~/toppers/temp$ ll
total 12
drwxrwxr-x 3 ubuntu ubuntu 4096 Dec 14 00:15 ./
drwxrwxr-x 4 ubuntu ubuntu 4096 Dec 14 00:15 ../
drwxrwxr-x 16 ubuntu ubuntu 4096 Dec 14 00:15 asp3/
###ビルド用のソースツリーの構築
元の/home/ubuntu/toppersディレクトリへ戻り、TOPPERS/ASP3 3.6.0本体である asp3ディレクトリへ、Raspberry Pi Pico簡易パッケージのソースが展開されているtemp/asp3ディレクトリから3つのディレクトリをコピーします。
1)arch/arm_m_gcc ディレクトリのコピー
2)target/raspberrypi_pico_gcc ディレクトリコピー
3)tecsgen ディレクトリのコピー
/bin/cp -a temp/asp3/arch/arm_m_gcc ./asp3/arch/
/bin/cp -a temp/asp3/target/raspberrypi_pico_gcc ./asp3/target/
/bin/cp -a temp/asp3/tecsgen ./asp3
ここまででビルドに必要なソースツリーの構築は完了です。
/home/ubuntu/toppers
|--asp3
| |--MANIFEST
| |--README.txt
| |--arch
| | |--arm_m_gcc
| |--gcc
| |--simtimer
| |--tracelog
| |--cfg
| |--configure.rb
| |--doc
| |--extension
| |--include
| |--kernel
| |--library
| |--sample
| |--syssvc
| |--target
| | |--dummy_gcc
| | |--raspberrypi_pico_gcc
| |--tecs_kernel
| |--tecsgen
| |--test
| |--test_cfg
| |--utils
|
|--temp
| |--asp3
|
|--asp3-3.6.0.tar.gz
|--asp3_raspberrypi_pico_gcc-20211016.tar.gz
##ラズパイPico用TOPPERS/ASP3のビルド
ラズパイPico用のTOPPERS/ASP3をビルドします。
###ビルドディレクトリの作成
はじめにビルド用のディレクトリを作成し、移動します。
mkdir build
cd build/
/home/ubuntu/toppers
|--asp3
|--build
###TOPPERS/ASP3のビルド
TOPPERS/ASP3のビルドを行います。
まず、以下のコマンドでラズパイPico用のコンフィギュレーションを行い、Makefileなどを生成します。
../asp3/configure.rb -T raspberrypi_pico_gcc
ubuntu@ubuntu:~/toppers/build$ ../asp3/configure.rb -T raspberrypi_pico_gcc
Generating Makefile from ../asp3/sample/Makefile.
ubuntu@ubuntu:~/toppers/build$ ll
total 32
drwxrwxr-x 3 ubuntu ubuntu 4096 Dec 14 00:38 ./
drwxrwxr-x 5 ubuntu ubuntu 4096 Dec 14 00:36 ../
-rw-rw-r-- 1 ubuntu ubuntu 17428 Dec 14 00:38 Makefile
drwxrwxr-x 2 ubuntu ubuntu 4096 Dec 14 00:38 objs/
makeコマンドでビルドを開始します。
make
以下のような表示が出て、aspファイルが生成されたらビルド成功です。
Memory region Used Size Region Size %age Used
FLASH: 24984 B 2 MB 1.19%
RAM: 13480 B 264 KB 4.99%
arm-none-eabi-nm -n asp > asp.syms
arm-none-eabi-objcopy -O srec -S asp asp.srec
ruby ../asp3/cfg/cfg.rb --pass 3 --kernel asp -O -I. -I../asp3/include -I../asp3/target/raspberrypi_pico_gcc -I../asp3/
arch/arm_m_gcc/rp2040 -I../asp3/arch/arm_m_gcc/common -I../asp3/arch/gcc -I../asp3 -I../asp3/sample -I./gen -I../asp3/te
cs_kernel -T ../asp3/target/raspberrypi_pico_gcc/target_check.trb \
--rom-symbol asp.syms --rom-image asp.srec
configuration check passed
make[1]: Leaving directory '/home/ubuntu/toppers/build'
-rw-rw-r-- 1 ubuntu ubuntu 17428 Dec 14 00:38 Makefile
-rwxrwxr-x 1 ubuntu ubuntu 426368 Dec 14 00:41 asp*
-rwxrwxr-x 1 ubuntu ubuntu 75004 Dec 14 00:41 asp.srec*
-rw-rw-r-- 1 ubuntu ubuntu 9109 Dec 14 00:41 asp.syms
###uf2ファイルへの変換
ラズパイPicoへのプログラムの書き込みは、elf2uf2というコマンドを使いuf2ファイルへ変換して、このuf2ファイルをラズパイPicoへコピーします。
elf2uf2コマンドは、ラズパイPico-SDKをビルドすると生成されます。ビルド方法などはラズパイPico-SDKのgithubのページを参照してください。
・ラズパイPico-SDKのgithub
https://github.com/raspberrypi/pico-sdk
ここでは、elf2uf2コマンドを、/home/ubuntu/toppers/buildディレクトリへコピーし、以下のコマンドを実行します。
./elf2uf2 asp asp.uf2
成功するとasp.uf2ファイルが生成されます。
ubuntu@ubuntu:~/toppers/build$ ll asp.uf2
-rw-rw-r-- 1 ubuntu ubuntu 50176 Dec 14 00:50 asp.uf2
##動作確認
ビルドしたTOPPERS/ASP3 3.6.0のプログラムをラズパイPicoで実行するための手順を記します。
###UARTの接続
今回使用したRaspberry Pi Pico簡易パッケージでは、GP0とGP1がそれぞれUARTのTX、RXとして設定され、シリアル入出力に使用可能です。
GP0、GP1、GNDを USB-シリアル変換モジュールでPCと接続し、このCOMポートを115200bpsでTeraTermなどの端末ソフトで開くとサンプルプログラム出力結果を表示することができます。
###ファイルの書き込み
生成されたasp.uf2ファイルをラズパイPicoへ書き込めばTOPPERS/ASP3 3.6.0をラズパイPicoで動作させることができます。
ラズパイPicoへ書き込みは、ビルドに使ったubuntuマシンへ接続、マウントしてコピーするか、
asp.uf2ファイルをWindowsPCなどへコピーし、エクスプローラーでラズパイPicoへコピーすることで行えます。
###実行結果
asp.uf2ファイルのラズパイPicoへの書き込みに成功すると、端末上に以下のような情報が出力され、動作を確認することができます。
TOPPERS/ASP3 Kernel Release 3.6.0 for RaspberryPi Pico:ARM Cortex-M0+ (Dec 14 2021, 00:41:11)
Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
Toyohashi Univ. of Technology, JAPAN
Copyright (C) 2004-2020 by Embedded and Real-Time Systems Laboratory
Graduate School of Information Science, Nagoya Univ., JAPAN
System logging task is started.
Sample program starts (exinf = 0).
task1 is running (001). |
task1 is running (002). |
task1 is running (003). |
task1 is running (004). |
task1 is running (005). |
task1 is running (006). |
task1 is running (007). |
task1 is running (008). |
task1 is running (009). |
task1 is running (010). |
task1 is running (011). |
task1 is running (012). |
task1 is running (013). |
task1 is running (014). |
task1 is running (015). |
task1 is running (016). |
task1 is running (017). |
task1 is running (018). |
task1 is running (019). |
task1 is running (020). |
task1 is running (021). |
task1 is running (022). |
task1 is running (023). |
##最後に
表面上はTOPPERS/ASP3 3.5.0との違いは分かりませんが、3.6.0へ上げることでビルド環境の改善や 'たぶん' 不具合などが改善されてると思うので、最新版のTOPPERS/ASP3 3.6.0をラズパイPicoで試してみてはいかがでしょうか。
- 以上 -