{"content":{"title":"解锁 Web3 硬件钱包潜力：Zephyr 赋能之旅","body":"# 引言\r\n\r\n在当今数字化浪潮汹涌澎湃的时代，嵌入式开发宛如一座隐匿着无尽宝藏的神秘岛屿，吸引着无数技术探索者扬帆起航。作为一名怀揣热忱、毅然踏上 Rust 嵌入式开发征程的求知者，我怀揣着对未知的憧憬，在前行路上不断摸索。\r\n\r\n起初，不同操作系统与开发环境之间的兼容性难题，犹如荆棘丛般横亘在前，给探索之路增添诸多坎坷。然而，峰回路转之际，惊喜悄然而至——我惊喜地发现 Zephyr 操作系统宛如一位贴心挚友，对 Mac 用户展现出了超乎寻常的友好姿态。它凭借着出色的跨平台适配能力，无缝融入 Mac 生态，为像我这般使用 Mac 的开发者铺就了一条平顺的进阶之路。\r\n\r\n正因如此，我毅然决然开启这场补习 Zephyr 知识的求知之旅，期望能填补自身知识版图上的这片空白。在接下来的探索中，愿与诸位一同揭开 Zephyr 的神秘面纱，深入挖掘其在 Rust 嵌入式开发领域蕴含的巨大潜能，携手迈向技术的新边疆。此刻，让我们满怀期待，共赴这场知识的盛宴。\r\n\r\n![image.png](https://img.learnblockchain.cn/attachments/2025/01/QJYzeJWk67788492f05f5.png)\r\n\r\n> 这块开发板，便是我在项目研发进程中所倚重的得力 “伙伴”\r\n\r\n# Zephyr 简介\r\n\r\nZephyr 操作系统是基于一个小尺寸内核设计的，专门用于资源受限的嵌入式系统哦，像简单的嵌入式环境传感器、LED 可穿戴设备，还有复杂些的嵌入式控制器、智能手表以及物联网无线应用等等，它都能派上用场呢。\r\n\r\n# 支持的架构\r\n\r\nZephyr 内核支持超多的架构呀，具体有这些哦：\r\n\r\n* ARCv2（EM 和 HS）以及 ARCv3（HS6X）\r\n* ARMv6-M、ARMv7-M 和 ARMv8-M（Cortex-M）\r\n* ARMv7-A 和 ARMv8-A（Cortex-A，32 位和 64 位）\r\n* ARMv7-R、ARMv8-R（Cortex-R，32 位和 64 位）\r\n* Intel x86（32 位和 64 位）\r\n* MIPS（MIPS32 Release 1 规格）\r\n* NIOS II Gen 2\r\n* RISC-V（32 位和 64 位）\r\n* SPARC V8\r\n* Tensilica Xtensa\r\n\r\n基于这些架构所支持的完整开发板列表，可以在官方文档查看哦。\r\n\r\n> 官方文档：https\\://docs.zephyrproject.org/latest/introduction/index.html\r\n\r\n# 许可情况\r\n\r\nZephyr 使用的是比较宽松的 `Apache 2.0 license` 许可哦（在项目 `GitHub repo` 里的 `LICENSE` 文件中能找到呢），不过呀，Zephyr 项目里有一些导入或者复用的组件使用的是其他许可，具体在`Zephyr_Licensing` 部分有描述哦。\r\n\r\n* `Apache 2.0 license` 链接：https\\://github.com/zephyrproject-rtos/zephyr/blob/main/LICENSE\r\n* `GitHub repo` 链接：https\\://github.com/zephyrproject-rtos/zephyr\r\n\r\n# 特色功能\r\n\r\n### 丰富的内核服务套件\r\n\r\n1. **多线程服务**：有基于合作、优先级、非抢占式、抢占式的线程服务，还能选择轮询时间片呢，并且支持 POSIX pthreads 兼容的 API 哦。\r\n2. **中断服务**：可以在编译时注册中断处理程序呢。\r\n3. **内存分配服务**：能动态分配和释放固定大小或者可变大小的内存块哦。\r\n4. **线程间同步服务**：像二进制信号量、计数信号量、互斥信号量这些都有呢。\r\n5. **线程间数据传递服务**：有基本消息队列、增强消息队列以及字节流这些来帮忙传递数据哦。\r\n6. **电源管理服务**：既有系统层面、应用层面或者策略定义的系统电源管理，也有精细的、由驱动定义的设备电源管理哦。\r\n\r\n### 多种调度算法\r\n\r\n1. 有合作式和抢占式调度哦。\r\n\r\n2. 最早截止时间优先（EDF）调度算法也在其中呢。\r\n\r\n3. 还有实现“中断下半部”或者“微任务”行为的元 IRQ 调度哦。\r\n\r\n4. 时间片功能呢，能让同等优先级的可抢占线程之间进行时间片划分哦。\r\n\r\n5. 多种排队策略：\r\n\r\n       * 简单链表就绪队列。\r\n       * 红黑树就绪队列。\r\n       * 传统多队列就绪队列。\r\n\r\n### 高度可配置/模块化以保证灵活性\r\n\r\n应用程序可以按需只引入自己需要的功能，还能指定它们的数量和大小呢，很灵活哦。\r\n\r\n### 跨架构支持\r\n\r\n支持各种各样不同 CPU 架构和开发工具的开发板（前面提到的那些支持的开发板啦），而且不断有新的片上系统、平台和驱动被加入支持列表呢。\r\n\r\n### 内存保护\r\n\r\n在 x86、ARC 和 ARM 架构、用户空间以及内存域等方面，实现了可配置的特定架构的栈溢出保护、内核对象和设备驱动权限跟踪以及线程隔离（带有线程级内存保护哦）。对于没有内存管理单元/内存保护单元以及内存受限的设备，还支持把特定应用代码和定制内核结合起来，创建一个整体的镜像，能在系统硬件上加载并执行，应用代码和内核代码都在一个共享地址空间里运行呢。\r\n\r\n### 编译时资源定义\r\n\r\n能在编译时定义系统资源哦，这样可以减小代码尺寸，还能提升资源有限系统的性能呢。\r\n\r\n### 优化的设备驱动模型\r\n\r\n提供了统一的设备模型来配置平台/系统里的驱动，还有统一的模型来初始化系统里配置好的所有驱动，并且允许驱动在有共同设备/IP 模块的平台之间复用哦。\r\n\r\n### 设备树支持\r\n\r\n可以用设备树来描述硬件哦，设备树里的信息会被用来创建应用镜像呢。\r\n\r\n### 原生网络栈支持多协议\r\n\r\n网络支持功能很全还做了优化呢，像支持轻量级机器对机器协议（LwM2M）以及和 BSD 套接字兼容的支持都有哦，在北欧芯片组上还提供了 OpenThread 支持（一种能安全可靠地连接家里上百个产品的网状网络哦）。\r\n\r\n### 蓝牙低功耗 5.0 支持\r\n\r\n符合蓝牙 5.0（ESR10）标准，还有蓝牙低功耗控制器支持（低功耗链路层哦），包括蓝牙网状网络以及符合蓝牙认证要求的蓝牙控制器呢。\r\n\r\n* **通用访问配置文件（GAP）**：具备所有可能的低功耗角色哦。\r\n* **通用属性配置文件（GATT）**：也在支持范围内呢。\r\n* **配对支持**：包含蓝牙 4.2 里的安全连接特性哦。\r\n* **清晰的主机控制接口（HCI）驱动抽象**：让操作更方便啦。\r\n* **原始 HCI 接口**：能让 Zephyr 作为控制器运行，而不是完整的主机栈哦。\r\n* **经过多种流行控制器验证**：可靠性挺高的呢。\r\n* **高度可配置**：能根据需求灵活调整哦。\r\n\r\n**蓝牙网状网络支持**：\r\n\r\n* 有中继、友节点、低功耗节点（LPN）以及通用属性配置文件代理这些功能哦。\r\n* 两种配置承载都支持（PB-ADV 和 PB-GATT）哦。\r\n* 高度可配置，在至少有 16K 内存的设备里就能适配呢。\r\n\r\n### 原生 Linux、macOS 和 Windows 开发\r\n\r\n有命令行的 CMake 构建环境，可以在常见的开发者操作系统上运行哦。还有一个原生端口（:ref:`native_sim <native_sim>`），能让你把 Zephyr 当作原生应用在 Linux 上构建和运行，方便开发和测试呢。\r\n\r\n### 虚拟文件系统接口及相关支持\r\n\r\n支持 ext2、FatFs 和 LittleFS 哦，对于内存受限的应用还有闪存循环缓冲区（FCB）呢。\r\n\r\n### 强大的多后端日志框架\r\n\r\n支持日志过滤、对象转储、恐慌模式，有多个后端（内存、网络、文件系统、控制台等等），还能和 shell 子系统集成在一起呢。\r\n\r\n### 用户友好且功能全面的 Shell 接口\r\n\r\n有个多实例的 shell 子系统，具备自动补全、通配符、颜色显示、元键（比如箭头、退格键、Ctrl + U 等等）以及历史记录这些方便用户的功能哦，还支持静态命令和动态子命令呢。\r\n\r\n### 非易失性存储设置\r\n\r\n设置子系统能让模块存储每个设备的持久化配置和运行时状态哦，设置项是以键值对字符串的形式存储的呢。\r\n\r\n### 非易失性存储（NVS）\r\n\r\n可以存储二进制数据块、字符串、整数、长整数以及它们的任意组合哦。\r\n\r\n### 原生端口\r\n\r\n:ref:`Native sim <native_sim>` 允许把 Zephyr 当作 Linux 应用运行，还支持各种子系统和网络功能呢。\r\n\r\n# 基础术语和概念\r\n\r\n要是想了解基础术语和概念呀，可以查看 :ref:`glossary` 部分哦，那里有更详细的解释呢。\r\n\r\n希望这份轻松入门的文档能帮助你初步认识 Zephyr 操作系统呀，要是想深入了解某个部分，还可以进一步去查阅更详细的资料哦。\r\n\r\n# 为什么要学习 Zephyr？\r\n\r\n在技术探索的漫漫长路上，我们总会面临诸多抉择，而当下有一个关键决策点值得深入探讨，那就是为何要投身于 Zephyr 的学习之旅。于我而言，背后的驱动力十分明确——我怀揣着打造一款 Web3 硬件钱包的梦想。\r\n\r\nWeb3 浪潮正以汹涌之势席卷全球，其代表的去中心化理念为诸多领域开辟了全新的可能性。在这一宏大背景下，硬件钱包作为守护数字资产安全的坚固堡垒，重要性不言而喻。然而，想要铸就一款出类拔萃的 Web3 硬件钱包绝非易事，它对底层技术有着严苛要求。\r\n\r\n此时，Zephyr 操作系统进入了我的视野。Zephyr 凭借其卓越的跨架构支持能力，能够适配各类芯片架构，为硬件钱包的硬件选型提供了广阔天地，确保无论选用何种核心芯片，都能实现稳定高效运行。其高度可配置的模块化特性，恰似一位贴心的定制裁缝，允许我根据 Web3 硬件钱包的特定需求，精准裁剪功能模块，剔除冗余，聚焦关键，从而在资源受限的硬件环境中，实现性能的最优释放。\r\n\r\n再者，Zephyr 强大的安全防护体系令人瞩目。从精细的内存保护机制，到严谨的内核对象与驱动权限追踪，全方位为数字资产的存储与交互保驾护航，让潜在的安全隐患无处遁形。还有它丰富的通信协议支持，无论是用于与外部设备快速交互的原生网络栈，还是契合近距离连接需求的蓝牙低功耗 5.0 功能，都能助力 Web3 硬件钱包轻松融入复杂多变的使用场景，实现便捷流畅的用户体验。\r\n\r\n简而言之，学习 Zephyr 是我逐梦 Web3 硬件钱包道路上的关键一步，它将为我的创意落地提供坚实的技术基石，开启一扇通往数字资产安全守护新境界的大门。"},"author":{"user":"https://learnblockchain.cn/people/16052","address":"0x56af91a252c1009c5a065eac15aa2ec9a278a0dd"},"history":"bafkreiguthmfjyjo23loort3h763kcgmjim57qd6ketspdivjud3ik4szq","timestamp":1735951696,"version":1}