18 个发布版本

0.0.17 2020年4月11日
0.0.16 2020年4月11日
0.0.5 2020年3月31日

#9 in #gba

Download history 2/week @ 2024-03-27 4/week @ 2024-04-03 75/week @ 2024-07-03

每月75次下载

Zlib 许可证

62KB
910 代码行

License:Zlib Minimum Rust Version TravisCI crates.io docs.rs

rubidium

GBA 内存映射 IO (MMIO) 类型和声明。


lib.rs:

GBA 内存映射 IO (MMIO) 相关内容。

GBA 通过 MMIO 进行控制。MMIO 位置称为 "寄存器",类似于 CPU 有寄存器。不同的寄存器都是全局可访问的,因此用户代码必须有自己的约定,以确定何时触摸哪些值。

此包定义了描述每个寄存器数据布局的新类型,如果您启用 unsafe_addresses 功能,它还定义了每个寄存器的地址。每个寄存器使用的地址类型让您了解访问特定寄存器的安全性(或不是)。安全性评估依赖于仅在 GBA 上运行代码,因此如果您在您的桌面或任何其他东西上使用此包,这是您的责任。

这只是一个“进行中”的状态,但如果事情不清楚,请提交一个问题。在等待的过程中,您还可以查看GBATEK,这是 GBA 信息的标准资源(并且这也是这个包文档的大部分来源)。

命名约定

默认情况下,用于地址的名称与 GBATEK 名称相同。

在某些情况下,我将 GBATEK 认为的多个相邻寄存器组合成一个更大的寄存器。例如,WININWINOUT 已合并为 WIN_CONTROL。MMIO 如此灵活,只要组合地址的对齐方式正确,对于组合数据类型来说都很好。请告诉我您的想法(跟踪器),因为我们可以在这个领域进行调整。

对于寄存器数据新类型中的每个设置,将包含三个方法

  • 一个与设置同名的常量 "getter"(例如:foo)。
  • 一个常量 "with-er",它接受 self 并返回一个新值(例如:with_foo)。
  • 一个 "setter",它接受 &mut self 并在原地更新值(例如:set_foo)。这有望在未来版本的 Rust 中也变成常量。

无运行时依赖

功能