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 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.3
和 0.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.org 项目一样,我们希望 Swift MMIO 项目能够培养一个多元化和友好的社区。 我们希望贡献者遵守 Swift.org 行为准则。 本文档的副本可以在此存储库中找到。
此软件包的当前代码所有者是 Rauhul Varma (@rauhul)。 你可以在 Swift 论坛上联系他。
如果出现审核问题,你也可以直接联系 Swift Core Team 的成员。