在一个数组中存储 200kb 的数据?
Storing 200kb of data in an array?
我对嵌入式应用程序的编程很陌生(除了一些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 阵列。
相关文章:
- 将字符串存储在c++中的稳定内存中
- std::原子加载和存储都需要吗
- C++:将控制台输出存储在宏中更好吗
- 使用QProcess执行命令,并将结果存储在QStringList中
- 访问存储在向量C++中的结构的多态成员
- 如何从存储在std::映射中的std::集中删除元素
- 存储模板类型以强制转换回派生<T>
- 类型总是使用其大小存储在内存中吗
- 当字符串存储在变量中时,如何将字符串转换为wchar_t
- 使用无符号字符数组有效存储内存
- 如何在cpp.中使用协议缓冲区存储大缓冲区/数组(char/int)
- 使用 pqxx 将 std::vector 存储在 postgresql 中,并从数据库中检索它
- 带结构的二维矢量:如何存储元素
- 添加存储在向量中的大整数的函数出现问题
- 从文件中读取多个字节,并将它们存储在C++中进行比较
- 在std::vector上存储带有模板的类实例
- 谷歌测试中的期望值存储在哪里
- 为什么C中的通用链表中存储的数据已损坏
- 在c++中获取两个大int,并将它们存储在数组中
- 在一个数组中存储 200kb 的数据?