LoginSignup
4

More than 3 years have passed since last update.

TOPPERS/ASP(2020-03-10版)をビルドして動かす

Last updated at Posted at 2020-03-24

はじめに

以前にも「TOPPERS/ASPをビルドして動かしてみる」、「TOPPERS/ASP3をビルドして動かしてみる」としてTOPPERS/ASPを題材にした記事を投稿しましたが、2020年03月10日付の ARM Cortex-M4用と ARM Cortex-M7用の依存部パッケージのバージョンアップされてたという記事を見つけたので、この新しいバージョンのソースコードを使って再びビルド実行を試してみることにしました。

・TOPPERSホームページ
 https://www.toppers.jp/

・ASP 1.9.6 ARM Cortex-M4アーキテクチャ・GCC依存部パッケージ
 https://www.toppers.jp/asp-d-download.html#arm_m4

・ASP 1.9.5 ARM Cortex-M7アーキテクチャ・GCC依存部パッケージ
 https://www.toppers.jp/asp-d-download.html#arm_m7

いままでのQiitaの記事では ARM Cortex-M4をコアに持つ STMicroelectronics社(以下、STマイクロ)から発売されているNUCLEO-F401REというマイコンボード用のコードだけをビルドして実行していましたが、今回はCortex-M7をコアに持つボードを含めて以下の4つのボード用のコードをビルドして動作させてみました。

・NUCLEO-F401RE
・NUCLEO-F446RE
・NUCLEO-G474RE
・STM32F7-DISCOVERY

ちなみに「NUCLEO-G474RE」は「ARM Cortex-M4アーキテクチャ」の今回のバージョンアップで追加されたボードになります。
※他のボードは以前のバージョンで対応済みです。

gra_f401_1.jpg gra_f446_1.jpg
gra_g474_1.jpg gra_f7disc1.jpg

TOPPERS/ASPとは

以前の Qiitaの記事にも記していますが、ここでも簡単に紹介しておきます。
TOPPERS/ASPは、TOPPERSプロジェクト(TOPPERS:Toyohashi OPen Platform for Embedded Real-time Systems)が管理、公開しているITRON仕様のRTOSの1つです。TOPPERS新世代カーネルとしてワンチップマイコンで動かすことができるRTOSです。
機能などの詳細は以下のページを参照してください。

・TOPPERS/ASPカーネルのページ
 https://www.toppers.jp/asp-kernel.html

ビルド環境について

今回のビルド環境も以前のQiitaの記事と同様に Linux上に Arm Cortex-M用のクロスコンパイラなどのツールチェーンをインストールしてTOPPERS/ASPなどのソースコードをビルドしていきます。
環境構築に必要なファイルの所在や展開方法、注意点を「TOPPERS/ASPをビルドして動かしてみる」の「TOPPERS/ASPを動かすための準備」「ビルド環境の構築」に記してあり、今回のTOPPERS/ASPもこの環境でビルドできますので、そちらの記事を参考に環境構築してください。

TOPPERS/ASPのビルド準備

ビルド環境の準備が整ったら、次に実際にTOPPERS/ASPをビルドするための準備を行います。

1.ソースファイルの取得

ビルドをするにあたり、TOPPERS/ASPのターゲット非依存部と、今回の対象であるCortex-M4とCortex-M7のターゲット依存部のソースコードを以下からダウンロードします。

・ターゲット非依存部
 https://www.toppers.jp/download.cgi/asp-1.9.3.tar.gz

・ターゲット依存部
 https://www.toppers.jp/download.cgi/asp_arch_arm_m4_gcc-1.9.6.tar.gz
 https://www.toppers.jp/download.cgi/asp_arch_arm_m7_gcc-1.9.5.tar.gz

また、TOPPERS/ASPのソースコードの他に、ビルドに必要なコンフィグレータもダウンロードします。

・コンフィギュレータ Release 1.9.6
 https://www.toppers.jp/download.cgi/cfg-1.9.6.tar.gz

