Zephyr支持在Windows、Linux和MacOS环境下开发,这里只介绍如何在Windows下搭建zephyr的开发环境。python
msys2是一个Linux模拟环境,相似于ArchLinux。git
安装完成后,要添加源(这与Linux环境是相似的),这里我添加的是清华大学的源,修改C:\msys64\etc\pacman.d\mirrorlist.mingw32,在开始处加入如下一行:github
Server = https://mirrors.tuna.tsinghua.edu.cn/msys2/mingw/i686
修改C:\msys64\etc\pacman.d\mirrorlist.mingw64,在开始处加入如下一行:bootstrap
Server = https://mirrors.tuna.tsinghua.edu.cn/msys2/mingw/x86_64
修改C:\msys64\etc\pacman.d\mirrorlist.msys,在开始处加入如下一行:bash
Server = https://mirrors.tuna.tsinghua.edu.cn/msys2/msys/$arch
安装完成后会看到有三种启动方式,分别是MSYS2 MinGW 32-bit、MSYS2 MinGW 64-bit和MSYS2 MSYS,这里要选择MSYS2 MSYS这种。curl
启动MSYS2 MSYS后,分别执行如下命令:工具
pacman -Syu pacman -S git cmake make gcc dtc diffutils ncurses-devel python3 gperf
分别执行如下命令:学习
git clone git://github.com/ninja-build/ninja.git && cd ninja git checkout release ./configure.py --bootstrap cp ninja.exe /usr/bin/
这里下载到~/work目录下,执行如下命令:ui
cd ~/work git clone --config core.autocrlf=false https://github.com/zephyrproject-rtos/zephyr.git
zephyr里有不少python脚本,所以须要安装所需的模块:url
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
这里我以ARM(Cortex M系列)平台做为学习,因此须要安装arm交叉工具链,建议安装7.x版本的,用最新的8.x版本的会编译出错。我选择安装在C:\gnuarmemb目录下。
设置环境变量:
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.1安装Jlink
2.8.2安装nRF5x-Command-Line-Tools
这是Nordic对Jlink的封装,是专门针对Nordic的芯片的,主要用于擦除flash、烧写固件等操做。安装后会有nrfjprog.exe文件,而后将该文件所在的目录添加到系统环境变量中。
打开cmd窗口,进入到固件生成的目录下,给开发板上电,链接好jlink调试器,链接好串口。
下载固件到开发板:
nrfjprog -f nrf52 --program zephyr.hex --sectorerase
让程序跑起来(复位系统):
nrfjprog -f nrf52 --reset
这时能够看到串口输出以下:
说明zephyr系统已经在开发板上成功跑起来了。