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.

There is no prefix dollars in the compiler v5.2.2

n previous compile, there are  two type of symbols, one start with underscore(_) that represents 32bits code or variables;  the other start with dollars($) that represent 16bit code.

But from map file generated from the new compiler, all of the symbols only with underscore, but without any $. Could you please tell me the reason?

Map file:

00000060  _init_dpwm0                        

000000f4  _init_dpwm1                        

00000178  _init_dpwm2                        

000001e4  _init_dpwm3  

  • Jack Tan26 said:
    two type of symbols, one start with underscore(_) that represents 32bits code or variables;  the other start with dollars($) that represent 16bit code

    This is what you see when you use the original ABI (application binary interface) of the TI ARM compiler called "tiabi".  The tiabi ABI is not supported in version 5.2.x of the compiler.  The last compiler version to support tiabi ABI is 5.1.x.  At this time, the latest release in the 5.1.x release stream is version 5.1.10.  If you really need to use tiabi, then I recommend you change to version 5.1.10.

    Thanks and regards,

    -George

  • Hi George,

    Thanks for your reply.

    Could you please tell me how to implement the compiler to code composer studio? I found that there is only 5.2.2 compiler in my CCS6.1.

    Regards,
    Jack
  • Select Help -> Install New Software.  Set Work with to Code Generation Tools Updates.  Be sure Show only the latest versions ... is not checked.  Expand TI Compiler Updates.  You'll see version 5.1.10 there.

    Thanks and regards,

    -George

  • Hi George,

    Thanks for your reply. I found that the compiler 5.1.10 still can't support tiabi, there is no dollars($) prefix for thumb subroutine. 

    If I want to call a thumb routine in arm mode, ARM should change to thumb state while executing thumb code. But if the new compiler does only support underscore for both arm and thumb subroutine, how does CPU know when to change to ARM state, and when to change to thumb state?  Will the compiler generate a necessary code that support cross-mode? 

    Thanks and Regards,

    Jack

  • The LSB of the address in the call instruction indicates whether the called function is thumb state.