2.コンフィグレーションツールのビルド

cfg-1.9.6.tar.gzをUbuntu上の任意のディレクトリに展開します。
展開するとcfgディレクトリが生成され配下にファイルやディレクトリが展開されます。

tar xzf cfg-1.9.6.tar.gz
cd cfg

ここで./configureを実行したいのですがconfigureファイルの改行コードが0x0d 0x0aで作成されているため、このまま実行するとエラーでコンフィグレーションに失敗します。このため、以下の操作で改行コードを0x0aのみへ変換します。

mv configure configure.org
tr -d '\r' < configure.org > configure
chmod a+x configure

変換後、以下のコマンドでコンフィグレーションツールをビルドします。

./configure
make

ビルドに成功すると以下のコマンドが生成されますが、ここではこのままで次に進みます。

./cfg/cfg     ・・・・※1

3.TOPPERS/ASPカーネルのソースの展開

TOPPERS/ASPカーネルの以下のソースファイルを展開します。
 asp-1.9.3.tar.gz
 asp_arch_arm_m4_gcc-1.9.6.tar.gz
 asp_arch_arm_m7_gcc-1.9.5.tar.gz

cd ..
tar xzf asp-1.9.3.tar.gz
tar xzf asp_arch_arm_m4_gcc-1.9.6.tar.gz
tar xzf asp_arch_arm_m7_gcc-1.9.5.tar.gz

まず、asp-1.9.3.tar.gzを展開すると aspディレクトリ配下にTOPPERS/ASPカーネルの本体が展開されます。

asp
|-- arch
|   |-- gcc
|   |-- logtrace
|   `-- m68k_gcc
|-- doc
|-- extension
|-- include
|-- kernel
|-- library
|-- pdic
|-- sample
|-- syssvc
|-- target
|   `-- dve68k_gcc
|-- test
`-- utils

次にasp_arch_arm_m4_gcc-1.9.6.tar.gzasp_arch_arm_m7_gcc-1.9.5.tar.gzを展開すると、それぞれaspディレクトリ配下のarchディレクトリとtargetディレクトリへ Cortex-M4用、Cortex-M7用のそれぞれのターゲット依存部のコードが展開されます。

asp_arch_arm_m4_gcc-1.9.6.tar.gzを単体で展開した場合の構成

asp
|-- arch
|   |-- arm_m_gcc
|   |   |-- common
|   |   |-- stm32f4xx
|   |   |-- stm32g4xx
|   |   |-- stm32l4xx
|   |   `-- stm32wbxx
|   `-- gcc
|-- target
|   |-- stm32e407_gcc
|   |-- stm32f401nucleo_gcc
|   |-- stm32f429board_gcc
|   |-- stm32f446nucleo144_gcc
|   |-- stm32f446nucleo64_gcc
|   |-- stm32f4discovery_gcc
|   |-- stm32g431nucleo64_gcc
|   |-- stm32g474nucleo64_gcc
|   |-- stm32l476discovery_gcc
|   |-- stm32l476nucleo64_gcc
|   |   `-- stm32l4xx
|   |-- stm32l4r5nucleo144_gcc
|   `-- stm32wb55nucleo_gcc
`-- tools
    |-- TrueSTUDIO
    |   `-- stm32f401nucleo
    `-- rommon

asp_arch_arm_m7_gcc-1.9.5.tar.gzを単体で展開した場合の構成

asp
|-- arch
|   |-- arm_m_gcc
|   |   |-- common
|   |   |-- stm32f7xx
|   |   `-- stm32h7xx
|   `-- gcc
|-- target
|   |-- stm32f723discovery_gcc
|   |-- stm32f746nucleo144_gcc
|   |-- stm32f767nucleo144_gcc
|   |-- stm32f769discovery_gcc
|   |-- stm32f7discovery_gcc
|   `-- stm32h743nucleo144_gcc
`-- tools

展開後、先に作成した※1のcfgコマンドを asp/cfg/cfgディレクトリ配下へコピーします。

