Swift MMIO

Swift MMIO 是一个开源软件包,用于直接在 Swift 中定义和操作内存映射 IO。

概述

Swift MMIO 可以轻松地直接在 Swift 源代码中定义寄存器,并以安全且符合人体工程学的方式操作它们。

使用示例

@RegisterBlock
struct Control {
  @RegisterBlock(offset: 0x0)
  var cr1: Register<CR1>
  @RegisterBlock(offset: 0x4)
  var cr2: Register<CR2>
}

@Register(bitWidth: 32)
struct CR1 {
  @ReadWrite(bits: 12..<13, as: Bool.self)
  var en: EN
}

let control = Control(unsafeAddress: 0x1000)
control.cr1.modify { $0.en = true }

在你的项目中使用 Swift MMIO

Swift MMIO 支持与 Swift Package Manager 结合使用。首先,将 Swift MMIO 仓库添加到你的 Package 的依赖项中。

.package(url: "https://github.com/apple/swift-mmio.git", from: "0.0.2"),

其次,将 MMIO 库添加到你的目标依赖项中。

.target(
  name: "DeviceRegisters",
  dependencies: [
    .product(name: "MMIO", package: "swift-mmio")
  ]),

最后,在你的 Swift 源代码中 import MMIO

源码稳定性

本项目遵循语义化版本控制。 即使仍在主版本 0 中,也仅保证次版本内的源稳定性(例如,在 0.0.30.0.4 之间)。 如果你想防止潜在的破坏源程序的包更新,可以使用 .upToNextMinor(from: "0.0.2") 作为需求来指定你的包依赖项。

.package(url: "https://github.com/apple/swift-mmio.git", .upToNextMinor(from: "0.0.2")),

文档

有关指南、文章和 API 文档,请参阅 Web 上的 Package 文档 或 Xcode 中的文档。

为 Swift MMIO 做贡献

行为准则

与所有 Swift.org 项目一样,我们希望 Swift MMIO 项目能够培养一个多元化和友好的社区。 我们希望贡献者遵守 Swift.org 行为准则。 本文档的副本可以在此存储库中找到

联系方式

此软件包的当前代码所有者是 Rauhul Varma (@rauhul)。 你可以在 Swift 论坛上联系他。

如果出现审核问题,你也可以直接联系 Swift Core Team 的成员。