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.

[参考译文] MSP432P401R:EABI功能

Guru**** 2591820 points


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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/635349/msp432p401r-eabi-functions

部件号:MSP432P401R

您好,

我不确定我是否理解这些EABI函数,但我得出结论,当我使用双精度 操作数(例如乘法)时,编译器在编译过程中会发现我使用的是双操作数乘法并将其存储在内存中的某个位置。 我在相关的ASM文件(例如 FD_MUL_T2.asm文件)中看到,他们有一些在我看来是link命令的内容。 例如:

如果__TI_EABI_汇 编器 ;根据指定外部名称
.ASG __aeabi_dmul,__TI_FD$MUL;正在构建RTS
否则
	.clink
ASGFD F$MUL,__TI_FD MUL
endif

	.global	__TI_FD$MUL

是否可以使用.cmd文件将此函数存储在内存中的给定地址上,或者这些文件中的链接命令是否告诉编译器将给定函数放置在何处?

我的问题是,我有一个项目在其中创建函数(在本例中为a *b,其中a和b为double),然后我获取该函数的十六进制数据, 并使用RF将其发送 给下载该函数并在需要时使用该函数的某个设备。 现在,双乘函数不是存储在同一个内存中,我的程序跳转到错误的地址(在我的例子中,是一些IQmath函数)。 另外,如果给定项目仅使用整数和IQ库,那么在下载此函数并使用双乘操作数之前,我甚至不确定是否在其他项目编译器上输入了任何双精度函数?

对不起,如果我使用了错误的术语(例如双乘操作数),我不知道如何解释我的问题:D

此致,

Ugljesa Popovic。

 

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

    好的,所以我意外地看到了这个:
    /*以下命令行选项作为CCS项目的一部分进行设置。 */
    /*如果您使用命令行进行构建,或出于某种原因希望*/
    /*在此处定义它们,您可以根据需要取消注释和修改这些行*/
    /*如果您使用CCS进行构建,最好制作任何这样的*/
    /*在CCS项目中进行修改,并将此文件保留为单独文件。 */
    /**/
    /*当您计划使用printf()*/时,建议使用1024字节的堆大小
    /*用于控制台窗口的调试输出。 */
    /**/
    /*--heap_size=1024 */
    /*--stack_size=512 */
    /*--library=rtsv7M4_T_le_eabi.lib */

    在.cmd文件中:d. 当我取消注释--library=rtsv7M4_T_le_eabi.lib并写入时
    EABI_liberary{
    rtsv7M4_T_le_eabi.lib(.text)
    }> 0x0.1万
    编译器将函数推入所需的地址,这样就解决了我原来的问题,但现在我遇到了一些警告和错误...

    第一个错误:文件“C:16.9 .3.LTS/lib/rtsv7M4_T_le_eabi.lib<boot.obj>”的Tag_ABI_VFP_args属性值为“0”,与以前看到的值(“1”)不同;合并不兼容的文件C/C++文件问题

    和警告:
    1.说明资源路径位置类型#1.0204万-D无法将索引库"IQmathLib.a"解析为兼容的库函数C/C++问题
    2.说明资源路径位置类型#1.0204万-D无法将索引库"QmathLib.a"解析为兼容的库函数C/C++问题

    这是什么? :D


    此致,

    Ugljesa Popovic。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Ugljesa
    我要将此信息转发给我们的编译器团队,他们将能够针对此行为提供更好的答案。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    好的,他们可以专注于错误,我已将链接器文件搜索路径IQmathLib.a(QmathLib.a)更改为IQmathLib_CCS_MSP432.lib(QmathLib_CCS_MSP432.lib),现在我不再有这两个警告...
    当我编译今天的代码时,我遇到了两个类似的错误:

    文件"C:/ti/ccsv7/tools/compiler/ti-CGT-arm_CBIN.3.LTS/lib/rtsv7M4_t_le_eabi.lib<memcpy_T2.obj>" 16.9 的Tag_ABI_VFP_args属性值为"0",与以前看到的("1")不同;合并不兼容的文件C/C++文件时出现问题


    文件"C:/ti/ccsv7/tools/compiler/ti-CGT-arm_ACT.3.LTS/lib/rtsv7M4_T_le_eabi.lib<memset_t2.obj>" 16.9 具有Tag_ABI_VFP_args属性值"0",该值与以前看到的值("1")不同;合并不兼容的文件C/C++文件问题

    我应该注意,我的项目中有boot.h和boot.c文件... 如果这可能会导致前面评论中的第一个问题,请不要现在进行。
    文件"C:/ti/ccsv7/tools/compiler/ti-CGT-arm_ARM.3.LTS/lib/rtsv7M4_t_le_eabi.lib<boot.obj>" 16.9 具有Tag_ABI_VFP_args属性值"0",该值与以前看到的文件("1")不同;合并不兼容的文件C/C++问题

    另外,在一个项目中,我没有这个错误(项目有一个函数,所以它很小),所以错误必须来自另一个更大的项目,但导致这个错误的原因是什么? :D

    此致。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我将关闭此线程。 阅读其他类似的线程,我得出结论,问题是什么,可能的解决方案是什么。
    此致。