mkdir -p asp/cfg/cfg
cp -a cfg/cfg/cfg asp/cfg/cfg/
asp
 |-- arch
 |-- cfg
 |   `-- cfg
 |       `-- cfg ←ここへ cfgコマンド をコピー
 `-- doc

4.アプリケーションビルド用ディレクトリの作成

アプリケーション用ディレクトリとアプリケーションビルド用ディレクトリを作成します。
ここではアプリケーション用ディレクトリとしてマイコン種別が分かるディレクトリ名にしましたが、任意のディレクトリ名を付けて構いません。

mkdir -p f401/obj
mkdir -p f446/obj
mkdir -p g474/obj
mkdir -p f7disc/obj
asp
 |-- arch
 |  :
 |
 |-- f401     ←アプリケーション用ディレクトリ
 |   `-- obj  ←アプリケーションビルド用ディレクトリ
 |
 |-- f446
 |   `-- obj
 |
 |-- g474
 |   `-- obj
 |
 `-- f7disc
     `-- obj

TOPPERS/ASPのビルド実行

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

次にビルド対象のマイコン種別の/objディレクトリへ移動し、カーネルのコンフィグレーションを行います。
configureコマンドのオプションの意味は以下になります。
-T:ターゲットの選択
  今回動作させるボードに合わせ、それぞれのディレクトリで以下の文字列を指定します。
   stm32f401nucleo_gcc
   stm32f446nucleo64_gcc
   stm32g474nucleo64_gcc
   stm32f7discovery_gcc
  asp/target配下のディレクトリ名を指定することで他の
  ターゲットを選ぶことが可能です。
-d:実行環境の選定
  「RAM」以外を指定することでビルド後のコードをFlashメモリ領域へ割り当てます。

それぞれのディレクトリへ移動し、configureコマンドを実行します。

cd f401/obj
../../asp/configure -T stm32f401nucleo_gcc -dROM
cd ../..
cd f446/obj
../../asp/configure -T stm32f446nucleo64_gcc -dROM
cd ../..
cd f446/obj
../../asp/configure -T stm32g474nucleo64_gcc -dROM
cd ../..
cd f7disc/obj
../../asp/configure -T stm32f7discovery_gcc -dROM

2.Makefileの確認と修正

コンフィグレーションに成功すると、objディレクトリ配下にMakefileが生成されます。生成されたMakefile51行目79行目の定義を確認してください。

TARGET = stm32f401nucleo_gcc ←configureコマンドで指定したターゲット名
DBGENV := TOPPERS_ROM

ビルドで生成されるコードのファイルにバイナリファイルが含まれるよう331行目の次の行に定義を追加します。

  $(OBJCOPY) -O srec -S $(OBJFILE) $(OBJNAME).srec
  $(OBJCOPY) -O binary -S $(OBJFILE) $(OBJNAME).bin  ←追加

3.ビルド実行

objディレクトリで makeコマンドを実行してください。
ビルドに成功すると asp.bin などTOPPERS/ASPの実行に必要なファイルが生成されます。

make
$ ll asp*
-rwxrwxr-x 1 ubuntu ubuntu 301548  3月 25 02:54 asp*
-rwxrwxr-x 1 ubuntu ubuntu  28600  3月 25 02:54 asp.bin*
-rwxrwxr-x 1 ubuntu ubuntu  85868  3月 25 02:54 asp.srec*
-rw-rw-r-- 1 ubuntu ubuntu   8125  3月 25 02:54 asp.syms

マイコンボードで動かす

1.マイコンに書き込む

マイコンボードをUSB経由でPCと接続します。接続するとPCからはマスストレージとして認識され、エクスプローラーでファイルのコピー操作が可能となります。
次にUbuntu上でビルドにより生成された asp.binファイルをエクスプローラー経由でマイコンボードへコピーします。
コピーが完了するとボードへの書き込みが完了となります。

2.実行する

