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 functions

Part Number: MSP432P401R

Hello,

I'am not sure If I understand these EABI functions, but I have come to conclusion that when I'am using double precision  operands (for example multiply), compiler in the process of compiling sees that I'am using double multiply operand and stores it somewhere in memory. I've seen in related asm files (for example fd_mul_t2.asm file) that they have some, what seems to me link commands. For example:


        .if __TI_EABI_ASSEMBLER         ; ASSIGN EXTERNAL NAMES BASED ON
        .asg __aeabi_dmul, __TI_FD$MUL  ; RTS BEING BUILT
        .else
	.clink
        .asg FD$MUL, __TI_FD$MUL
        .endif

	.global	__TI_FD$MUL

Can I use .cmd file to store this functions on given address in memory or are those link commands in those files telling compiler where to put given function?

My problem is that I have one project where I make function (in this example a*b where a and b are double) and then I take hex data of that function and send it, with RF, to some device that downloads that function and uses it when needed. Now, that double multiply function is not stored in same memory and my program jumps on wrong address (in my case on some IQmath functions). Also I'am not even sure if on this other project compiler putted any double functions given that project only uses integers and IQ library before downloading this function with double multiply operand?

I'am sorry if I used wrong terminology (double multiply operand for example) I don't know how else to explain my problem :D

Regards,

Ugljesa Popovic.

 

  • Ok, So I accidentally saw this :
    /* The following command line options are set as part of the CCS project. */
    /* If you are building using the command line, or for some reason want to */
    /* define them here, you can uncomment and modify these lines as needed */
    /* If you are using CCS for building, it is probably better to make any such */
    /* modifications in your CCS project and leave this file alone. */
    /* */
    /* A heap size of 1024 bytes is recommended when you plan to use printf() */
    /* for debug output to the console window. */
    /* */
    /* --heap_size=1024 */
    /* --stack_size=512 */
    /*--library=rtsv7M4_T_le_eabi.lib */

    in .cmd file :D. When I uncommented --library=rtsv7M4_T_le_eabi.lib and wrote
    EABI_LIBERARY{
    rtsv7M4_T_le_eabi.lib(.text)
    } > 0x0001000
    compiler putted function on desired address, so that solved my original problem but now I have some warnings and errors....

    first error: file "C:/ti/ccsv7/tools/compiler/ti-cgt-arm_16.9.3.LTS/lib/rtsv7M4_T_le_eabi.lib<boot.obj>" has a Tag_ABI_VFP_args attribute value of "0" that is different than one previously seen ("1"); combining incompatible files file C/C++ Problem

    and warnings:
    1. Description Resource Path Location Type #10204-D could not resolve index library "IQmathLib.a" to a compatible library function C/C++ Problem
    2. Description Resource Path Location Type #10204-D could not resolve index library "QmathLib.a" to a compatible library function C/C++ Problem

    So what's this ? :D


    Regards,

    Ugljesa Popovic.

  • Ugljesa,
    I'm forwarding this to our compiler team, who will be able to provide a better answer on this behavior.
  • Ok, they can concentrate on Errors, I have changed in linker file search path IQmathLib.a(QmathLib.a) to IQmathLib_CCS_MSP432.lib(QmathLib_CCS_MSP432.lib) so now I don't have this two warnings anymore...
    When I compiled today code, I have gotten two similar errors:

    file "C:/ti/ccsv7/tools/compiler/ti-cgt-arm_16.9.3.LTS/lib/rtsv7M4_T_le_eabi.lib<memcpy_t2.obj>" has a Tag_ABI_VFP_args attribute value of "0" that is different than one previously seen ("1"); combining incompatible files file C/C++ Problem

    and
    file "C:/ti/ccsv7/tools/compiler/ti-cgt-arm_16.9.3.LTS/lib/rtsv7M4_T_le_eabi.lib<memset_t2.obj>" has a Tag_ABI_VFP_args attribute value of "0" that is different than one previously seen ("1"); combining incompatible files file C/C++ Problem

    I should note that I have in my project boot.h and boot.c files... Don't now if that can cause problems for that first one in previous comment..
    file "C:/ti/ccsv7/tools/compiler/ti-cgt-arm_16.9.3.LTS/lib/rtsv7M4_T_le_eabi.lib<boot.obj>" has a Tag_ABI_VFP_args attribute value of "0" that is different than one previously seen ("1"); combining incompatible files file C/C++ Problem

    Also, in one project I don't have this errors (project has one function so its pretty small), so error must come from this other bigger project, but what can cause this error would be the question ? :D

    Regards.

  • I'll close this thread. Reading other similar threads I've come to conclusion what is the problem and what are possible solutions.
    Regards.

**Attention** This is a public forum