Zephyr外部模块功能简介

Creative Commons
本作品采用知识共享署名

本文介绍Zephyr通过外部模块导入的各种功能。

Zephyr大量引用了外部代码库避免重复造轮子,尽可能多的复用成熟代码。同时解决license污染问题,这些代码库在Zephyr中以模块的形式进行管理,本文列举Zephyr引用的外部模块的功能。

外部模块主要可以分为下面几种:

  • 芯片供应商提供的HAL:这部分在外部模块中占比最大,使用芯片供应商的HAL比从头写驱动更为快速,且代码更稳定成熟
  • 调试器的整合
  • 密码算法库
  • 文件系统
  • 音频系统
  • 各种功能库
  • 可信执行性环境

Zephyr使用的所有的外部模块都可以在zephyr/west.yaml中找到,该文件提供了这些模块的下载地址和zephyr当前使用这些模块的版本信息,Zephyr外部模块被west下载后放置的目录结构如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
.
├── bootloader
│   └── mcuboot
├── modules
│   ├── audio
│   ├── bsim_hw_models
│   ├── crypto
│   ├── debug
│   ├── fs
│   ├── hal
│   ├── lib
│   └── tee
├── tools
│   ├── edtt
│   └── net-tools
└── zephyr

外部模块

Zephyr提供的所有外部模块都放在和zephyr平级的目录modules下

HAL

modules/hal下,一共24家芯片厂商的hal
altera cmsis espressif gigadevice libmetal nordic nxp quicklogic rpi_pico st telink wurthelektronik
atmel cypress ethos_u infineon microchip nuvoton openisa renesas silabs stm32 ti xtensa

音频系统

modules/audio/sof 下
Sound Open Firmware(简称 SOF)是由英特尔发起,用于提供开源的音频 DSP 固件和开发工具

密码算法库

modules/crypto 下

  • mbedtls: 提供加解密算法(AES, RSA, MD5/SHA1/SHA256/SHA512 etc.),X.509证书管理和TLS/DTLS协议支持
  • tinycrypt: 简单、快速、可配置的小型加密库,支持aes(对称加密)、sha256(哈希)等算法

调试器整合

modules/debug, 都是为zephyr提供trace后端

  • TraceRecorder
  • mipi-sys-t
  • segger

文件系统

modules/fs

  • fatfs
  • littlefs

可信执行性环境

module/tee

  • tf-m: trusted-firmware-a
  • tf-a: trusted-firmware-m

功能库

  • canopennode:开源的 CANopen 协议栈
  • gui/lvgl: 轻量级通用型图形库lvgl
  • loramac-node: 开源的LoRaWAN 终端设备软件栈
  • nanopb: Google数据序列化Protocol Buffers协议的轻量级实现
  • openthread:开源的thread协议,用于低功耗物联网的网状网络协议
  • tflite-micro:Google的TensorFlow Lite,用于嵌入上的机器学习推理
  • uoscore-uedhoc 提供嵌入式设备上的IOT安全协议OSCORE和EDHOC实现
  • zscilib: Zephyr Scientific Library,在资源受限的嵌入式硬件设备环境中提供科学计算、数据分析和数据处理的功能。
  • chre:Google提供的在低功耗处理器上运行应用程序的基于事件驱动的系统
  • liblc3:LC3 audio codec
  • lz4:快速压缩算法
  • open-amp:开源的异构处理器通信协议栈
  • picolibc:适用于小型微控制器嵌入式系统的C标准库,从newlib-nano发展而来
  • thrift:轻量级的远程调用框架
  • zcbor:CBOR库,提供良好压缩性,扩展性强,不需要进行版本协商的二进制数据交换形式, 用于数据序列化

以外部模块形式管理的其它功能模块

有如下外部软件并为放在module下,但在构建和管理上是以外部模块的形式进行

tools

与module平级,下属两个功能模块

  • edtt: 嵌入式测试工具
  • net-tools: 为zephyr qemu提供linux host上的网络支持

bootloader

与module平级,下面放mcuboot,该mcuboot以zephyr的soc/driver做为支撑

参考

https://docs.zephyrproject.org/latest/develop/modules.html