解锁 Web3 硬件钱包潜力:Zephyr 赋能之旅

  • King
  • 更新于 3天前
  • 阅读 276

引言在当今数字化浪潮汹涌澎湃的时代,嵌入式开发宛如一座隐匿着无尽宝藏的神秘岛屿,吸引着无数技术探索者扬帆起航。作为一名怀揣热忱、毅然踏上Rust嵌入式开发征程的求知者,我怀揣着对未知的憧憬,在前行路上不断摸索。起初,不同操作系统与开发环境之间的兼容性难题,犹如荆棘丛般横亘在前,给探索之路增添

引言

在当今数字化浪潮汹涌澎湃的时代,嵌入式开发宛如一座隐匿着无尽宝藏的神秘岛屿,吸引着无数技术探索者扬帆起航。作为一名怀揣热忱、毅然踏上 Rust 嵌入式开发征程的求知者,我怀揣着对未知的憧憬,在前行路上不断摸索。

起初,不同操作系统与开发环境之间的兼容性难题,犹如荆棘丛般横亘在前,给探索之路增添诸多坎坷。然而,峰回路转之际,惊喜悄然而至——我惊喜地发现 Zephyr 操作系统宛如一位贴心挚友,对 Mac 用户展现出了超乎寻常的友好姿态。它凭借着出色的跨平台适配能力,无缝融入 Mac 生态,为像我这般使用 Mac 的开发者铺就了一条平顺的进阶之路。

正因如此,我毅然决然开启这场补习 Zephyr 知识的求知之旅,期望能填补自身知识版图上的这片空白。在接下来的探索中,愿与诸位一同揭开 Zephyr 的神秘面纱,深入挖掘其在 Rust 嵌入式开发领域蕴含的巨大潜能,携手迈向技术的新边疆。此刻,让我们满怀期待,共赴这场知识的盛宴。

image.png

这块开发板,便是我在项目研发进程中所倚重的得力 “伙伴”

Zephyr 简介

Zephyr 操作系统是基于一个小尺寸内核设计的,专门用于资源受限的嵌入式系统哦,像简单的嵌入式环境传感器、LED 可穿戴设备,还有复杂些的嵌入式控制器、智能手表以及物联网无线应用等等,它都能派上用场呢。

支持的架构

Zephyr 内核支持超多的架构呀,具体有这些哦:

  • ARCv2(EM 和 HS)以及 ARCv3(HS6X)
  • ARMv6-M、ARMv7-M 和 ARMv8-M(Cortex-M)
  • ARMv7-A 和 ARMv8-A(Cortex-A,32 位和 64 位)
  • ARMv7-R、ARMv8-R(Cortex-R,32 位和 64 位)
  • Intel x86(32 位和 64 位)
  • MIPS(MIPS32 Release 1 规格)
  • NIOS II Gen 2
  • RISC-V(32 位和 64 位)
  • SPARC V8
  • Tensilica Xtensa

基于这些架构所支持的完整开发板列表,可以在官方文档查看哦。

官方文档:https\://docs.zephyrproject.org/latest/introduction/index.html

许可情况

Zephyr 使用的是比较宽松的 Apache 2.0 license 许可哦(在项目 GitHub repo 里的 LICENSE 文件中能找到呢),不过呀,Zephyr 项目里有一些导入或者复用的组件使用的是其他许可,具体在Zephyr_Licensing 部分有描述哦。

  • Apache 2.0 license 链接:https\://github.com/zephyrproject-rtos/zephyr/blob/main/LICENSE
  • GitHub repo 链接:https\://github.com/zephyrproject-rtos/zephyr

特色功能

丰富的内核服务套件

  1. 多线程服务:有基于合作、优先级、非抢占式、抢占式的线程服务,还能选择轮询时间片呢,并且支持 POSIX pthreads 兼容的 API 哦。 2. 中断服务:可以在编译时注册中断处理程序呢。
  2. 内存分配服务:能动态分配和释放固定大小或者可变大小的内存块哦。
  3. 线程间同步服务:像二进制信号量、计数信号量、互斥信号量这些都有呢。
  4. 线程间数据传递服务:有基本消息队列、增强消息队列以及字节流这些来帮忙传递数据哦。
  5. 电源管理服务:既有系统层面、应用层面或者策略定义的系统电源管理,也有精细的、由驱动定义的设备电源管理哦。

多种调度算法

  1. 有合作式和抢占式调度哦。

  2. 最早截止时间优先(EDF)调度算法也在其中呢。

  3. 还有实现“中断下半部”或者“微任务”行为的元 IRQ 调度哦。

  4. 时间片功能呢,能让同等优先级的可抢占线程之间进行时间片划分哦。

  5. 多种排队策略:

    • 简单链表就绪队列。
    • 红黑树就绪队列。
    • 传统多队列就绪队列。

高度可配置/模块化以保证灵活性

应用程序可以按需只引入自己需要的功能,还能指定它们的数量和大小呢,很灵活哦。

跨架构支持

支持各种各样不同 CPU 架构和开发工具的开发板(前面提到的那些支持的开发板啦),而且不断有新的片上系统、平台和驱动被加入支持列表呢。

内存保护

在 x86、ARC 和 ARM 架构、用户空间以及内存域等方面,实现了可配置的特定架构的栈溢出保护、内核对象和设备驱动权限跟踪以及线程隔离(带有线程级内存保护哦)。对于没有内存管理单元/内存保护单元以及内存受限的设备,还支持把特定应用代码和定制内核结合起来,创建一个整体的镜像,能在系统硬件上加载并执行,应用代码和内核代码都在一个共享地址空间里运行呢。

