Zephyrコンパイル環境構築(Linux+Window)
18016 ワード
Zephyrシステムの紹介
Zephyr™ プロジェクトはApache 2.0プロトコルライセンスを採用し、Linux財団が管理するコラボレーションプロジェクトです.すべてのリソース制限デバイスのために、低消費電力、小型メモリマイクロプロセッサデバイスのために最適化されたユビキタスネットワーク埋め込み型小型、拡張可能なリアルタイムオペレーティングシステム(RTOS)を構築し、多種のハードウェアアーキテクチャと多種の開発ボードをサポートし、8 kBメモリ未満のシステムで運行することができる.
Zephyrは深い安全開発ライフサイクルを採用している:安全検証、曖昧と浸透テスト、頻繁なコード審査、静的コード分析、脅威モデリングと審査、コード中の裏口を防止する.
ZephyrはBluetooth、Bluetooth Low Energy、Wi-Fi、802.15.4、6 Lowpan、CoAP、IPv 4、IPv 6、NFCなどの標準をサポートし、コミュニティ駆動の発展を通じて機能を改善し、強化しています.
Linuxベースのコンパイル環境構築
ZephyrはWindows/MAC/Linuxで開発できます.まずLinux(Ubuntu)での環境構築を紹介します.
1.ソフトウェアソースの更新
sudo apt-get update
sudo apt-get upgrade
2.依存パッケージのインストール
##
sudo apt-get install --no-install-recommends git cmake ninja-build gperf \
ccache doxygen dfu-util device-tree-compiler \
python3-ply python3-pip python3-setuptools xz-utils file make gcc-multilib
3.Zephyrソースウェアハウスのクローン
Zephyrソースコードをユーザーディレクトリ、例えば
repo/zephyr
フォルダにクローンすることをお勧めします.mkdir -p repo cd repo git clone https://github.com/zephyrproject-rtos/zephyr
4.必要な依存ツールのインストール
## Zephyr
cd zephyr
## pip3
pip3 install --user -r scripts/requirements.txt
5.3.8.2以降のCMakeツールのインストール
Zephyrの開発に必要
cmake 3.8.2
またはそれ以上のバージョン、ubuntuソフトウェアウェアハウスでインストールされているcmake
バージョンが低いのは要求に合わないので、以下の手順で適切なCMakeを~/cmake
ディレクトリにインストールできます.mkdir $HOME/cmake && cd $HOME/cmake
wget https://cmake.org/files/v3.8/cmake-3.8.2-Linux-x86_64.sh
yes | sh cmake-3.8.2-Linux-x86_64.sh | cat
CMakeインストールディレクトリをユーザー環境変数に追加し、ユーザーディレクトリの
.bashrc
ファイルの最後の行を変更し、echo "export PATH=$PWD/cmake-3.8.2-Linux-x86_64/bin:\$PATH" >> $HOME/.zephyrrc
## Zephyr zephyr-env.sh
source <zephyr git clone location>/zephyr-env.sh
cmake --version
現在のCmakeバージョン番号を表示します.3.8.2の場合、構成は正常です.
6.Zephyr SDKのインストール
ZephyrのSDKには、buildカーネルを異なるシステムアーキテクチャ上でサポートするために必要なすべてのツールとクロスコンパイラが含まれています.それ以外に、カスタムQEMUバイナリファイルやホストコンパイラなどのホストツールが含まれており、必要に応じてホストツールを構築できます.
SDKは、次のアーキテクチャをサポートします.
本明細書で使用するSDKバージョンは0.9.5であり、インストール中にコンソールからZephyr SDKインストールパスの提示があり、Zephyr SDKをユーザーディレクトリ
~/opt/zephyr-sdk
フォルダにインストールすることを推奨する.## SDK, ,
mkdir -p ~/opt/zephyr-sdk && cd ~/opt/zephyr-sdk
wget https://github.com/zephyrproject-rtos/meta-zephyr-sdk/releases/download/0.9.2/zephyr-sdk-0.9.2-setup.run
## SDK
sudo chmod +x zephyr-sdk-0.9.2-setup.runa
./zephyr-sdk-0.9.2-setup.run
7.環境変数の設定
ユーザディレクトリ
.bashrc
ファイル末尾に追加ZEPHYR_GCC_VARIANT
・ZEPHYR_SDK_INSTALL_DIR
およびZEPHYR_BASE
などのパラメータを追加し、修正が完了したらコンソールで実行source ~/.bashrc
新たに追加した環境変数を即時に有効にする.ここではvimエディタを使用することをお勧めします.ubuntuでデフォルトでインストールされていない場合は、先にインストールできます.
## vim vim.tiny
sudo apt-get install vim-gtk
## vim
sudo vim /etc/vim/vimrc
## vimrc ,
set nu ##
set tabstop ## tab 4
set nobackup ##
set cursorline ##
set ruler ##
set autoindent ##
vimエディタをインストールした後、環境変数の追加を構成できます.
vim ~/.bashrc
## ,
export PATH=<camke install directory>/bin:$PATH ## cmake
export ZEPHYR_GCC_VARIANT=zephyr
export ZEPHYR_SDK_INSTALL_DIR=<zephyr-sdk directory> ## Zephyr SDK
export ZEPHYR_BASE=<zephyr local repository directory> ## Zephyr
##
source ~/.bashrc
8.QEMUでhello worldサンプルプログラムを実行する
上記のインストール手順が完了したら、
hello world
例でZephyr開発環境が正常であることを確認できます.ここでは、qemu_x86
シミュレーションプラットフォームを使用して検証します.ここでコンパイルして生成したhello world
実行可能ファイルはQEMUシミュレーションプラットフォームで実行されます.$ZEPHYR_BASE/samples/hello_world
フォルダ下ファイル紹介:CMakeでMakefileファイルを生成する場合は、ターゲットプラットフォームをBOARDパラメータで指定する必要があります.ここでqemu_と指定します.x 86プラットフォーム.QEMUでサンプルコードを実行する場合は、まずNinajaツールをインストールしてソースファイルをコンパイルする必要があります.
cd ~/repo
git clone git://github.com/ninja-build/ninja.git && cd ninja
##
./configure.py --bootstrap
## ninja (/user/bin)
sudo cp ninja /user/bin/
Ninajaツールのインストールが完了すると、直接Ninajaツールを使用してプロジェクトを生成できます.Zephyrシステムの
hello world
インスタンスを例に挙げます.cd $ZEPHYR_BASE/samples/hello_world
## build ,
mkdir -p build && cd build
## cmake qemu_x86 makefile
cmake -GNinja -DBOARD=qemu_x86 ..
##
ninja
ninja run
## hello world
## qemu :ctrl-a, x
9.nRF 52832でBluetoothサンプルプログラムを実行する
次に、実プレートnRF 52832上でZephyrシステムのBluetooth心拍数計ルーチンを実行し、ルーチンディレクトリは
$ZEPHYR_BASE/samples/bluetooth/peripheral_hr
である.CmakeでMakefileファイルを生成する場合は、ターゲットプラットフォームをBOARDパラメータで指定する必要があります.ここではnrf 52_と指定します.pca 10040プラットフォーム.Cmakeを使用して実行ファイルを生成したり、Ninjaファイルを使用して実行ファイルを生成したりできます.Cmakeツールを使用して実行ファイルを生成する手順は、次のとおりです.
cd $ZEPHYR_BASE/samples/bluetooth/peripheral_hr
## build ,
mkdir -p build && cd build
## cmake nrf52_pca10040 makefile
cmake -DBOARD=nrf52_pca10040 ..
##
make menuconfig ## menuconfig , shell 、
make ##
コンパイルが完了するとbuildディレクトリの下にzephyrディレクトリが生成され、zephyrディレクトリの下に実行可能ファイル(.bin、.elf、.hexファイルを使用)があります.本装置で使用する実行可能ファイル名は
zephyr.hex
windowシステムで取得し、nRFgo Studio
ツール焼を使用してnRF 52832装置に書き込む(nRF 5 x Programming->program Application->Browse選択生成したzephyr.hexファイル->Program焼写).nRFgo Studioツールの使用中にダウンロードエラーやjlinkの使用エラーが発生した場合は、jlinkエラー解析を表示して問題を解決できます.
書き込みが完了し、デバイスを再起動し、携帯電話のBluetoothを開くと、名前が
Zephyr Heartrate Sensor
のBluetoothデバイスが検索され、サンプルプログラムが正しく動作していることを示します.Windowベースのコンパイル環境構築
Windows環境でZephyrシステムを構築するコンパイル環境について説明します.ここでは
cmd.exe
プログラムを使用してコンパイル環境を構築します.PowerShell
使用すると異なる場合があります.Zephyrの公式紹介を参照することをお勧めします.1.ネットワークリソースをダウンロードするための環境変数の設定
管理者権限でcmdを実行することを推奨します.exeプログラム、次の操作を行います.
set HTTP_PROXY=http://user:[email protected]:1234
set HTTPS_PROXY=http://user:[email protected]:1234
2.Chocolateyソフトウェアのインストール
cmdを使用してインストール:
@"%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" -NoProfile -InputFormat None -ExecutionPolicy Bypass -Command "iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))" && SET "PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin"
PowerSehllを使用してインストールするには、次の手順に従います.
Set-ExecutionPolicy Bypass -Scope Process -Force; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
インストールが完了したら実行
choco
コマンドはChocolateyソフトウェアのバージョン番号情報を表示し、インストールに成功したことを示します.## choco
choco
## Chocolatey
Chocolatey v0.10.11
Please run 'choco -?' or 'choco -?' for help menu.
3.Cmakeおよびその他のツールのインストール
## ,
choco feature enable -n allowGlobalConfirmation
## Cmake
choco install cmake --installargs 'ADD_CMAKE_TO_PATH=System'
## git、python、ninja、dtc-msys2、gperf
choco install git python ninja dtc-msys2 gperf
4.Zephyrソースプログラムのダウンロード
ここでZephyrソースを
E:\RT-Thread\
ディレクトリにダウンロードします.cd E:\RT-Thread
git clone https://github.com/zephyrproject-rtos/zephyr
5.Python依存パッケージのインストール
pip3 install -r zephyr/scripts/requirements.txt
次のエラーメッセージが表示された場合:
Using cached https://files.pythonhosted.org/packages/cc/02/a1b500a5a467df64b5d4502072d4850b788065306dbbc8d3e0afc29ce5be/pyocd-0.13.2.tar.gz
Complete output from command python setup.py egg_info:
Traceback (most recent call last):
File "" , line 1, in <module>
File "C:\Users\ChenYong\AppData\Local\Temp\pip-install-bu__14uj\pyocd\setup.py", line 31, in <module>
long_description=open('README.md', 'r').read(),
UnicodeDecodeError: 'gbk' codec can't decode byte 0xa6 in position 5960: illegal multibyte sequence
コマンドラインツールの標準出力ストリーム符号化が間違っているため、Zephyrシステムにインストール
scripts/requirements.txt
ファイルにあるpyocdツールのインストールをブロックすることができ、後のコンパイルではこのソフトウェアを使用していません.## requirements.txt pyocd
.....
# pyocd
....
その後、python依存パッケージコマンドを自分でインストールし、正常に実行できます.
6.サードパーティ製コンパイルツールのインストール
ここにはGNU ARMコンパイルツールがインストールされています(Zephyr公式サイトには他のサードパーティコンパイルツールもあり、実際のニーズに応じてダウンロードしてインストールしています).
ツールのダウンロード先:https://developer.arm.com/open-source/gnu-toolchain/gnu-rm/downloads、自分のシステム構成に従ってGNU ARMコンパイルツールをダウンロードインストールし、インストール経路は
C:\gnu_arm_embedded
以下に示すように、インストール完了環境変数を設定します.set ZEPHYR_TOOLCHAIN_VARIANT=gnuarmemb
set GNUARMEMB_TOOLCHAIN_PATH=C:\gnu_arm_embedded
7.コンパイル実行ルーチン
cd zephyr
##
zephyr-env.cmd
## ,
cd samples\bluetooth\peripheral_hr
mkdir build & cd build
## Cmake Ninja ,window Ninja
cmake -GNinja -DBOARD=nrf52_pca10040 ..
## menuconfig ,
ninja menuconfig
ninja
コード焼きの書き方:
download.jlink
ファイル内容は以下の通り:erase
loadfile zephyr.hex
r
q
download.jlink
実行可能ファイル(elfファイル)を生成するディレクトリにファイルを入れます. ## jlink.exe
C:\Soft\SEGGER\JLink_V510h\JLink.exe -autoconnect 1 -device NRF52832_XXAA -if swd -speed 10000 -commandfile download.jlink