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.

[参考译文] Linux/TM4C123GH6PM:在 Linux 上编译矢量表时遇到问题

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/604227/linux-tm4c123gh6pm-trouble-compiling-the-vector-table-on-linux

器件型号:TM4C123GH6PM

工具/软件:Linux

您好!

在 Linux 上编译项目时遇到一些问题。 我使用的是 Impilas Open Virtual Platform (ovpworld.org)、我将使用 makefile 对其进行编译。

makefile:

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

IMPERAS_HOME =$(shell getpath.exe“$(IMPERAS_HOME)”)
包括$(IMPERAS_HOME)/bin/Makefile.include

ifndef IMPERAS_HOME
 IMPERAS_ERROR:=$(错误"IMPERAS_HOME NOT defined")
字节序

cross=arm_Cortex_M4F

-include $(IMPERAS_HOME)/lib/$(IMPERAS_ARCH)/CrossCompiler/$(cross).makefile.include
ifeq ($($(cross)_CXX)、)
   IMPERAS_ERROR:=$(错误"请安装工具链以支持$(cross)")
字节序

优化?=-O2

src =$(sort $(wildcard main.cpp)) $(sort $(wildcard Configuration/Configuration.cpp)$(sort $(wildcgade/simulation.ebp)$(sort $(wildcard Sensor/adwildcp))$(staldcard Sensor/adwildcp Sensor.cp)$(sort $ (wildcard Sensor/adwildcp))(staldcard Timer (wildcp)$(wildcp (staldcard Sensor/taldcp)))$(staldcp (wildcp (wildcp (staldcp)))/tatildcp (wildcp (wildcp)



exe = application.arm_Cortex_M4F.elf


全部:$(EXE)


%.elf:main.o Segway/Segway.o 计时器/计时器.o 传感器/ADCsensor.o 传感器/GPIOSensor.o 配置/配置.o Antrieb/Motor.o Antrieb/PWM.o tm4c123gh6m_startup_ccs.o
   $(V)$(IMPERAS_LINKXX) -o $@$^$(IMPERAS_LDFLAGS)


标准基准测试代码的#编译
%.o:%.cpp
   $(V) echo "#Compiling $<"
   $(V) $(IMPERAS_CXX)-g -c -o $@$<$(优化)

%.o:%.c
   $(V) echo "#Compiling $<"
   $(V) $(IMPERAS_CC)-g -c -o $@$<$(优化)


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

干净:干净
   -rm -f *。log

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

因此、我的编译器和链接器来自 Impinas、但我认为它们不是问题所在。

编译中断矢量表(tm4c123gh6m_startup_ccs.c)时、汇编器代码出错。

是否有人知道如何正确编译它?

是否有用于在 Linux 上编译工程的示例 makefile 文件?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您不会提到您遇到的错误。 这是一个相当重要的细节。

    但是、存在一些明显的问题。 startups 通常是特定于编译器的。 内联汇编器也特定于编译器。 为 TI 编译器使用启动不太可能成功。

    Robert
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我现在正在使用此文件:tm4c123gh6m_startup_ccs_gcc.c
    我会遇到以下错误:
    tm4c123gh6m_startup_ccs_gcc.o:在函数中`ResetISR':
    /home/gensheimer/web/tivseg-sim/tivsegsim_template/Application_Segway/tm4c123gh6pm_startup_ccs_gcc.c:297:未定义`_data_load_'的引用
    /home/gensheimer/web/tivseg-sim/tivsegsim_template/Application_Segway/tm4c123gh6pm_startup_ccs_gcc.c:297:未定义`_data_start__'的引用
    /home/gensheimer/web/tivseg-sim/tivsegsim_template/Application_Segway/tm4c123gh6pm_startup_ccs_gcc.c:297:未定义对`_data_end_'的引用
    collect2:错误:LD 返回1退出状态

    那么、我的编译器应该已经使用了一个启动文件?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用 user="Johannes Gensheimer">我遇到以下错误:
    tm4c123gh6m_startup_ccs_gcc.o:在函数中`ResetISR':
    /home/gensheimer/web/tivseg-sim/tivsegsim_template/Application_Segway/tm4c123gh6pm_startup_ccs_gcc.c:297:未定义`_data_load_'的引用
    /home/gensheimer/web/tivseg-sim/tivsegsim_template/Application_Segway/tm4c123gh6pm_startup_ccs_gcc.c:297:未定义`_data_start__'的引用
    /home/gensheimer/web/tivseg-sim/tivsegsim_template/Application_Segway/tm4c123gh6pm_startup_ccs_gcc.c:297:未定义对`_data_end_'的引用
    collect2:错误:LD 返回1退出状态
    [/报价]

    这些是链路错误。

    [引用 user="Johannes Gensheimer"]因此,我的编译器应该已经使用了一个启动文件?

    我对您的编译器一无所知。 我不知道它是否附带适当的初创公司。 它看起来可能是 GCC、但我无法确定。 当然、TI 不支持它。 除非编译器提供程序提供支持、否则您可能必须自行确定。 如果您的编译器实际上是 GCC、那么这里的一些编译器具有一些经验。 我曾在 GCC 工作过、但这太早了、我无法记住很多内容。

    Robert

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用 user="Johannes Gensheimer"]在 Linux 上编译项目时遇到一些问题[/quot]

    正如海报罗伯特所说的-你已经"通过这个选择让自己远离畜群。"    而且、尤其是在开始新设计时、 "畜群成员"的舒适和指导具有很高的价值。

    如果你"放松你的规则"-并使用一个 Windows 盒子(然而只是简单的)-我怀疑"如果你想要继续-"无畜群"的话、"可以学到很多东西-然后建模"。