存储
存储提供了一种机制,使您的设备能够保存数据,在电源循环之间保持数据的持久性。这使您能够根据自己的喜好配置键盘,而不会在重新启动之间丢失您所做的任何更改。
设置
所需 Cargo 功能
你必须启用以下 rumcake
功能:
storage
目前,以下功能可以使用存储:
backlight
(用于存储背光色调、饱和度、亮度、速度、效果等)underglow
(用于存储底部灯光色调、饱和度、亮度、速度、效果等)via
/vial
(用于存储动态按键映射)
请查看它们各自的文档,了解如何为这些功能启用存储使用。通常,任何能够将数据存储到存储外设的功能都需要在 #[keyboard]
宏调用中明确指定 use_storage
。
如果你的 #[keyboard]
宏调用中没有在任何地方指定 use_storage
,则无需设置存储驱动。
使用 MCU 闪存作为存储的必要代码
接下来的说明适用于如果你想使用选定 MCU 上的现有闪存空间作为存储。
要设置存储,你必须在 memory.x
文件中添加一个 CONFIG
部分,并使用 __config_start
和 __config_end
指定 CONFIG
部分的起始和结束地址。这将涉及从 FLASH
部分中获取一些空间,因此请确保你仍有足够的空间来刷写编译后的固件二进制文件。
如果不确定要为存储分配多少空间,请参阅此部分。
以下示例显示了 STM32F303CBx
芯片的 memory.x
可能是什么样子:
CONFIG
部分的要求:
- 大小必须是闪存外设的“擦除大小”的倍数。有时这也称为“页面大小”或“区域大小”。
- 在上面的示例中,STM32F303CBx 的擦除大小为 2KiB。因此,
CONFIG
部分的大小为 4 页。
- 在上面的示例中,STM32F303CBx 的擦除大小为 2KiB。因此,
- 起始地址(
__config_start
)必须对齐到擦除大小的倍数。 __config_start
和__config_end
的值必须相对于 FLASH 部分的起始地址。- 请注意,在上面的示例中,我们为此目的减去了
ORIGIN(FLASH)
。
- 请注意,在上面的示例中,我们为此目的减去了
最后,你可以将 storage(driver = "internal")
添加到你的 #[keyboard]
宏调用中。
存储空间注意事项
为存储分配的空间量取决于你的键盘使用了哪些功能。
在底层,TicKV 用作文件系统来存储数据。有关更多信息,请参阅他们的规范文档。你可能希望考虑分配多个页面以提高闪存的寿命(即使你可能不一定需要所有空间)。
待办事项列表
- QSPI 驱动