LoginSignup
3
1

More than 3 years have passed since last update.

QEMU 上の RTOS で遊ぼう (再訂:その1)

Last updated at Posted at 2019-09-11

本稿では Linux 上での TOPPERS/ASP3 カーネルのビルド方法について述べ、ビルドしたカーネルをqemuで動作させるまでの概要を説明します。
検証環境は Debian buster (4.19.0-6-amd64, ruby 2.5.5p157) および Gentoo (amd64, linux-4.19, ruby 2.4.6) です。
Debian Stretch / Ubuntu xenial であれば本稿を再現できると思いますが、検証していません。

Debian stretch/buster ではARM用GCCの起動ができないエラーが発生し、動作確認ができていません。Ubuntu についても同様にgccが起動できないため、解決方法を探しています。exec が ENOENT を返しているように見えます。
amd64環境でARM用GCCを起動するためには、クロスビルド環境向けのライブラリをインストールする必要があります。
apt-get install libc6-dev-i386

Debian もしくは Ubuntu 、Gentoo の nomultilib 環境では以下のようなエラーが出てコンパイラが起動できない場合があります。
上記ライブラリがインストールされていない可能性がありますので、ご注意ください。

cibuild@c47d0951d9f9:~$ which arm-none-eabi-gcc 
/home/cibuild/gcc-arm-none-eabi-4_8-2014q3/bin/arm-none-eabi-gcc
cibuild@c47d0951d9f9:~$ arm-none-eabi-gcc --version
bash: /home/cibuild/gcc-arm-none-eabi-4_8-2014q3/bin/arm-none-eabi-gcc: No such file or directory

1. RTOSの特徴とTOPPERSの長所

豊富な先行文献があります。(以下略)

2. 環境構築

2016年のこちらの記事1が参考になります。
このブログの解説ではASP3カーネルのビルドにWindowsを用いることになっていますが、Linuxでも開発できます。今回ビルドする構成の概要に付いてはこちら2やこちら3を参考にしています。
TOPPERS/ASP3のビルドツールチェーンでは、rubyを用いてMakefileを生成するので、rubyやqemuをインストールしておきます。portageからQEMUをビルドする場合には QEMU_SOFTMMU_TARGETS の指定が必要です。debianの場合も qemu-system-arm を導入しておく必要があります。ARM環境をエミュレーションする場合、必須です。

/etc/portage/make.conf
QEMU_SOFTMMU_TARGETS="x86_64 arm i386"
emerge --quiet --jobs 2 --ask dev-lang/ruby
emerge --quiet --jobs 2 --ask app-emulation/qemu

先のブログにしたがって、lanchpad.netからARM用GCCコンパイラを導入します。

mkdir -p ~/Dev/Toppers && cd ~/Dev/Toppers
target=gcc-arm-none-eabi-4_8-2014q3-20140805-linux.tar.bz2
dst="https://launchpad.net/gcc-arm-embedded/4.8/4.8-2014-q3-update/+download/gcc-arm-none-eabi-4_8-2014q3-20140805-linux.tar.bz2 "
md5dst="https://launchpad.net/gcc-arm-embedded/4.8/4.8-2014-q3-update/+download/gcc-arm-none-eabi-4_8-2014q3-20140805-linux.tar.bz2/+md5"
curl -sL $dst > $target
curl $md5dst | grep "`md5sum $target | cut -d \  -f 1`" && echo ok || { echo error!; exit 1;}
tar xvjf $target
echo export PATH=$PWD/gcc-arm-none-eabi-4_8-2014q3/bin:\$PATH >> ~/.bashrc
. ~/.bashrc
arm-none-eabi-gcc --version

3. ソースコードのダウンロード・展開

本家4から最新の簡易版ソースコードをダウンロードしておきます。

wget https://www.toppers.jp/download.cgi/asp3_arm_gcc-20190320.tar.gz
md5sum asp3_arm_gcc-20190320.tar.gz | grep  8d2d1d5a10c39c93e8972789f2bc7202
tar xvzf asp3_arm_gcc-20190320.tar.gz

4. TOPPERS/ASP3をビルドする

doc/user.txt のビルド方法にしたがって、次の通りビルドを実施します。
(ビルドオプションについては 同ドキュメント に詳しい解説が載っています。目を通しておきましょう。)

cd asp3
mkdir OBJ && cd OBJ
ruby ../configure.rb -T ct11mpcore_gcc -O -DTOPPERS_USE_QEMU
make

問題なくビルドが完了します。エラーで停止した場合はPATHを確認しておきましょう。

5. QEMUで起動してみる

オブジェクトディレクトリの直下に asp という名前でカーネルが生成されています。
これをqemuで実行してみましょう。

$ ls -l asp
-rwxr-xr-x 1 ymash ymash 364227  9月 11 02:26 asp
$ qemu-system-arm -M realview-eb-mpcore -semihosting -m 128M -smp 1 -serial vc -kernel asp

View -> serial を選択すると、シリアルコンソールのログを読むことができます。

6. 遊ぶ

scr1.png

シリアルコンソールを表示しておき r を押下すると、タスクが切り替わります。
何度も押下すると、3つのタスクが繰り返し切り替わることに気づきます。
このビルドではTECSプラットフォーム5のサンプルアプリが起動しており、初期状態で3つのタスクが起動する構成になっているようです。

7. 終わりに


本稿はCC-BY-4.0に基づいて自由に利用頂けます。
クリエイティブ・コモンズ・ライセンス

3
1
0

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
3
1