1、 文檔目標
解決工程從Compiler 5切換到Compiler 6進行編譯時出現一些非語法問題上的報錯。
2、 問題場景
對于一些使用Compiler 5進行編譯的工程,要切換到Compiler 6進行編譯的時候,原本無任何報錯警告信息的工程在使用Compiler 6進行編譯后出現了一些非常規語法上的錯誤,報錯信息如下(如圖2-1):
error: A1167E: Invalid line start
error: A1159E: Label missing from line start
error A1137E: Unexpected characters at end of line
error: A1517E Unexpected operator equal to or equivalent to
error: A1150E: Area directive missing
圖2-1
3、軟硬件環境
1)、軟件版本:MDK 5.38a
2)、電腦環境:Windows 11
3)、外設硬件:無
4、解決方法
1)、因為在選擇Arm Compiler/Assembler 6時,將使用GNU語法的CMSIS 5.8.0匯編源文件(例如irq_armv7m.S)。由于大多數項目將有兩種格式的匯編源文件,即GNU (CMSIS)語法和armasm語法(例如啟動代碼),在uVision對話選項的Target -> Asm -> Assembler選項中選擇armasm (Arm Syntax) 這個選項,啟用的是ARM語法,那么對于GUN語法就會出現這樣的報錯信息。
2)、所以,想要將這樣的報錯進行解決,需要將Target -> Asm -> Assembler選項中選擇armclang (Auto Select) 這個選項(如圖4-2)。那么對于兩種格式的匯編源文件都會進行自動的識別。
圖4-2
3)、然后,去重新編譯對應的報錯就會消失了。(如圖4-3)
圖4-3