简介
Zephyr 支持多种架构的连接、资源受限和嵌入式设备。Zephyr 包括一个内核,以及开发完整应用软件所需的所有组件和库、设备驱动程序、协议栈(IPv4 和 IPv6、受限应用协议 (CoAP)、LwM2M、MQTT、802.15.4、Thread、低功耗蓝牙、CAN)、文件系统(一个虚拟文件系统接口,具有多个闪存文件系统,用于非易失性存储(FatFs、LittleFS、NVS))和固件更新。
学习目标
学习内核的部分实现思路
尝试利用zephyr提供的丰富组件构建项目(如健身可穿戴设备、智能手表和物联网无线网关)
配置工具
Kconfig
devicetree
Cmake
内核特点
单个地址空间
多种调度算法
高度可配置和模块化,灵活性高,在编译时定义资源
基于内存保护单元 (MPU) 的保护
非对称多处理 (AMP,基于 OpenAMP) 和对称多处理 (SMP) 支持
安装环境
https://docs.zephyrproject.org/latest/develop/getting_started/index.html
流程主要基于官方文档,另外,需要重新安装新版本的cmake和python。
每次使用之前需要进入虚拟环境:
source ~/zephyrproject/.venv/bin/activate
安装cmake
wget https://cmake.org/files/v3.30/cmake-3.30.0-linux-x86_64.sh
sudo bash cmake-3.30.0-linux-x86_64.sh --skip-license --prefix=/usr
安装python3.11及设置优先级
ls -l /usr/bin/python*
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.8 1
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.11 2
update-alternatives --config python3
python3 --version
恢复pip
sudo apt install python3.11-distutils
运行hello_world测试
west build -b qemu_x86 samples/hello_world
west build -t run
扩展:常用west指令
West
- b :等同于 --board,编译的开发板类型
- -d :等同于 --build-dir,编译生成的存放文件的目录
- -p :等同于 --pristine,清除老的生成文件
- -c :等同于 --cmake,重新编译
- -t :等同于 --target,其他功能
命令行界面:
west build -t menuconfig
查看 RAM/ROM 占用:
west build -t ram_report 查看 RAM 占用
west build -t rom_report 查看 ROM 占用
烧录文件
west flash, 调用 flash.py,而 flash.py 会调用 run_common.py 这个脚本,该脚本会读取 runners.yaml 文件。
而runners.yaml 是根据板级的配置信息生成