1. 程式人生 > >Zephyr學習(二)開發環境搭建

Zephyr學習(二)開發環境搭建

一.概述

Zephyr支援在Windows、Linux和MacOS環境下開發,這裡只介紹如何在Windows下搭建zephyr的開發環境。

二.步驟

2.1安裝msys2

msys2是一個Linux模擬環境,類似於ArchLinux。

安裝完成後,要新增源(這與Linux環境是類似的),這裡我新增的是清華大學的源,修改C:\msys64\etc\pacman.d\mirrorlist.mingw32,在開始處加入以下一行:

Server = https://mirrors.tuna.tsinghua.edu.cn/msys2/mingw/i686

修改C:\msys64\etc\pacman.d\mirrorlist.mingw64,在開始處加入以下一行:

Server = https://mirrors.tuna.tsinghua.edu.cn/msys2/mingw/x86_64

修改C:\msys64\etc\pacman.d\mirrorlist.msys,在開始處加入以下一行:

Server = https://mirrors.tuna.tsinghua.edu.cn/msys2/msys/$arch

安裝完成後會看到有三種啟動方式,分別是MSYS2 MinGW 32-bit、MSYS2 MinGW 64-bit和MSYS2 MSYS,這裡要選擇MSYS2 MSYS這種。

 2.2安裝依賴

啟動MSYS2 MSYS後,分別執行以下命令:

pacman -Syu
pacman -S git cmake make gcc dtc diffutils ncurses-devel python3 gperf

2.3編譯安裝Ninja

分別執行以下命令:

git clone git://github.com/ninja-build/ninja.git && cd ninja
git checkout release
./configure.py --bootstrap
cp ninja.exe /usr/bin/

2.4下載Zephyr原始碼

這裡下載到~/work目錄下,執行以下命令:

cd ~/work
git clone 
--config core.autocrlf=false https://github.com/zephyrproject-rtos/zephyr.git

2.5安裝相關python模組

zephyr裡有很多python指令碼,因此需要安裝所需的模組:

curl -O 'https://bootstrap.pypa.io/get-pip.py'
./get-pip.py
rm get-pip.py
cd ~/work/zephyr
pip install --user -r scripts/requirements.txt

2.6安裝交叉工具鏈

這裡我以ARM(Cortex M系列)平臺作為學習,所以需要安裝arm交叉工具鏈,建議安裝7.x版本的,用最新的8.x版本的會編譯出錯。我選擇安裝在C:\gnuarmemb目錄下。

2.7編譯應用

設定環境變數:

export ZEPHYR_TOOLCHAIN_VARIANT=gnuarmemb
export GNUARMEMB_TOOLCHAIN_PATH=/c/gnuarmemb
unset ZEPHYR_SDK_INSTALL_DIR

如果不想每次執行MSYS2 MSYS後都手動輸入以上命令,那麼可以將以上命令新增到C:\msys64\home\lkn\.bash_profile檔案。

我的開發板主控是nrf52832,這裡以編譯最簡單的hello_world程式(串列埠打印出hello world等字元)為例:

cd ~/work/zephyr
source zephyr-env.sh
cd samples/hello_world
mkdir build
cd build
cmake -GNinja -DBOARD=nrf52_pca10040 ..
ninja

 編譯成功的話會如下圖所示:

編譯生成的檔案在./zephyr目錄下,可以看到有zephyr.elf、zephyr.bin和zephyr.hex三種格式的韌體。

2.8安裝韌體下載、除錯工具

2.8.1安裝Jlink

2.8.2安裝nRF5x-Command-Line-Tools

這是Nordic對Jlink的封裝,是專門針對Nordic的晶片的,主要用於擦除flash、燒寫韌體等操作。安裝後會有nrfjprog.exe檔案,然後將該檔案所在的目錄新增到系統環境變數中。

2.9在開發板上執行zephyr

開啟cmd視窗,進入到韌體生成的目錄下,給開發板上電,連線好jlink偵錯程式,連線好串列埠。

下載韌體到開發板:

nrfjprog -f nrf52 --program zephyr.hex --sectorerase

讓程式跑起來(復位系統):

nrfjprog -f nrf52 --reset

這時可以看到串列埠輸出如下:

說明zephyr系統已經在開發板上成功跑起來了。