shared-bus: 多设备间安全共享总线的开源解决方案
一、项目基础介绍及编程语言
shared-bus
是一个用Rust语言编写的开源项目,旨在为嵌入式系统提供一种在多个设备之间安全共享总线(如I2C、SPI等)的解决方案。在嵌入式HAL(硬件抽象层)生态中,通常每个驱动程序都会“拥有”它所操作的总线,这意味着一次只能有一个驱动程序访问特定的总线。然而,当多个设备连接到单个总线时,这种设计就出现了问题。shared-bus
通过为每个驱动程序提供一个内部管理总线访问的 bus-proxy 来解决这个问题。
二、项目的核心功能
项目的主要功能是允许在多个设备之间安全地共享总线,即使这些设备可能运行在不同的任务或线程中。具体功能如下:
-
单任务/线程内共享: 当所有总线用户都在单个任务或线程中时,总线共享非常简单,不需要特殊的同步机制。此时可以使用
BusManagerSimple
。 -
跨任务/线程共享: 当需要在多个任务或线程之间共享总线时,需要确保所有总线访问都被严格序列化,防止竞争条件。
shared-bus
提供了针对不同平台的特定BusMutex
实现,以及用于创建具有 'static 生命周期的 bus-manager 的宏。 -
支持多种总线类型: 目前支持I2C、SPI和ADC等总线类型的共享。
三、项目最近更新的功能
根据项目最近的更新记录,以下是一些新增或改进的功能:
-
改进了SPI总线的共享支持: 之前SPI总线只能在其所在的单个任务内共享,现在的更新允许在更广泛的场景下使用SPI总线的共享功能。
-
新增了对特定平台的支持: 项目增加了一些新的
BusMutex
实现,以支持更多的嵌入式平台和操作系统。 -
优化了内部同步机制: 提高了跨任务/线程共享时的性能和可靠性。
-
更新了文档和示例: 新增了更多的使用示例和文档,以帮助开发者更好地理解和使用这个项目。
这些更新进一步增强了 shared-bus
的实用性和灵活性,使其成为嵌入式系统开发者共享总线问题的首选解决方案。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考