一.概述

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系统已经在开发板上成功跑起来了。

最新文章

  1. ORA-01157 & ORA-01110
  2. Unity学习疑问记录之脚本生命周期
  3. Linux Shell 高级编程技巧2----shell工具
  4. Maven 介绍
  5. C#容易忽略點--包含多線程 委託事件等等--此頁面bug,編輯能查看全部內容
  6. SQL Server 2008 没有可用于 charge_sys_Log.LDF 的编辑器
  7. 【阿里云产品公测】云引擎ACE -discuz安装
  8. 收货MIGO
  9. Hadoop之——HBase注意事项
  10. codechef Dynamic GCD [树链剖分 gcd]
  11. 【一天一道LeetCode】#40. Combination Sum II
  12. RB-Tree插入过程详解
  13. UOJ#185. 【ZJOI2016】小星星 容斥原理 动态规划
  14. org.springframework.dao.InvalidDataAccessResourceUsageException: Unexpected cursor position change. Spring Batch 错误
  15. M1-Flask-Day4
  16. MySql 5.7 新特性概览
  17. Composer 的autoload 实现
  18. SQL语句(十四)子查询
  19. MTK 系统禁止通知状态栏下拉
  20. testng + Ignore 忽略测试方法

热门文章

  1. sklearn神经网络分类
  2. 基于Python Pillow库生成随机验证码
  3. JQ02
  4. Spring Aop 修改目标方法参数和返回值
  5. 硬件工程师必会电路模块之MOS管应用
  6. I2C总线协议图解
  7. angular 2 - 006 change detection 脏治检查 - DC
  8. Guava-Objects使用
  9. html5学习笔记3——高级特性
  10. glog日志库使用笔记