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.

CCS compilation warning for Cortex M0

Hi All,

I am working on TI based Cortex M0 micro-controller. CCS version under usage is 5.3.0.00090 & ARM compiler ARM 5.0.1. Selected -mv6M0 --code_state=16 --abi=eabi. Modified startup_ccs.c file as per Cortex M0 like only 32 external interrupts are supported in M0 etc. While compiling the simple code (main having while(1);), its giving following warning:

-------------------------------------------------------------------------------------                                                                                                                                                                                 <Linking>

warning #10366-D: automatic library build: using library

"C:\ti\ccsv5\tools\compiler\arm_5.0.1\lib\rtsv6M0_T_le_eabi.lib" for the

first time, so it must be built. This may take a few minutes.

Makefile:1406: *** multiple target patterns. Stop.

>> ERROR: mklib: gmake error during rtsv6M0_T_le_eabi.lib build

warning #10207-D: automatic RTS selection: resolving index library "libc.a" to

"C:\ti\ccsv5\tools\compiler\arm_5.0.1\lib\rtsv6M0_T_le_eabi.lib", but

"C:\ti\ccsv5\tools\compiler\arm_5.0.1\lib\rtsv6M0_T_le_eabi.lib" was not

found

warning #10062-D: entry-point symbol "_c_int00" undefined

warning #10202-D: no suitable entry-point found; setting to 0

'Finished building target: sample.out'

' '

Question: Does rtsv6M0_T_le_eabi.lib supported?

In my CCS installation path it is not present. Due to absence of  above library, "_c_int00" doesn't get link to it. _c_int00 is usually present in boot.c of the library. Though sample.out is created however it doesn't have _c_int00 linkage so it won't reach to main() function. In the absence of above library how to proceed further? I tried Run Time Support Library -> <None> option however same above warnings are seen. 

Tushar 

  • Tushar,

    It may be that one of the known issues documented in this wiki page is the reason for your error. Please check if you have Cygwin tools in your PATH or try setting your TEMP variable to something simple/short as these are some common issues that are known to cause problems during the library build process.

    I was able to build the rtsv6M0_T_le_eabi.lib, so to help you move along quicker, I have attached it here.

    0131.rtsv6M0_T_le_eabi.lib

     

     

  • Aarti,

    Thanks for sharing 0131.rtsv6M0_T_le_eabi.lib. I copied the library to appropriate path and problem is resolved.

    Tushar

     

  • Hi Aarti,

    I do have following two queries:

    1. Does floating point library available for Cortex M0 for floating point operation? Or is there any option available in CCS project setting to enable it?

    2. Cortex M0 supports a 32-bit hardware multiplier. This can be the standard single-cycle multiplier, or a 32-cycle multiplier that has a lower area and performance

    implementation. If user wants to enable standard single-cycle multiplier, how do we do it? I do not see any option in CCS project settings.

    Thanks,                                                                                                                                                                                                                                                                                    Tushar 

     

  • Cortex-M0 does not support floating point operations in hardware. The compiler provides software implementations of all floating point operations in the RTS library. You do not need to set any options to use them.

    There is no option to control the type of multiplier being used in the hardware. The compiler will use the multiply instruction when appropriate.

  • When compiler uses multiply instruction then what would be the processing time? Single cycle (fast single-cycle array) or 32 cycle iterative multiplier?

    Cortex M0 Technical user manual indicates following information:
    Configurable multiplier
    The MULS instruction provides a 32-bit x 32-bit multiply that yields the least-significant 32-bits. The processor can implement MULS  in one of two ways:
    >
    as a fast single-cycle array

    > as a 32-cycle iterative multiplier.

    Tushar

      

  • The compiler cannot effect if the MULS instruction is implemented as a 1 or 32 cycle instruction. That is a hardware decision. The compiler will use the instruction and it will take either 1 or 32 cycles depending on the hardware the code is executed on.

  • I am trying to enable system tick timer. To configure this I need to have ARM Cortex M0 supported register files i.e. register names with corresponding addresses.                  From where should I get it? I checked it in M0 supported rts library however it is not available. In StellariseWare, I could see hw_nvic.h. In other ARM devices, I think SYS/BIOS takes care of it and provide API for system tick timer configuration.

    Thanks,

    Tushar