引言在当今数字化浪潮汹涌澎湃的时代,嵌入式开发宛如一座隐匿着无尽宝藏的神秘岛屿,吸引着无数技术探索者扬帆起航。作为一名怀揣热忱、毅然踏上Rust嵌入式开发征程的求知者,我怀揣着对未知的憧憬,在前行路上不断摸索。起初,不同操作系统与开发环境之间的兼容性难题,犹如荆棘丛般横亘在前,给探索之路增添
在当今数字化浪潮汹涌澎湃的时代,嵌入式开发宛如一座隐匿着无尽宝藏的神秘岛屿,吸引着无数技术探索者扬帆起航。作为一名怀揣热忱、毅然踏上 Rust 嵌入式开发征程的求知者,我怀揣着对未知的憧憬,在前行路上不断摸索。
起初,不同操作系统与开发环境之间的兼容性难题,犹如荆棘丛般横亘在前,给探索之路增添诸多坎坷。然而,峰回路转之际,惊喜悄然而至——我惊喜地发现 Zephyr 操作系统宛如一位贴心挚友,对 Mac 用户展现出了超乎寻常的友好姿态。它凭借着出色的跨平台适配能力,无缝融入 Mac 生态,为像我这般使用 Mac 的开发者铺就了一条平顺的进阶之路。
正因如此,我毅然决然开启这场补习 Zephyr 知识的求知之旅,期望能填补自身知识版图上的这片空白。在接下来的探索中,愿与诸位一同揭开 Zephyr 的神秘面纱,深入挖掘其在 Rust 嵌入式开发领域蕴含的巨大潜能,携手迈向技术的新边疆。此刻,让我们满怀期待,共赴这场知识的盛宴。
这块开发板,便是我在项目研发进程中所倚重的得力 “伙伴”
Zephyr 操作系统是基于一个小尺寸内核设计的,专门用于资源受限的嵌入式系统哦,像简单的嵌入式环境传感器、LED 可穿戴设备,还有复杂些的嵌入式控制器、智能手表以及物联网无线应用等等,它都能派上用场呢。
Zephyr 内核支持超多的架构呀,具体有这些哦:
基于这些架构所支持的完整开发板列表,可以在官方文档查看哦。
官方文档: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/LICENSEGitHub repo
链接:https\://github.com/zephyrproject-rtos/zephyr有合作式和抢占式调度哦。
最早截止时间优先(EDF)调度算法也在其中呢。
还有实现“中断下半部”或者“微任务”行为的元 IRQ 调度哦。
时间片功能呢,能让同等优先级的可抢占线程之间进行时间片划分哦。
多种排队策略:
应用程序可以按需只引入自己需要的功能,还能指定它们的数量和大小呢,很灵活哦。
支持各种各样不同 CPU 架构和开发工具的开发板(前面提到的那些支持的开发板啦),而且不断有新的片上系统、平台和驱动被加入支持列表呢。
在 x86、ARC 和 ARM 架构、用户空间以及内存域等方面,实现了可配置的特定架构的栈溢出保护、内核对象和设备驱动权限跟踪以及线程隔离(带有线程级内存保护哦)。对于没有内存管理单元/内存保护单元以及内存受限的设备,还支持把特定应用代码和定制内核结合起来,创建一个整体的镜像,能在系统硬件上加载并执行,应用代码和内核代码都在一个共享地址空间里运行呢。
能在编译时定义系统资源哦,这样可以减小代码尺寸,还能提升资源有限系统的性能呢。
提供了统一的设备模型来配置平台/系统里的驱动,还有统一的模型来初始化系统里配置好的所有驱动,并且允许驱动在有共同设备/IP 模块的平台之间复用哦。
可以用设备树来描述硬件哦,设备树里的信息会被用来创建应用镜像呢。
网络支持功能很全还做了优化呢,像支持轻量级机器对机器协议(LwM2M)以及和 BSD 套接字兼容的支持都有哦,在北欧芯片组上还提供了 OpenThread 支持(一种能安全可靠地连接家里上百个产品的网状网络哦)。
符合蓝牙 5.0(ESR10)标准,还有蓝牙低功耗控制器支持(低功耗链路层哦),包括蓝牙网状网络以及符合蓝牙认证要求的蓝牙控制器呢。
蓝牙网状网络支持:
有命令行的 CMake 构建环境,可以在常见的开发者操作系统上运行哦。还有一个原生端口(:ref:native_sim <native_sim>
),能让你把 Zephyr 当作原生应用在 Linux 上构建和运行,方便开发和测试呢。
支持 ext2、FatFs 和 LittleFS 哦,对于内存受限的应用还有闪存循环缓冲区(FCB)呢。
支持日志过滤、对象转储、恐慌模式,有多个后端(内存、网络、文件系统、控制台等等),还能和 shell 子系统集成在一起呢。
有个多实例的 shell 子系统,具备自动补全、通配符、颜色显示、元键(比如箭头、退格键、Ctrl + U 等等)以及历史记录这些方便用户的功能哦,还支持静态命令和动态子命令呢。
设置子系统能让模块存储每个设备的持久化配置和运行时状态哦,设置项是以键值对字符串的形式存储的呢。
可以存储二进制数据块、字符串、整数、长整数以及它们的任意组合哦。
:ref:Native sim <native_sim>
允许把 Zephyr 当作 Linux 应用运行,还支持各种子系统和网络功能呢。
要是想了解基础术语和概念呀,可以查看 :ref:glossary
部分哦,那里有更详细的解释呢。
希望这份轻松入门的文档能帮助你初步认识 Zephyr 操作系统呀,要是想深入了解某个部分,还可以进一步去查阅更详细的资料哦。
在技术探索的漫漫长路上,我们总会面临诸多抉择,而当下有一个关键决策点值得深入探讨,那就是为何要投身于 Zephyr 的学习之旅。于我而言,背后的驱动力十分明确——我怀揣着打造一款 Web3 硬件钱包的梦想。
Web3 浪潮正以汹涌之势席卷全球,其代表的去中心化理念为诸多领域开辟了全新的可能性。在这一宏大背景下,硬件钱包作为守护数字资产安全的坚固堡垒,重要性不言而喻。然而,想要铸就一款出类拔萃的 Web3 硬件钱包绝非易事,它对底层技术有着严苛要求。
此时,Zephyr 操作系统进入了我的视野。Zephyr 凭借其卓越的跨架构支持能力,能够适配各类芯片架构,为硬件钱包的硬件选型提供了广阔天地,确保无论选用何种核心芯片,都能实现稳定高效运行。其高度可配置的模块化特性,恰似一位贴心的定制裁缝,允许我根据 Web3 硬件钱包的特定需求,精准裁剪功能模块,剔除冗余,聚焦关键,从而在资源受限的硬件环境中,实现性能的最优释放。
再者,Zephyr 强大的安全防护体系令人瞩目。从精细的内存保护机制,到严谨的内核对象与驱动权限追踪,全方位为数字资产的存储与交互保驾护航,让潜在的安全隐患无处遁形。还有它丰富的通信协议支持,无论是用于与外部设备快速交互的原生网络栈,还是契合近距离连接需求的蓝牙低功耗 5.0 功能,都能助力 Web3 硬件钱包轻松融入复杂多变的使用场景,实现便捷流畅的用户体验。
简而言之,学习 Zephyr 是我逐梦 Web3 硬件钱包道路上的关键一步,它将为我的创意落地提供坚实的技术基石,开启一扇通往数字资产安全守护新境界的大门。
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!