18 个发布版本
0.0.17 | 2020年4月11日 |
---|---|
0.0.16 | 2020年4月11日 |
0.0.5 | 2020年3月31日 |
#9 in #gba
每月75次下载
62KB
910 代码行
rubidium
GBA 内存映射 IO (MMIO) 类型和声明。
lib.rs
:
GBA 内存映射 IO (MMIO) 相关内容。
GBA 通过 MMIO 进行控制。MMIO 位置称为 "寄存器",类似于 CPU 有寄存器。不同的寄存器都是全局可访问的,因此用户代码必须有自己的约定,以确定何时触摸哪些值。
此包定义了描述每个寄存器数据布局的新类型,如果您启用 unsafe_addresses
功能,它还定义了每个寄存器的地址。每个寄存器使用的地址类型让您了解访问特定寄存器的安全性(或不是)。安全性评估依赖于仅在 GBA 上运行代码,因此如果您在您的桌面或任何其他东西上使用此包,这是您的责任。
这只是一个“进行中”的状态,但如果事情不清楚,请提交一个问题。在等待的过程中,您还可以查看GBATEK,这是 GBA 信息的标准资源(并且这也是这个包文档的大部分来源)。
命名约定
默认情况下,用于地址的名称与 GBATEK 名称相同。
在某些情况下,我将 GBATEK 认为的多个相邻寄存器组合成一个更大的寄存器。例如,WININ
和 WINOUT
已合并为 WIN_CONTROL
。MMIO 如此灵活,只要组合地址的对齐方式正确,对于组合数据类型来说都很好。请告诉我您的想法(跟踪器),因为我们可以在这个领域进行调整。
对于寄存器数据新类型中的每个设置,将包含三个方法
- 一个与设置同名的常量 "getter"(例如:
foo
)。 - 一个常量 "with-er",它接受
self
并返回一个新值(例如:with_foo
)。 - 一个 "setter",它接受
&mut self
并在原地更新值(例如:set_foo
)。这有望在未来版本的 Rust 中也变成常量。