由於 Altera SOS EDS 版本 13.0 和 13.1 中出現問題,因此缺少建立非半代管應用程式所需的組裝程式碼。
若要解決此問題,請按照下列步驟下載所需的組裝程式檔案,然後更新連結器腳本以停用半主機。
根據 SOC EDS 13.0Sp1 的 Altera-SoCFPGA-HardwareLib-GNU.tar.gz 範例,Makefile 和 Linker 腳本可從以下連結下載: ExampleFiles_nonSemiHosted.zip (Altera-socfpga.ld,Makefile,reset.s)
使用Altera範例作為範本啟用非半託管應用程式的步驟
- 下載 reset.o:ExampleFiles_nonSemiHosted.zip
- 複製 / 備份您現有的Altera連結器腳本 Altera-socfpga-hosted.ld
- 變更編譯旗標
之前:-lcs3hosted
後:-lcs3unhosted: GROUP(-lgcc -lc -lcs3 -lcs3unhosted -lcs3arm)
- 請注釋或移除下列代碼區段:
/* Enable arm semihosting */
EXTERN(__auto_semihosting) /* force exit to be picked up in a hosted or os environment */
EXTERN (exit atexit) - 從步驟 2-4 更新 Makefile 以編譯 Reset.o 並指向更新的連結器腳本
#Assembler Flags
AFLAGS := -g -O0 -mfloat-abi=soft -march=armv7-a -mtune=cortex-a9 -mcpu=cortex-a9 -x assembler
#Assembler source files
A_SRC := reset.s
#Original Linker script
#LINKER_SCRIPT := altera-socfpga_hosted.ld
#Link to updated linker script for non-semihosted
LINKER_SCRIPT := altera-socfpga.ld
#Clause to compile reset.o
reset.o:
-c reset.s -o reset.o
#Updated linker line to add dependency for reset.o
: reset.o
-T reset.o -o
-d > .objdump
> .map
注意:編輯 Makefiles 時,確保遵循正確的標籤與空間規則
此問題從 SOC EDS 版本 14.0 開始修復