ARM用のCodeSourcery GCC 4.5.2を使用して、STM32用のCでコードを書いています。グローバル構造の初期化で問題に直面しています。コードを以下に示します。
struct.h で
typedef struct
{
int foo;
...
int bar;
} mystruct;
extern mystruct example;
struct.c で
mystruct example = {100,200 ..., 1000};
Main.c で
#include "struct.h"
int temp;
temp = example.foo;
コードは問題なくコンパイルされます。しかし、デバッグ中に、構造がすべてのガベージ値で初期化されていることがわかりました!! temp の値は 100 である必要がありますが、常にガベージ値であることが判明します。PC で eclipse + openOCD + GDB ハードウェア デバッグを使用し、ハードウェア側で Olimex JTAG を使用しています。
これはコンパイラの問題ですか?それとも、ここで何か不足していますか?