编译时资源定义

能在编译时定义系统资源哦,这样可以减小代码尺寸,还能提升资源有限系统的性能呢。

优化的设备驱动模型

提供了统一的设备模型来配置平台/系统里的驱动,还有统一的模型来初始化系统里配置好的所有驱动,并且允许驱动在有共同设备/IP 模块的平台之间复用哦。

设备树支持

可以用设备树来描述硬件哦,设备树里的信息会被用来创建应用镜像呢。

原生网络栈支持多协议

网络支持功能很全还做了优化呢,像支持轻量级机器对机器协议(LwM2M)以及和 BSD 套接字兼容的支持都有哦,在北欧芯片组上还提供了 OpenThread 支持(一种能安全可靠地连接家里上百个产品的网状网络哦)。

蓝牙低功耗 5.0 支持

符合蓝牙 5.0(ESR10)标准,还有蓝牙低功耗控制器支持(低功耗链路层哦),包括蓝牙网状网络以及符合蓝牙认证要求的蓝牙控制器呢。

  • 通用访问配置文件(GAP):具备所有可能的低功耗角色哦。
  • 通用属性配置文件(GATT):也在支持范围内呢。
  • 配对支持:包含蓝牙 4.2 里的安全连接特性哦。
  • 清晰的主机控制接口(HCI)驱动抽象:让操作更方便啦。
  • 原始 HCI 接口:能让 Zephyr 作为控制器运行,而不是完整的主机栈哦。
  • 经过多种流行控制器验证:可靠性挺高的呢。
  • 高度可配置:能根据需求灵活调整哦。

蓝牙网状网络支持

  • 有中继、友节点、低功耗节点(LPN)以及通用属性配置文件代理这些功能哦。
  • 两种配置承载都支持(PB-ADV 和 PB-GATT)哦。
  • 高度可配置,在至少有 16K 内存的设备里就能适配呢。

原生 Linux、macOS 和 Windows 开发

有命令行的 CMake 构建环境,可以在常见的开发者操作系统上运行哦。还有一个原生端口(:ref:native_sim <native_sim>),能让你把 Zephyr 当作原生应用在 Linux 上构建和运行,方便开发和测试呢。

虚拟文件系统接口及相关支持

支持 ext2、FatFs 和 LittleFS 哦,对于内存受限的应用还有闪存循环缓冲区(FCB)呢。

强大的多后端日志框架

支持日志过滤、对象转储、恐慌模式,有多个后端(内存、网络、文件系统、控制台等等),还能和 shell 子系统集成在一起呢。

用户友好且功能全面的 Shell 接口

有个多实例的 shell 子系统,具备自动补全、通配符、颜色显示、元键(比如箭头、退格键、Ctrl + U 等等)以及历史记录这些方便用户的功能哦,还支持静态命令和动态子命令呢。

非易失性存储设置

设置子系统能让模块存储每个设备的持久化配置和运行时状态哦,设置项是以键值对字符串的形式存储的呢。

非易失性存储(NVS)

可以存储二进制数据块、字符串、整数、长整数以及它们的任意组合哦。

原生端口

:ref:Native sim <native_sim> 允许把 Zephyr 当作 Linux 应用运行,还支持各种子系统和网络功能呢。

基础术语和概念

要是想了解基础术语和概念呀,可以查看 :ref:glossary 部分哦,那里有更详细的解释呢。

希望这份轻松入门的文档能帮助你初步认识 Zephyr 操作系统呀,要是想深入了解某个部分,还可以进一步去查阅更详细的资料哦。

为什么要学习 Zephyr?

在技术探索的漫漫长路上,我们总会面临诸多抉择,而当下有一个关键决策点值得深入探讨,那就是为何要投身于 Zephyr 的学习之旅。于我而言,背后的驱动力十分明确——我怀揣着打造一款 Web3 硬件钱包的梦想。

Web3 浪潮正以汹涌之势席卷全球,其代表的去中心化理念为诸多领域开辟了全新的可能性。在这一宏大背景下,硬件钱包作为守护数字资产安全的坚固堡垒,重要性不言而喻。然而,想要铸就一款出类拔萃的 Web3 硬件钱包绝非易事,它对底层技术有着严苛要求。

此时,Zephyr 操作系统进入了我的视野。Zephyr 凭借其卓越的跨架构支持能力,能够适配各类芯片架构,为硬件钱包的硬件选型提供了广阔天地,确保无论选用何种核心芯片,都能实现稳定高效运行。其高度可配置的模块化特性,恰似一位贴心的定制裁缝,允许我根据 Web3 硬件钱包的特定需求,精准裁剪功能模块,剔除冗余,聚焦关键,从而在资源受限的硬件环境中,实现性能的最优释放。

再者,Zephyr 强大的安全防护体系令人瞩目。从精细的内存保护机制,到严谨的内核对象与驱动权限追踪,全方位为数字资产的存储与交互保驾护航,让潜在的安全隐患无处遁形。还有它丰富的通信协议支持,无论是用于与外部设备快速交互的原生网络栈,还是契合近距离连接需求的蓝牙低功耗 5.0 功能,都能助力 Web3 硬件钱包轻松融入复杂多变的使用场景,实现便捷流畅的用户体验。

简而言之,学习 Zephyr 是我逐梦 Web3 硬件钱包道路上的关键一步,它将为我的创意落地提供坚实的技术基石,开启一扇通往数字资产安全守护新境界的大门。

点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
King
King
0x56af...a0dd
擅长Rust/Solidity/FunC/Move开发