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系统已经在开发板上成功跑起来了。
Zephyr学习(二)开发环境搭建的更多相关文章
- 我的Java学习笔记 -开发环境搭建
开始学习Java~ 一.Java简介 Java编程语言是一种简单.面向对象.分布式.解释型.健壮安全.与系统无关.可移植.高性能.多线程和动态的语言. Java分为三个体系: JavaSE(J2SE) ...
- C++学习之开发环境搭建篇(一)
由于C++是一门非跨平台语言,其开发的程序编译生成的可执行文件,只能在相应的操作系统中被执行,离开此系统环境将无法执行. 主要原因是不同的操作系统,可执行文件的结构不同,最为常见的操作系统是有:MAC ...
- Django学习笔记 开发环境搭建
为什么使用django?1.支持快速开发:用python开发:数据库ORM系统,并不需要我们手动地构造SQL语句,而是用python的对象访问数据库,能够提升开发效率.2.大量内置应用:后台管理系统a ...
- 如何学习web开发环境搭建和脚手架
Web前端的学习路线 第一阶段: HTML+CSS: HTML进阶.CSS进阶.div+css布局.HTML+css整站开发. JavaScript基础: Js基础教程.js内置对象常用方法.常见DO ...
- 一步步学习Linux开发环境搭建与使用
00.Linux开发环境搭建与使用1--Linux简史 01.Linux开发环境搭建与使用2--Linux系统(ubuntu)安装方案 02.Linux开发环境搭建与使用3--通过虚拟机安装系统(ub ...
- ES6 - 基础学习(1): 开发环境搭建
现在Chrome浏览器已经很好的支持ES6了,但有些低版本的浏览器或其他浏览器还是不支持ES6的语法,因此实际项目开发或上线过程中就需要把ES6的语法转变成ES5的语法.项目开发过程中 Webpack ...
- Maven学习 二 Maven环境搭建
第一步:下载Maven并解压 注意选择镜像地址,选择国内的会快点 解压目录 Maven目录分析 bin:含有mvn运行的脚本 boot:含有plexus-classworlds类加载器框架 conf: ...
- Lua学习一----------开发环境搭建
© 版权声明:本文为博主原创文章,转载请注明出处 1.LuaDist下载地址:http://luadist.org/ 2.LuaRocks下载地址:https://github.com/luarock ...
- android高速上手(二)android开发环境搭建及hello world
基本了解了java语法,下一步.我们一起开启hello world的神奇之旅. (一)android开发环境搭建 之前搭建android开发环境是件很费力的事情,下载Eclipse.安装ADT等,现在 ...
- Redis学习系列二之.Net开发环境搭建及基础数据结构String字符串
一.简介 Redis有5种基本数据结构,分别是string.list(列表).hash(字典).set(集合).zset(有序集合),这是必须掌握的5种基本数据结构.注意Redis作为一个键值对缓存系 ...
随机推荐
- python-循环小练习
作业:登录程序,最多循环输入三次,账号密码校验输入为空的情况: 知识点总结 1.while和for循环的区别是,1个需要定义计数器,1个不需要定义计数器: 2.break正常循环结束后会用到,意思是不 ...
- Ubuntu或linux 运行后台进程运行不挂断的办法
nohup python ChatReq.py 20000 >>log_cronjob.txt 2>&1 & 之前把nohup去掉,发现就算运行python Chat ...
- 关于kafka重新消费数据问题
我们在使用consumer消费数据时,有些情况下我们需要对已经消费过的数据进行重新消费,这里介绍kafka中两种重新消费数据的方法. 1. 修改offset 我们在使用consumer消费的时候,每个 ...
- JSR 整理、翻译
https://jcp.org/en/jsr/all https://github.com/search?l=Java&q=JSR&type=Repositories
- wireshark解析自定义的protobuf协议
先看最终效果 wireshark是开源的,而且在Windows下安装时用的是64位,所以相应的库文件需要使用64位. 一个Lua插件的Dissector结构大致如下: do -- 协议名称为 m_Me ...
- ssh-免密登录批量发送脚本
1.新建node文件(文件中为需要发送的节点,不能包含主文件服务器) node01 node02 node03 node04 2.ssh的免密登录批处理脚本(需要同级目录下的nodes文件) #!/b ...
- Docker permission denied while trying to connect to the Docker daemon socket
Problem jenkins执行docker打包的时候报错,说没有权限 docker build -t docker.ryan-miao.com/com.demo:f1aa23e --build-a ...
- java 读取不同的配置文件
关于JAVA 中的Configuration类 properties文件是Java平台默认的配置文件格式,其优点是格式清晰,简单易懂,使用commons-configuration读取properti ...
- 全面解决.Net与Java互通时的RSA加解密问题,使用PEM格式的密钥文件
作者: zyl910 一.缘由 RSA是一种常用的非对称加密算法.所以有时需要在不用编程语言中分别使用RSA的加密.解密.例如用Java做后台服务端,用C#开发桌面的客户端软件时. 由于 .Net.J ...
- 在GDAL中添加GDALRasterizeGeometriesBuf函数
缘起 GDAL的栅格化算法中有GDALRasterizeLayers.GDALRasterizeLayersBuf和GDALRasterizeGeometries函数,但是没有GDALRasteriz ...