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

Storing 200kb of data in an array?

本文关键字:200kb 存储 数据 数组 一个      更新时间:2023-10-16

我对嵌入式应用程序的编程很陌生(除了一些Arduino的东西(,我正在使用德州仪器的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 可供使用,我如何最好地写入/读取它?

恭敬地 -詹姆斯

很有可能将static粘在那个巨大的数组前面可以使其工作。

大多数嵌入式系统的编译器会将函数局部变量放在 CPU 堆栈上,但static变量具有"静态存储持续时间",并且本质上表现得像全局变量。链接器确切地知道这些需要多少内存,并将尝试将它们放入其中。

当然,static会使函数不可重入,但无论如何,您都无法在 256 kB 的设备上分配两个 200 kB 阵列。