自分でメークファイルを作成します。 私はプログラムから奇妙な結果を得るので、簡単な変数(テスト)を挿入するだけです。 私はなぜテストではない= 100 ?????? それはどのような状況で起こりますか?.bssで変数を正しく設定してinitにする方法。値= 0
これはgdbの
74 __CRC_CLK_ENABLE();
(gdb) step
182 test = 100;
(gdb) p test
$1 = 236 '\354'
で結果ショーです私は、Linux上で実行しています。これは、コマンドラインを使用し、私自身のMakefileを作るのは初めてです。 私はstm32プロジェクトに取り組んでいます。 私の問題は次のとおりです: 1)私はいくつかの変数とinitを0にしていますが、それは.bssセクションに入りますが、一度デバッグしてゼロにならないことがわかります そして、 .dataセクションに入り、一度それをステップすると0以外の値になる。 2)gdbを使用してプログラムを起動すると、main()に陥るのはなぜですか?ここで
_sidata = .;
.data : /* LMA address is _sidata (in FLASH) */
{
. = ALIGN(4);
_sdata = .; /* data section VMA address */
*(.data*)
. = ALIGN(4);
_edata = .;
} >ram
/* Uninitialized data section (zeroed out by startup code) */
.bss :
{
. = ALIGN(4);
_sbss = .;
*(.bss*)
*(COMMON)
. = ALIGN(4);
_ebss = .;
} >ram AT >flash