私は組み込みアプリケーションのプログラミングにはかなり新しい(Arduinoのもの以外にも)、私はTexas InstrumentsのCC3220SFマイクロコントローラを使って作業しています。配列に200kbのデータを保存していますか?
現在、私は常にデバイスをポーリングして結果を保存しているプログラムを持っています。私はこれらのサンプル(それぞれ2バイト)を100,000個保存して、200 KBのデータを保存したいと思います。私は実際にこのようなことをやっていかなくてはならないと思っています。サイズの配列[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;
}
この^^^方法は、小さな配列のために動作しますが、私は200キロバイト保存する必要が言ったように...私は最高の書き込み/それに読まないか、CC3220SFを使用するために512キロバイトを持って知っていますか?
謹んで、 -James
スタックの大きさによってスタックがオーバーフローする可能性があります。サイズがコンパイル時にわかっていても、ヒープ割り当てにはより安全です。 – CoryKramer
あなたのプラットフォームが動的メモリ割り当てをサポートしているなら、 'std :: vector> measurmentsArr {MAX_ARR_DEPTH};'を使うことをお勧めします。 –
NathanOliver
[datasheet](http://www.ti.com/product/CC3220/datasheet)は256kBのRAMしか要求していません。さらに、このプラットフォームでは、浮動小数点数は32ビット(それぞれ4バイト)で、400kBの配列サイズを生成します。 – doynax