【Zephyr基础开发系列】01_Ubuntu搭建Zephyr环境

一、Zephyr实时系统的优势

前言:Zephyr是专为资源受限设备设计的开源实时系统,常用在物联网终端、小型SOC芯片等设备上。与常见的小型嵌入式RTOS相比,Zephyr继承了Linux驱动开发的优点,即采用了驱动(driver)- 应用(app)分离的开发方式。

----什么叫驱动与应用分离?在常见没有MMU的32位MCU,搭配其他实时系统(UCOSFreeRTOS)开发来看,完整的一套开发流程包括了系统移植、外设配置、API函数编写、应用开发、测试等步骤,怎么一套流程走下来,耗费精力非常大,若是因为供应商或成本问题更换芯片,这接下来又将是漫长痛苦的过程。
----若是采用驱动与应用分离的方式,仅仅只需更换部分参数,不改动应用代码,即可顺利运行。即原来跑esp32的代码,可以直接替换适配参数,烧录进stm32里面。正是这么逆天的方式,让我对单片机开发有了很多的改观。随着更多原厂板商的加入,Zephyr几乎可以跑在任何板子上,板商提供驱动,使得Zephyr生态变得越来越完善。Zephyr可以使用Ubuntu,Windows等系统进行开发,是对我这种习惯Linux终端开发和有Linux驱动开发同志的最大福报!!!

二、Zephyr环境搭建

1.开发环境

Ubuntu22.04(推荐大于ubuntu20.04版本)因为安装的Python、Cmake版本不匹配,会造成大问题。

2.安装版本依赖

官方主要依赖项所需的最低版本如下:

工具 最低版本
Cmake 3.20.5
Python 3.10
DTC 1.4.6

2.1 使用apt安装依赖项

sudo apt install --no-install-recommends git cmake ninja-build gperf \
  ccache dfu-util device-tree-compiler wget \
  python3-dev python3-pip python3-setuptools python3-tk python3-wheel xz-utils file \
  make gcc gcc-multilib g++-multilib libsdl2-dev libmagic1

使用命令查看当前版本:

#各版本均符合要求
ubuntu@ubuntu:~$ cmake --version
cmake version 3.22.1
CMake suite maintained and supported by Kitware (kitware.com/cmake).

ubuntu@ubuntu:~$ python3 --version
Python 3.10.12

ubuntu@ubuntu:~$ dtc --version
Version: DTC 1.6.1

2.2 安装虚拟环境与python依赖

#使用apt安装
sudo apt install python3-venv
#创建一个虚拟环境
python3 -m venv ~/zephyrproject/.venv
#激活虚拟环境
source ~/zephyrproject/.venv/bin/activate

激活环境后会出现(.venv)前缀,进入工程前均需要激活环境.

ubuntu@ubuntu:~$ source ~/zephyrproject/.venv/bin/activate
(.venv) ubuntu@ubuntu:~$ 

2.3 安装官方SDK

SDK工程较大,建议科学获取,平常状态下经测试,尝试几十次,总有一次成功的。

#安装west
pip install west
#install SDK
west init ~/zephyrproject
cd ~/zephyrproject

#更新中途可能中断,也可平常状态下,反复尝试,不会抹除更新成功的。
west update

#导包
west zephyr-export
#安装python依赖
west packages pip --install

2.4 安装完整工具包(编译,仿真等)SDK

该处可通过压缩包安装

#需要确定架构,正常PC或虚拟机为x86,部分如树莓派,Jetson nano等为ARM架构,请替换x86_64 为aarch64
cdwget https://github.com/zephyrproject-rtos/sdk-ng/releases/download/v0.17.1/zephyr-sdk-0.17.1_linux-x86_64.tar.xz 
wget -O - https://github.com/zephyrproject-rtos/sdk-ng/releases/download/v0.17.1/sha256.sum | shasum --check --ignore-missing

#解压
tar xvf zephyr-sdk-0.17.1_linux-x86_64.tar.xz

脚本只需安装一次,前提是安装好ZephyrSDK,一旦地址发生改变,就得重新安装脚步。

#安装脚本
cd zephyr-sdk-0.17.1
./setup.sh

#安装udev
sudo cp ~/zephyr-sdk-0.17.1/sysroots/x86_64-pokysdk-linux/usr/share/openocd/contrib/60-openocd.rules /etc/udev/rules.d
sudo udevadm

三、Demo测试

编译sample/hello_world

cd ~/zephyrproject/zephyr
#查看存在的板子
west boards 
#查看可仿真板子
west boards | grep qemu
west build -p always -b <your-board-name> samples/basic/blinky
比如:
west build -p always -b qemu_x86_64 samples/hello_world/

#进行仿真
west build -t run

#编译成功,生成elf
[110/110] Linking C executable zephyr/zephyr.elf
Memory region         Used Size  Region Size  %age Used
             RAM:        204 KB        31 MB      0.64%
          LOCORE:         16 KB        60 KB     26.67%
Generating files from /home/ubuntu/zephyrproject/zephyr/build/zephyr/zephyr.elf for board: qemu_x86_64


打印hello

打印

四、 总结

本文介绍了Zephyr的环境配置,为接下来自定义开发板做出准备。

参考资料:
https://docs.zephyrproject.org

你可能感兴趣的:(Zephyr基础,linux,物联网,iot,驱动开发,mcu)