在数组中存储 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 数组。
我是嵌入式应用程序编程的新手(除了一些 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 数组。