M5StickV で TOPPERS BASE PLATFORM を動かしてみる


TOPPERS Advent Calendar 2020 2 日目の記事です。

はじめに

M5StickV で TOPPERS を動かしてみる で、M5StickV上でTOPPERSが動作することができたので、次は TOPPERS BASE PLATFORM を動かしてみます。TOPPERS BASE PLATFORM にはデバイスドライバーが含まれていて、M5StickV のいくつかのデバイスもサポートされています。

準備

ツールチェーン

M5StickV で TOPPERS を動かしてみる では、Platform IOでインストールされたツールチェーンをそのまま使ってみましたが、TOPPERS BASE PLAFORM(ST) の標準で指定されている The xPack GNU RISC-V Embedded GCC を使用します。

以下の順にインストールします

TOPPERS BASE PLAFORM(ST)

M5StickV で TOPPERS を動かしてみる でダウンロードした3つのファイルに加えて、

TOPPERS BASE PLAFORM(ST): asp_baseplatformv1.4.1_051120.tar.gz

M5StickV用のパッチ: TOPPERS M5StickV patch

をダウンロードします。

作業を行うディレクトリーに以下の4つのファイルを入れます。

asp-1.9.3.tar.gz
asp_arch_riscv_gcc-1.9.4.tar.gz
asp_baseplatformv1.4.1_051120.tar.gz
cfg-osx-static-1_9_5.tar.gz
toppers-m5stickv-patch.zip

解凍します

tar xvzf asp-1.9.3.tar.gz                     # 1. asp フォルダーが作成されます
tar xvzf asp_baseplatformv1.4.1_051120.tar.gz # 2. asp フォルダーに追加されます
tar xvzf asp_arch_riscv_gcc-1.9.4.tar.gz      # 3. asp_arch_riscv_gcc-1.9.4 フォルダーが作成されます
tar xvzf cfg-osx-static-1_9_5.tar.gz          # 4. cfg ファイルが作成されます
unzip toppers-m5stickv-patch.zip              # 5. toppers-m5stickv-patch-main ファイルが作成されます

3 〜 5 のファイルを asp フォルダーにコピーします

cp -pr asp_arch_riscv_gcc-1.9.4/asp/* asp

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

cp -pr toppers-m5stickv-patch-main/asp/* asp

ビルド

まず、カーネルをビルドします。

cd asp/OBJ/K210_GCC
mkdir libkernel
cd libkernel

#ツールチェーンのパス
PATH=$PATH:~/Library/xPacks/@xpack-dev-tools/riscv-none-embed-gcc/8.3.0-2.3.1/.content/bin

perl ../../../configure -T k210_gcc -f -g ../../../cfg/cfg/cfg
make depend

初回警告が表示されますので、キャンセルします。

このまま許可をクリックします。

再度実行します。

make depend

開くをクリックすると、makeが開始します。

これでビルドできるようになります。カーネルをビルドします。

make libkernel.a

アプリビルド (TEST)

カーネルがビルドできたら、アプリをビルドします。

cd ../TEST
make depend
make

M5StickVをUSBで接続して、フラッシュメモリに書き込みます。

~/.platformio/packages/tool-kflash-kendryte210/kflash.py asp.bin

VSCodeのターミナル等でシリアル接続すると、次のようなログが出力されました。

TOPPERS/ASP Kernel Release 1.9.3 for K210 (Nov 24 2020, 21:28:00)
Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
                            Toyohashi Univ. of Technology, JAPAN
Copyright (C) 2004-2014 by Embedded and Real-Time Systems Laboratory
            Graduate School of Information Science, Nagoya Univ., JAPAN
Copyright (C) 2017-2019 by Education Working Group TOPPERS PROJECT

mSystem logging task is started on port 1.

ASP TASK Monitor Release 1.2.0 for K210 (Nov 24 2020, 21:10:31)
Copyright (C) 2016-2019 by TOPPERS PROJECT Educational Working Group
mon>h
  Display BYTE     [start address] [end address]
          HALF     [start address] [end address]
          WORD     [start address] [end address]
          TASK
          REGISTER
  Set     BYTE     [start address]
          HALF     [start address]
          WORD     [start address]
          COMMAND  [mode]  mode=1 or (2)
          SERIAL   [port id]
          TASK     [task id]
  Task    ACTIVATE          (act_tsk)
          TERMINATE         (ter_tsk)
          SUSPEND           (sus_tsk)
          RESUME            (rsm_tsk)
          RELEASE           (rel_tsk)
          WAKEUP            (wup_tsk)
          PRIORITY [pri]    (chg_pri)
  Log     MODE     [logmask] [lowmask]
          TASK     [cycle time(ms)] [count]
          PORT     [no] [logno] [portaddress]
  Help    [arg1]
  Rtc     DATE  (year #) (month #) (day #)
          TIME  (hour #) (min   #) (sec #)
          INTM  mode(0-4)
          WAKEUP time(sec)
          CLOCK DATE:TIME
mon>

アプリビルド (DEMO)

DEMOアプリをビルドします。

cd ../DEMO
make depend
make

M5StickVをUSBで接続して、フラッシュメモリに書き込みます。

~/.platformio/packages/tool-kflash-kendryte210/kflash.py asp.bin

おわりに

TOPPERS BASE PLATFORM が動きました。他のデバイスも動かしてみたいと思います。