我正在开发一个可以测试大量电线(最多 360 根)的嵌入式系统——本质上是一个连续性检查系统。该系统通过在测试向量中计时并从另一端读取输出来工作。然后将输出与存储的结果(将在 SD 卡上)进行比较,该结果告诉输出应该是什么。测试向量只是一个行走的向量,因此无需将它们存储在任何地方。该过程将如下所示:
- 打卡测试向量(行走的)
- 读入输出测试向量。
- 从 SD 卡读取相应的输出测试向量,它告诉输出向量应该是什么。
- 比较第 2 步和第 3 步的测试向量。
- 在单独的数组中记下错误/故障。
- 除非检查了所有电线,否则继续返回步骤 1。
- 将错误/故障输出到 LCD。
我的硬件由一个大的移位寄存器组成,它与 AVR 微控制器同步。对于每个测试向量(也将是 360 位),我需要读取 360 位。因此,对于 360 根线,数据总量将是 360*360 = 16kB 左右。我已经知道我不能一次性做到这一点(即读取整个数据然后比较),所以它必须是一个测试向量一个测试向量。
由于没有可以容纳如此大数字的固有类型,我打算使用长度为 360 位的位数组。现在,我的问题是,我应该如何将这个位数组存储在 txt 文件中?
一种方法是存储原始值,即在每一行存储我从移位寄存器读取的原始二进制数据。因此,对于 8 根线,它将是 0b10011010。但这对于多达 360 根线来说可能会变得很丑 - 每条线将包含 360 个字节。
另一种方法是存储十六进制值 - 这将只是 8 位的两个字符(以上为 9A)和 360 位的大约 90 个字符。但是,这将需要我逐行读取文本,并以某种方式将十六进制值转换为位数组中表示的值。
那么对于此类问题的最佳解决方案是什么?我需要完全“确定性”的解决方案——我不能调用 malloc 之类的。从我读过的内容来看,它们在嵌入式系统中有点禁忌。
概括
我需要存储任何传统变量类型都无法表示的大值。目前我打算将这些值存储在位数组中。将这些值存储在 SD 卡上的文本文件中的最佳方法是什么?