SPRUJ07 august   2023 TMS320F28075 , TMS320F28075-Q1 , TMS320F28076 , TMS320F28374D , TMS320F28374S , TMS320F28375D , TMS320F28375S , TMS320F28375S-Q1 , TMS320F28376D , TMS320F28376S , TMS320F28377D , TMS320F28377D-EP , TMS320F28377D-Q1 , TMS320F28377S , TMS320F28377S-Q1 , TMS320F28378D , TMS320F28378S , TMS320F28379D , TMS320F28379D-Q1 , TMS320F28379S , TMS320F28P650DH , TMS320F28P650DK , TMS320F28P650SH , TMS320F28P650SK , TMS320F28P659DH-Q1 , TMS320F28P659DK-Q1 , TMS320F28P659SH-Q1

 

  1.   1
  2.   Abstract
  3.   Trademarks
  4. 1Feature Differences Between F2837x and F28P65x
    1. 1.1 F2837x and F28P65x Feature Comparison
  5. 2PCB Hardware Changes
    1. 2.1 PCB Hardware Changes for the 176-Pin PTP and 100-Pin PZP Package
    2. 2.2 Use of Existing 176-Pin F2837x PCB Design
      1.      9
      2. 2.2.1 JTAG TRSTn No-Connect
      3. 2.2.2 GPIO Input Buffer Control Register
      4. 2.2.3 176-Pin GPIO Pin/Multiplex and ADCD Considerations
        1. 2.2.3.1 176-Pin PTP Pins with Different GPIO Assignment
        2. 2.2.3.2 ADCD Channel Migration
    3. 2.3 176-Pin PTP New PCB Design
    4. 2.4 100-Pin PZP New PCB Design
    5. 2.5 337-BGA ZWT Application to 256-BGA ZEJ or 169-BGA NMR
  6. 3Feature Differences for System Consideration
    1. 3.1 New Features in F28P65x
      1. 3.1.1 Lock-step Compare Module (LCM)
      2. 3.1.2 Expanded Analog Channels
      3. 3.1.3 Firmware Update (FWU)
      4. 3.1.4 Flexible GPIO and Digital Input Pins
      5. 3.1.5 ADC Hardware Redundancy Safety Checker
      6. 3.1.6 Flexible Memory Sharing between CPU Subsystems
      7. 3.1.7 Increased RAM Program Memory on CLA
    2. 3.2 Communication Module Changes
    3. 3.3 Control Module Changes
    4. 3.4 Analog Module Differences
    5. 3.5 Other Device Changes
      1. 3.5.1 PIE Channel Mapping
        1. 3.5.1.1 F2837x vs F28P65x PIE Channel Mapping Comparison
      2. 3.5.2 Bootrom
      3. 3.5.3 AGPIO Filter
    6. 3.6 Power Management
      1. 3.6.1 VREGENZ
      2. 3.6.2 POR/BOR
      3. 3.6.3 Power Consumption
    7. 3.7 Memory Module Changes
    8. 3.8 GPIO Multiplexing Changes
      1. 3.8.1 F2837x vs F28P65x GPIO Mux Comparison
    9. 3.9 Analog Multiplexing Changes
      1. 3.9.1 F2837x_176PTP vs F28P65x_176PTP Analog Connections Comparison
  7. 4Application Code Migration From F2837x to F28P65x
    1. 4.1 C2000Ware Header Files
    2. 4.2 Linker Command Files
    3. 4.3 C2000Ware Examples
  8. 5EABI Support
    1. 5.1 NoINIT Struct Fix (Linker Command)
    2. 5.2 Pre-Compiled Libraries
  9.   References

EABI Support

In the past, F2837x applications have always supported the Common Object File Format (COFF) binary executable output. COFF has several limitations. One of which is that the symbolic debugging information is not capable of supporting C/C++. There is also a limit on the maximum number of sections and length of section names and source files, among other things. COFF is also not an industry standard. For these reasons, C2000 is now migrating to Embedded Application Binary Interface (EABI) format. EABI and COFF are incompatible and conversion between the two formats is not possible. This section provides summary of COFF and EABI differences and useful links that provide more guidelines in migrating applications from COFF to EABI.

  • EABI key differences with COFF:
    • Direct initialization
      • Uninitialized data is zero by default in EABI.
      • Initialization of RW data is accomplished via linker-generated compressed copy tables in EABI.
    • C++ language support
      • C++ inline function semantics: In COFF, inline functions are treated as static inline and this causes issues for functions that cannot be inlined or have static data. In EABI, inline functions without the ‘static’ qualifier have external linkage.
      • Better template instantiation: COFF uses a method called late template instantiation and EABI uses early template instantiation. Late template instantiation can run into issues with library code and can result in long link times. Early instantiation uses ELF COMDAT to guarantee templates are always instantiated properly and at most one version of each instantiation is present in the final executable.
      • Table-Driven Exception Handling (TDEH): Almost zero impact on code performance as opposed to COFF which uses setjmp/longjmp to implement C++ exceptions Features enabled by EABI.
    • Features enabled by EABI
      • Location attribute: Specify the run-time address of a symbol in C-source code.
      • Noinit/persistent attribute: Specify if a symbol should not be initialized during C auto initialization.
      • Weak attribute: Weak symbol definitions are pre-empted by strong definitions. Weak symbol references are not required to be resolved at link time. Unresolved weak symbols resolve to 0.
      • External aliases: In COFF, the compiler will make A an alias to B if all calls to A can be replaced with B. A and B must be defined in the same file. In EABI, the compiler will make A an alias to B even if B is external.
    • Calling convention
      • Scalar calling convention is identical between COFF and EABI
      • Struct calling convention (EABI)
        • Single field structs are passed/returned by value corresponding to the underlying scalar types.
        • For FPU32, homogenous float structs with size less than 128 bits will be passed by value.
        • Passed in R0H-R3H, then by value on the stack.
        • Structs that are passed by value are also candidates for register allocation.
        • For FPU64, the same applies for 64-bit doubles(R0-R3).
    • Double memory size
      • In EABI, double is 64-bit size while in COFF, double is still represented as 32-bit size.
      • C/C++ requires that double be able to represent integer types with at least 10 decimal digits, which effectively requires 64-bit double precision.
  • Sections overview:

    Table 5-1 summarizes the section names for COFF and EABI. These are compiler-generated sections.

    Table 5-1 Section Names
    DescriptionCOFFEABI
    Read-Only Sections
    Const data.econst.const
    Const data above 22-bits.farconst.farconst
    Code.text.text
    Pre-main constructors.pinit.init_array
    Exception handlingN/A.c28xabi.exidx/.c28xabi.extab
    Read-Write Sections
    Uninitialized data.ebss.bss
    Initialized dataN/A.data
    Uninitialized data above 22-bits.farbss.farbss
    Initialized data above 22-bitsN/A.fardata
    Heap.esysmem.sysmem
    Stack.stack.stack
    CIO Buffer.cio.bss:cio
  • Resources:
    For more information regarding EABI and the migration process, see the resources on the links below: