在数组中存储 200kb 的数据?

Storing 200kb of data in an array?

我是嵌入式应用程序编程的新手(除了一些 Arduino 的东西),我正在使用 Texas Instruments 的 CC3220SF 微控制器。

目前我有一个程序不断轮询设备并存储结果。我想存储 100,000 个这些样本(每个样本为 2 个字节),给我 200kb 的数据来存储。我不太确定我应该怎么做,因为试图制作一个大小为 [100][1000] 的数组只会使设备崩溃。

我应该如何存储这些数据以备后用?

#define MAX_ARR_LENGTH                   1000
#define MAX_ARR_DEPTH                    100

// Later in the collection function:
uint16_t measurmentsArr[MAX_ARR_DEPTH][MAX_ARR_LENGTH] = {0};
unsigned int arr_length = 0;
unsigned int arr_depth = 0;

// And later, after a data point has
// been verified as useful:
if (arr_length < MAX_ARR_LENGTH){
    measurmentsArr[arr_depth][arr_length++] = angle;
} else {
    arr_length = 0;
    measurmentsArr[arr_depth++][arr_length] = angle;
}

这种 ^^^ 方法适用于小型阵列,但正如我所说,我需要存储 200kb...我知道 CC3220SF 有 512kb 可供使用,我如何才能最好地 write/read ?

恭敬地, -詹姆斯

有可能将 static 粘贴在那个巨大的阵列前面使其工作。

大多数嵌入式系统编译器会将函数局部变量放在 CPU 堆栈上,但 static 变量具有 "static storage duration" 并且本质上表现得像全局变量。链接器确切地知道它们需要多少内存,并会尝试将它们装入。

当然,static 将使该函数不可重入,但无论如何您不能在 256 kB 设备上分配两个 200 kB 数组。