STマイクロのドライバをインストールすると、各マイコンボードのUSBは仮想COMポートとしても認識されます。
TeraTermなどのシリアル端末ソフトを立ち上げ、各マイコンボードのCOMポートを115200bpsで接続するとTOPPERS/ASPカーネルが出力するログ情報がシリアル端末ソフト上に表示され、TOPPERS/ASPカーネルとサンプルプログラムが動作していることを確認できます。
今回は全て同じサンプルプログラムを動作させているため表示はほとんど同じですが、起動直後の1行目にターゲットやマイコンコア名、および、ビルドの日時が出力されるので、異なるボードやプログラムが動作していることが確認できると思います。

・NUCLEO-F401REの出力例

TOPPERS/ASP Kernel Release 1.9.3 for stm32f401-nucleo(Cortex-M4) (Mar 24 2020, 01:13:55)
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) 2015-2016 by Education Working Group TOPPERS PROJECT

System logging task is started on port 1.
Sample program starts (exinf = 0).
task1 is running (001).   |
task1 is running (002).   |
task1 is running (003).   |
           :

・NUCLEO-F446REの出力例

TOPPERS/ASP Kernel Release 1.9.3 for stm32f446-nucleo-64(Cortex-M4) (Mar 24 2020, 01:27:50)
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) 2016 by Education Working Group TOPPERS PROJECT

System logging task is started on port 1.
Sample program starts (exinf = 0).
task1 is running (001).   |
task1 is running (002).   |
task1 is running (003).   |
           :

・NUCLEO-G474REの出力例

TOPPERS/ASP Kernel Release 1.9.3 for stm32fg474-nucleo-64(Cortex-M4) (Mar 24 2020, 01:36:13)
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) 2016-2019 by Education Working Group TOPPERS PROJECT

System logging task is started on port 1.
Sample program starts (exinf = 0).
task1 is running (001).   |
task1 is running (002).   |
task1 is running (003).   |
           :

・STM32F7-DISCOVERYの出力例

TOPPERS/ASP Kernel Release 1.9.3 for stm32f7-discovery(Cortex-M7) (Mar 24 2020, 01:31:49)
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) 2015-2016 by Education Working Group TOPPERS PROJECT, JAPAN

System logging task is started on port 1.
Sample program starts (exinf = 0).
task1 is running (001).   |
task1 is running (002).   |
task1 is running (003).   |
           :

さいごに

以前のTOPPERS/ASPの記事を書いたときにもユーザプログラムやMakefileへの登録方法を記事にしたいと書きましたが、毎回、TOPPERS/ASPに付属のサンプルプログラムでは面白みに欠けるので、次あたりには今回作成したビルド環境を利用したアプリケーション絡みの記事を書きたいと思います。

付録:リンク一覧

・TOPPERS/ASPをビルドして動かしてみる
 https://qiita.com/Yukiya_Ishioka/items/9ecbe080939600c323c6

・TOPPERS/ASP3をビルドして動かしてみる
 https://qiita.com/Yukiya_Ishioka/items/63618319d47ac743a631

・TOPPERS/ASPカーネルのページ
 https://www.toppers.jp/asp-kernel.html

・ASP 1.9.6 ARM Cortex-M4アーキテクチャ・GCC依存部パッケージ
 https://www.toppers.jp/asp-d-download.html#arm_m4

・ASP 1.9.5 ARM Cortex-M7アーキテクチャ・GCC依存部パッケージ
 https://www.toppers.jp/asp-d-download.html#arm_m7

・ターゲット非依存部
 https://www.toppers.jp/download.cgi/asp-1.9.3.tar.gz

・ターゲット依存部
 https://www.toppers.jp/download.cgi/asp_arch_arm_m4_gcc-1.9.6.tar.gz
 https://www.toppers.jp/download.cgi/asp_arch_arm_m7_gcc-1.9.5.tar.gz

・コンフィギュレータ Release 1.9.6
 https://www.toppers.jp/download.cgi/cfg-1.9.6.tar.gz

- 以上 -

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
4