闪存搜索字符串

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了闪存搜索字符串相关的知识,希望对你有一定的参考价值。

闪存用于记录帧:$D数据,$E错误和$R报告和更多。每一帧都有时间戳,在帧类型后面:$D,Timestamp......$E。所有数据均为十六进制,长度可变,即0=0,1587912486=5EA59F26,这不是固定长度的帧。时间戳为UDT1970。

NB:在Flash中,每页是256 Byte。

到目前为止,我从起始页和结束页之间的中心页开始,在该页上寻找(通过$D匹配)并读取时间戳(将flash字节逐个读取到数组中,直到检测到',')在每一页的开始。这是两个过程。跳页搜索,然后逐个字节搜索。

我很好奇,是否有类似的算法,在特定的名称下,或者有更好的算法优化Flash内存搜索。NB:我在SRAM的使用上有一个限制,即不能选择转移到大缓冲区。

答案

在我看来,你开始运行的是一个 二进制搜索 直到找到包含键的区间,然后运行一个 线性搜索 在该区间内。

如果您的采样率是或多或少的恒定值,您可能会更快地用以下方法在正确的区间内归零 内插搜索但它对你的插值的准确性非常敏感,这将取决于你的采样的均匀性。

快速搜索(和精确插值)最明显的障碍是可变的帧大小:如果你能在不浪费太多空间的情况下固定大小,或者写一个单独的索引(本身就有固定大小的记录,不管是小的适合SRAM,还是也住在flash里),应该会比较容易。

例如,你可以保留一个可快速查找的索引,存储时间戳+索引(只是一个数组,再进行二进制或插值查找,或树或跳过列表,或其他)。然后你就可以用固定的偏移量进行快速查找,并对可变大小的数据进行内推。

以上是关于闪存搜索字符串的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Linux 下的 C 中确定 USB 存储(USB 闪存驱动器)“设备路径”

在 MicroPython 中,如何从字符串中加载模块

是否可以对通用 TWAIN 扫描仪进行闪存访问?

如何使用无头镀铬在 Selenium 中启用闪存

win10密钥怎么找回

字符设备驱动程序