可变的全局状态
不幸地是,硬件本质上是个可变的全局状态,Rust开发者可能对此感到很害怕。因为硬件独立于我们所写的代码的结构,能被真实世界在任何时候改变。
我们应该遵循什么规则?
我们如何才能做到可靠地与这些外设交互?
- 总是使用
volatile
方法去读或者写外设存储器。因为它可以随时改变。 - 在软件中,我们应该能共享任何数量的关于这些外设的只读访问
- 如果某些软件对一个外设应该可以读写访问,它应该保有对那个外设的唯一引用。
借用检查器
这些规则最后两个听起来与借用检查器已经做的事相似。
思考一下,我们是否可以分发这些外设的所有权,或者引用它们?
我们当然可以,但是对于借用检查器来说,每个外设我们都只需要一个实例,因此Rust可以正确地处理这个实例。幸运的是,在硬件中,任何给定的外设,只有一个实例,但是我们该如何将它暴露在我们代码的结构中呢?
当前内容版权归 rust-embedded 或其关联方所有,如需对内容或内容相关联开源项目进行关注与资助,请访问 rust-embedded .