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は、次のアーキテクチャをサポートします.
  • X86
  • X86 IAMCU ABI
  • ARM
  • ARC
  • Nios II
  • Xtensa
  • RISC-V

  • 本明細書で使用する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_VARIANTZEPHYR_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フォルダ下ファイル紹介:
  • CMakeLists.txt:makefileを生成するためのファイルを構築します.
  • prj.conf:プロファイル;
  • src/main.c:主関数ファイル.

  • 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.hexwindowシステムで取得し、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
    

    コード焼きの書き方:
  • コンパイル後に実行可能ファイル(ここではhexファイルを使用)を生成し、上記Linux紹介のようにプログラムを書き込みます.
  • jlinkツールを使用して生成したファイル(ここで使用するelfファイル)をnRF 52832デバイスに直接焼き付け、操作手順は以下の通り.
  • 新規jlinkダウンロードスクリプトファイル名download.jlinkファイル内容は以下の通り:
  • erase
    loadfile zephyr.hex
    r
    q
    
  • download.jlink実行可能ファイル(elfファイル)を生成するディレクトリにファイルを入れます.
  • 自分のパソコンのjlinkドライバのインストール経路を確認し、インストール経路にスペースがない場合、スペースがある場合は交換経路のインストールをアンインストールすることをお勧めします.
  • cmdでは、以下のコマンド書き込みプログラムを実行する:
  •   ## jlink.exe             
    C:\Soft\SEGGER\JLink_V510h\JLink.exe -autoconnect 1 -device NRF52832_XXAA -if swd -speed 10000 -commandfile download.jlink
    
    
  • jlink書き込み成功.