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.

TMS320F28388D: Operations of the initialization copy_table and clear_table

Part Number: TMS320F28388D

Tool/software:

Hi Experts,

Would like to ask the concern below:

Currently, I'm trying to find out where the copy_table and clear_table are implemented during the initialization of TI's MCU. So far, I've found the following content in the map file of the example project.

Here, based on the explanation, I think the initialization of TI's MCU is implemented in the cinit initialization table. According to the official manual, the content of the cinit initialization table consists of the length, address, and data information of the corresponding variables. That is, it should be implemented in (.cinit..data.load) and (.cinit..bss.load). However, when I searched for the specific content in the hex file generated by compilation, I didn't find the expected data at the corresponding addresses.

My questions are:
1.Are the operations of the initialization copy_table and clear_table (i.e., the initialization processing of .data and .bss) carried out in cinit?
2.What is the specific content in cinit? According to the manual, it should be in the order of data length, data address, and specific data. But the data at the corresponding addresses of cinit in the actual hex file is obviously not like this.

As shown in the following figure:

Thank you.

Regards,
Archie A.

  • Part Number: TMS320F28388D

    Tool/software:

  • An application binary interface (ABI) specifies many details that must be observed in order to build and link separately compiled object files and libraries.  The C28x compiler toolchain supports two different ABIs.  The older one is named COFF ABI.  The newer one is named EABI.  Among the details specified by an ABI is how global and static variables are initialized.  COFF ABI and EABI handle variable initialization very differently.  Multiple pages in the C28x compiler manual describe it for both ABIs.  As you read through, please keep track of which ABI is being described. 

    I can tell from the linker map file screenshot that you use EABI.  Thus, ignore the sub-chapter titled Automatic Initialization of Variables for COFF, and all of its sub-parts.  Pay close attention to the sub-chapter titled Automatic Initialization of Variables for EABI, and all of its sub-parts.  For even more background and detail, please search the TMS320C28x Embedded Application Binary Interface (EABI) Application Report for the chapter titled Copy Tables and Variable Initialization.

    Thanks and regards,

    -George