2013-10-09 16 views
-3

我使用arm-none-eabi-gcc作爲ARM控制器(STM32)。 問題: 源代碼更改後,例如++ var;代碼不會運行。 如果我對同一個文件「var2 = var1;」做了一些修改然後代碼功能正確。小代碼更改之後的arm-none-eabi-gcc(++ i)軟件不運行

可執行代碼剛移入閃存。 堆棧,鏈接器,啓動??

非常感謝。

兩個MAP文件在這裏:

MAP ok

MAP bad

+1

你應該提供的代碼[SSCCE(http://sscce.org/)片段,而不是一大堆類似的東西 –

+0

(-1),但是我會清理構建工件,使一個乾淨的新版本。 – auselen

+0

完整的構建不起作用。它似乎是一個源代碼問題。 –

回答

0

發現問題。 如果編譯時沒有進行優化,軟件可以正常工作。 通過優化速度ON「-Os」 - 它不起作用。

解決方法是將一個變量聲明爲「volatile」。 但爲什麼編譯器有時優化它&有時不 - 我不知道。

相關問題