概要
- Zephyr ProjectというRTOSの開発環境をVagrantで作って、サクッと試す。
- 参考: https://docs.zephyrproject.org/1.13.0/getting_started/installation_linux.html
環境
- Windows 10 Pro (1803) 64bit
- VirtualBox v5.2.18 + Extension Pack
- Vagrant v2.1.5
- Boxベース: 'ubuntu/bionic64' (v20180919.0.0) for 'virtualbox'
- Zephyr: v1.13.0
Vagrantfile
Vagrantfile
# -*- mode: ruby -*-
# vi: set ft=ruby :
#
# https://qiita.com/mt08/items/9014862d81282f4e04f0
#
# Reference(s):
# https://docs.zephyrproject.org/1.13.0/getting_started/installation_linux.html
#
# vagrant up && vagrant reload
VM_NAME="u1804-zephyr"
VM_MEMORY=2048
VM_CORES=2
Vagrant.configure("2") do |config|
config.vm.box = "ubuntu/bionic64"
config.vbguest.auto_update = false
#config.vm.network "public_network"
config.vm.network "forwarded_port", guest: 22, host: 2322, id: "ssh"
config.vm.provider "virtualbox" do |vb|
vb.name = VM_NAME
vb.cpus = VM_CORES
vb.memory = VM_MEMORY
end
config.vm.provision "shell", inline: <<-SHELL
# Allow ssh with PasswordAuthentication
sed -i -e 's/PasswordAuthentication no/PasswordAuthentication yes/g' /etc/ssh/sshd_config
systemctl restart ssh
# apt-cache-server
#echo 'Acquire::http::Proxy "http://apt-cache-server:3142";' | tee /etc/apt/apt.conf.d/02proxy
#
export DEBIAN_FRONTEND=noninteractive
echo apt update & upgrade
apt-get -qq update && apt-get -qq upgrade
echo Installing Requirements and Dependencies
apt-get -qq install -y --no-install-recommends git cmake ninja-build gperf ccache doxygen dfu-util device-tree-compiler python3-ply python3-pip python3-setuptools python3-wheel xz-utils file make gcc-multilib autoconf automake libtool librsvg2-bin texlive-latex-base texlive-latex-extra latexmk texlive-fonts-recommended
#
echo zephyr-sdk
wget --quiet --continue https://github.com/zephyrproject-rtos/meta-zephyr-sdk/releases/download/0.9.3/zephyr-sdk-0.9.3-setup.run -O /vagrant/zephyr-sdk-0.9.3-setup.run
echo "/opt/zephyr-sdk" | /bin/sh /vagrant/zephyr-sdk-0.9.3-setup.run --quiet
SHELL
config.vm.provision "shell", privileged: false, inline: <<-SHELL
cd ${HOME}
echo git clone
git clone https://github.com/zephyrproject-rtos/zephyr.git
cd zephyr
git checkout zephyr-v1.13.0
#
echo "export ZEPHYR_BASE=$(pwd)" >> ${HOME}/.profile
echo 'source $ZEPHYR_BASE/zephyr-env.sh' >> ${HOME}/.profile
cd ${HOME}
echo 'export ZEPHYR_TOOLCHAIN_VARIANT=zephyr' > ${HOME}/.zephyrrc
echo 'export ZEPHYR_SDK_INSTALL_DIR=/opt/zephyr-sdk' >> ${HOME}/.zephyrrc
#
source ${HOME}/.profile
echo Install additional packages required for development with Zephyr:
pip3 install --quiet --user -r $ZEPHYR_BASE/scripts/requirements.txt
SHELL
end
手順
開発環境セットアップ
- VirtualBoxとVagrantをインストールして、使えるようにする
- 適当なフォルダを作って、↑の
Vagrantfile
作成 vagrant up && vagrant reload
- 待つ (20分~)
サンプルアプリのビルド(Hello World
)
qemu_cortex_m3環境にて
-
vagrant ssh
にてログイン -
以下実行
cd $ZEPHYR_BASE/samples/hello_world mkdir build && cd build # cmakeを使ってNinjaベースのビルドシステムを設定: cmake -GNinja -DBOARD=qemu_cortex_m3 .. # 生成されたビルドシステムにて、ninjaを実行: ninja ninja run
-
Hello World! arm
が表示される. CTRL-A, x にてqemuを抜ける実行例vagrant@ubuntu-bionic:~/zephyr/samples/hello_world/build$ ninja run [0/1] To exit from QEMU enter: 'CTRL+a, x'[QEMU] CPU: cortex-m3 ***** Booting Zephyr OS zephyr-v1.13.0 ***** Hello World! arm QEMU: Terminated vagrant@ubuntu-bionic:~/zephyr/samples/hello_world/build$
hello_worldのソースコード
-
main.c
zephyr/samples/hello_world/src/main.c/* * Copyright (c) 2012-2014 Wind River Systems, Inc. * * SPDX-License-Identifier: Apache-2.0 */ #include <zephyr.h> #include <misc/printk.h> void main(void) { printk("Hello World! %s\n", CONFIG_ARCH); }
その他
- Apache系のmynewtってのもあったな..