This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] EK-TM4C123GXL:使用 Linux 上的命令行编译应用程序、并使用 Uniflash 在微控制器上刷写应用程序

Guru**** 2331900 points
Other Parts Discussed in Thread: UNIFLASH
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/596329/ek-tm4c123gxl-compiling-an-application-with-the-command-line-on-linux-and-flash-it-on-the-microcontroller-with-uniflash

器件型号:EK-TM4C123GXL
主题中讨论的其他器件:UNIFLASH

您好!

我将使用 Makefile 将应用程序编译为*。elf 文件。 然后、我想使用 Uniflash 在微控制器上刷写此*。elf 文件。

我始终会收到此错误:"[ERROR] Cortex_M4_0:文件加载器:验证失败:0x00008000处的值不匹配请验证目标存储器和存储器映射。"

我的编译器来自 Impilas、并且都在 Linux 上运行。 但我要在 Windows 上刷写微控制器。

我的 makefile 文件如下所示:

IMPERAS_HOME =$(shell getpath.exe“$(IMPERAS_HOME)”)


优化=-O2

cross = MICROBLAZE
SRC = main.cpp Timer/Timer.cpp 传感器/ADC.cpp 传感器/ADCSensor.cpp 传感器/GPIOSensor.cpp Segway/Segway.cpp 配置/Configuration.cpp Antrieb/Motor.cpp Antrieb/PWM.cpp
SRCINC = microblaze_io.c microblaze/microblaze_enable_interrupts.s microblaze/microblaze_interrupts.c microblaze/microblaze_interrupts_gb 微 blaze_0/libsrc/Con_v1_00_a/src/xbasic_types.c

INCOBJ =$(patsubst %.c、%.o、$(SRCINC))
obj =$(patsubst %.cpp、%.o、$(SRC))
exe = Segway_microblaze.elf

-include $(IMPERAS_HOME)/lib/$(IMPERAS_ARCH)/CrossCompiler/$(cross).makefile.include
ifeq ($($(cross)_CC)、)
IMPERAS_ERROR:=$(错误:$(cross)_CC 未设置。 请检查$(cross)"的工具链安装
字节序

IMPERAS_CC =/opt/Imperas.20131018/lib/Linux32/CrossCompiler/microblaze-elf/bin/mb-g +-fstack-check -i -I/OVP//ImpPublic/include/common -I/OVP//ImpPublic/include/target/common -I/OVP//ImpPublic/include/target/application -I/OVP//lib/Linux32/TargetLibraries/include/microblaze
IMPERAS_LINK =/opt/Imperas.20131018/lib/Linux32/CrossCompiler/microblaze-elf/bin/mb-g +-fstack-check -i -I/OVP//ImpPublic/include/common -I/OVP//ImpPublic/include/target/common -I/OVP//ImpPublic/include/target/application -I/OVP//lib/Linux32/TargetLibraries/include/microblaze -L/OVP//lib/Linux32/TargetLibraries/microblaze-elf
IMPERAS_LDFLAGS =-L -lm -fstack-check -i. -wl、-defsym、_stack_size=0x10000 -wl、-defsym、_heap_size=0x4000000 -limperas


#-limperas flag mus raus wenn die 包括 nicht eingebunden werden

全部:$(EXE)


%.elf:$(obj)$(inCOBJ)
@ echo "#linking $(cross)$@"
$(IMPERAS_LINK)-o $@$^$(IMPERAS_LDFLAGS)

%.o:%.cpp
@ echo "#Compiling $(cross)$<"
$(IMPERAS_CC)-c -o $@$<-D$(交叉)$(优化)

%.o:%.c
@ echo "#Compiling $(cross)$<"
$($(cross)_CC)-c -o $@$<-D$(cross)$(优化)

清理:
rm -rf *。elf *。o

 

 


我是否必须告诉编译器*。elf 文件必须与描述的 DIE *。cmd 文件中的文件类似?

是否有人知道我的问题的答案、并能为我提供帮助。

如果您需要任何其他信息或更多信息、请告诉我。

此致、

Johannes