3
Help us understand the problem. What are the problem?

posted at

updated at

Organization

TOPPERS/ASP3 3.6.0をRaspberry Pi Picoで動かす

はじめに

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.gzasp3_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で試してみてはいかがでしょうか。
- 以上 -

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
3
Help us understand the problem. What are the problem?