把“WCH-Interrupt-fast”去掉似乎就好了,但治標不治本...
您好,lto選項會將所有代碼生成特殊段,在鏈接時統(tǒng)一優(yōu)化,底層運行庫目前是沒有的,可能會引起錯誤,非必要,不建議開啟lto選項。
lto選項會大大降低代碼尺寸,我的項目都是默認打開的
我沒細看。但如果是 WCH-Interrupt-fast 的話,會不會是中斷沒配置好?
中斷嵌套8級,但硬件堆棧只有3層。
> lto選項會大大降低代碼尺寸,我的項目都是默認打開的
哈哈,我也是。-Os -flto
出問題程序里面只是在FreeRTOS例程的基礎上加了個基本的主任務和LED閃爍,整個程序里面的中斷也只有FreeRTOS例程里的3個中斷,正常情況下會觸發(fā)的只有Systick這一個,應該不是中斷嵌套層次的問題。
我懷疑是任務切換中那堆匯編代碼涉及到快速中斷部分的問題,我對這塊確實不太熟,希望官方開發(fā)人員可以花點時間處理一下這個問題。
-----------------------------------------
對于代碼封裝層次比較多的項目,開LTO后無論是執(zhí)行效率還是代碼尺寸都會有非常大的優(yōu)化,所以我還是傾向于打開LTO。