9个版本
0.2.6 | 2023年1月27日 |
---|---|
0.2.5 | 2022年11月16日 |
0.2.4 | 2022年10月31日 |
0.1.1 | 2022年10月27日 |
#324 in 嵌入式开发
每月下载 54次
12KB
111 行
persistent-buff
在启动之间持久的缓冲区。受 panic-persist 启发
为该缓冲区在RAM中预留一个区域。您的链接脚本应确保缓冲区的起始和结束位置在其他区域之外,以避免零初始化。
用法
链接脚本
您需要为缓冲区创建一个新的保留部分,并确保它位于其他部分之外,以避免零初始化。
示例
memory.x
文件修改前
MEMORY
{
/* NOTE 1 K = 1 KiBi = 1024 bytes */
FLASH : ORIGIN = 0x00000000, LENGTH = 1024K
RAM : ORIGIN = 0x20000000, LENGTH = 128K
}
memory.x
文件修改后,保留1K区域
MEMORY
{
/* NOTE 1 K = 1 KiBi = 1024 bytes */
FLASH : ORIGIN = 0x00000000, LENGTH = 1024K
RAM : ORIGIN = 0x20000000, LENGTH = 128K - 1K
PERSISTENT_BUFF: ORIGIN = ORIGIN(RAM) + LENGTH(RAM), LENGTH = 1K
}
_persistent_buff_start = ORIGIN(PERSISTENT_BUFF);
_persistent_buff_end = ORIGIN(PERSISTENT_BUFF) + LENGTH(PERSISTENT_BUFF);
程序
#![no_std]
#[entry]
fn main() -> ! {
let mut pbuff = persistent_buff::PersistentBuff::take_managed().unwrap();
// Trivial way to initialize is to fill it with 0
let buff = pbuff.validate(|b| b.fill(0));
buff[0] = (buff[0] % 255) + 1;
info!("Value is now {}", buff[0]);
}
许可证
根据您选择的以下许可证之一授权
-
Apache许可证2.0 (LICENSE-APACHE 或 https://apache.ac.cn/licenses/LICENSE-2.0)
-
MIT许可证 (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
任选。
贡献
除非您明确声明,否则任何有意提交以包含在您的工作中的贡献,如Apache-2.0许可证中定义,应按上述方式双授权,不得附加任何其他条款或条件。