TOPPERS 活用アイデア・アプリケーション開発
コンテスト

部門

：活用アイデア部門
アプリケーション開発部門： Docker を利用した TOPPERS BASE PLATFORM 向けビル

作品のタイトルド環境およびシミュレータによる組込み OS セミナー向けカーネルの開発
作成者：

アライブビジョンソフトウェア株式会社 髙橋和浩

共同作業者

： -対象者：

プログラムを覚えたての初級者
RTOS/TOPPERS に触れてみたいが時間が無い方
TOPPERS カーネルをビルドに失敗した方使用する開発成果物：

１．TOPPERS BASE PLATFORM STM32F401RE nucleo-64 向けの①環境 Docker イメージ
②ビルド用 DockerFile③ARM マシン用の環境

Docker イメージ

④ARM マシン用ビルド用 DockerFile
２.組込み OS セミナー用カーネル①カーネル本体（Visual Studio Code 用の設定ファイルが含まれている。)
環境 Docer イメージは １.①③と同じ
３．添付資料「1 章クイックスタート.pdf」

p. 1

目的・狙いARM マイ コンが TOPPERS カーネ ルで 利用されることが 多く 、開発環境 とTOPPERS カーネルのビルドにおいて、初見者にとってハードルになるケースがあることを一部のユーザーからご意見をいただいています。
ARM のツールチェーンおよび、TOPPERS 特有のツール(コンフィギュレータ)さらには、QEMU の環境や実機であれば TOPPERS BASE PLATFORM の関連ツールなどが一発でビルドできれば解決できるのではと考えました。 さらに個々人があれこれ設定することや個別の linux 環境の差異による環境構築が上手くいかない問題ができるだけ最小にできればと考えました。
今回は Docker しかも Docker のビルド機能のみで環境差異を最小にした状況でのTOPPERS カーネルのビルドを行える環境を用意しました。

p. 2

アイデア/アプリケーションの概要

上記がビルド環境のイメージ図です。
構成として以下の通りです。
① DockerHUB にインストール済みビルドツールイメージ② TOPPERS を②の環境でビルドする DockerFile を GitHUB に③ ホスト PC のアーキテキチャ別にご用意しています。
実行方法の概要① GitHUB から DockerFile を Clone します。
② DockerHUB から pull しておきます。
③ Docker ビルドでカーネルビルドまで終了します。
Docker run して中身を確認します。
また組込み OS セミナー用カーネルを本環境に適用し、ベンチャー企業にてセミナーを実施しました。
弊社ホームページ内 以下の URL
http://alivevision.o.oo7.jp/rtos-seminor-report.html

p. 3アプリケーションの詳細
提供物の仕様（特徴）対応 OS および確認マシン
Windows10 64bit 8GB メモリ

空きストレージ容量 20GB 以上

確認マシン ThinkPad X240 第４世代 Corei3
ChromeOS AMD64 4GB メモリ

空きストレージ容量 20GB 以上

確認マシン ASUS 425TA 4GB Core m3
ChromeOS ARM64 4GB メモリ

空きストレージ容量 20GB 以上

確認マシン Lenovo IdeaPad Duet Chromebook 4GB メモリ
128GB ストレージ対応カーネルTOPPERS/ASP

Intel/ARM 両方

TOPPERS/ASP3 ARM のみ
ASP3 について Intel 環境はありませんが、方式は同じなので、DockerFile からコピーして追加すれば可能と考えます。
また Windows の Docker Desktop では、クロスプラットフォームの対応なのでWindows でも時間がかかりますが実行可能です。

対応ターゲット
シミュレータ ARM QEMU zynq および Raspberry-pi2
実機

Raspberry-pi2

実機

TOPPERS BASE PLATFORM STM32F401RE nucleo-64

Docker イメージの仕様
AMD64 用 Docker イメージ
toppersjp/armgcc-ubuntu:7-2018-q2 をベース
QEMU はベースに内蔵Intel32bit バイナリ実行環境を追加 コンフュギュレータ用
ただしコンフィギュレータは内蔵していない。
ARM64 用 Docker イメージp. 4

ubuntu:20.04 をベース
QEMU は toppers/qemu_zynq.git のソースからビルドしているコンフュギュレータは、DockerFile の github に ARM64 でビルドしたバイナリを同梱している。

各成果物のありか(URL)
1.①環境 Docker イメージ
https://hub.docker.com/repository/docker/alvstakahashi/stm32toolchain
これを生成した DockerFile は右の通り
https://github.com/alvstakahashi/stm32toolchain
1.②ビルド用 DockerFile
https://github.com/alvstakahashi/Toppers_ASP_Build_STM32
1.③ARM マシン用の環境 Docker イメージ
https://hub.docker.com/repository/docker/alvstakahashi/stmtoolchainforduet
これを生成した DockerFile は右の通り
https://github.com/alvstakahashi/stmtoolchainforduet/blob/main/Dockerfile
1.④ARM マシン用 DockerFile
https://github.com/alvstakahashi/Toppers_ASP3_Build_STM32_Duet/blob/main/Dockerfile

2.①カーネル本体
https://github.com/alvstakahashi/RPI-SHRINK-SSP-FULL/tree/forRPI3-JTAG

実行方法
Windows 環境においては初級ユーザ向けに PC の仮想化 BIOS の設定から組込み OS セミナーのビルド実行までを図示したマニュアルをベースに順次進めていただければ実行可能です。添付資料「1 章クイックスタート.pdf」
手順通り実施すれば以下のコードレベルデバッガまで確認できます。

p. 5

（このスクリーンキャプチャは ARM64 ChromeOS 上で実行した例です）

ChromeOS での環境設定については、未作成です。ネットの情報等で確認し① Docker のインストール②Visual Studio Code のインストールを行ってください。

Visual Studio Code まで設定済みでえあれば、次の手順にて確認が可能です。

p. 6

【実行手順】
1.TOPPERS BASE PLATFORM STM32F401RE nucleo-64 TOPPERS/ASP をビルドする場合①ネットワークが重い場合があるので Docker イメージをローカルに置いておく
power シェルで実行します> docker pull alvstakahashi/stm32toolchain:1
受信できているか確認します。
>docker images②ubuntu ターミナルでシェルから実行する。Git から Clone する。
適当なフォルダに移動する。以下 c:¥DEV¥ASP の例$ cd /mnt/c/DEV/ASP$ git clone https://github.com/alvstakahashi/Toppers_ASP_Build_STM32.git③Docker ビルドを実行$ cd Toppers_ASP_Build$ Docker build -t aspbuild .
④できてることを確認する
Power シェルで確認>docker run -it --rm -v ${PWD}:/source aspbuild実行するとシェルが立ち上がっています。
root@e25ce2665f1b:/home/toppers#
ビルドファイルの確認します
root@e25ce2665f1b:/home/toppers# ls asp/OBJ.o ファイル asp ファイルなどが表示されれば OK です。
⑤Windows の環境にコピーするにはdf でマウント情報を確認すると、/source が先ほどのフォルダなのでroot@e25ce2665f1b:/home/toppers# cp -r asp/* /source/.
でコピーできます。
2.それ以外の環境
それぞれのビルド用 DockerFile を公開している README.md を参照ください。
基本的に上記 1 と同じです。それぞれの①②③④⑤を実施してみてください。
以下 ARM64 環境でビルド後 Zynq マシン用のバイナリを QEMU で実行例になります。

p. 7

以上

p. 8