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.

TMS570LS3137: ARM Hercules (_TI_auto_init)

Part Number: TMS570LS3137


I am trying to understand the functionality of library files associated with __TI_auto_init (files present in rtssrc.zip). To start with, from auto_init.asm, control goes to icall32.asm (IND_CALL assembly routine) and after analyzing I found control always branches at an instruction BX r4 and never get into BNE ep_16 label. Can anyone help me to understand how I can access the instructions present under ep_16 label. What is the purpose of BNE ep_16 instructions? If anyone can suggest any design document from TI regarding these library files (in "\ti\ccsv5\tools\compiler\arm_5.0.4\lib\rtssrc.zip") it will be very helpful to me.

For your reference I am attaching the screenshot of CCS debugging window.

Thanks.

 

  • Hello Preetish,

    Your post will be moved to CCS and compiler E2E forums. You will get helpful information there. Thanks
  • IND_CALL is testing the LSB (least-significant bit) of the destination (R4) to determine whether the destination function is in ARM or Thumb mode. If it is in ARM mode, it just branches directly there with a BX R4 instruction. Otherwise, it adjusts for calling a Thumb function and then calls it.

    There is no design documentation. Just look at the source code in rtssrc.zip; it should be sufficient to explain how the compiler's default auto-init works.

    The 5.0 branch is pretty old (about 6 years), and is no long actively supported. You should consider moving to a more recent branch. We are currently at 18.1.1.LTS. The auto-init routine works much differently now.