SPRUIY8 October   2024 F29H850TU , F29H859TU-Q1 , TMS320C28341 , TMS320C28342 , TMS320C28343 , TMS320C28343-Q1 , TMS320C28344 , TMS320C28345 , TMS320C28346 , TMS320C28346-Q1

 

  1.   1
  2.   Abstract
  3.   Trademarks
  4. 1Introduction
  5. 2C28 to C29 CPU Migration
    1. 2.1 Use Cases
    2. 2.2 Key Differences
    3. 2.3 Source Code Migration
      1. 2.3.1 C/C++ Source Code
        1. 2.3.1.1 Pragmas and Attributes
        2. 2.3.1.2 Macros
        3. 2.3.1.3 Intrinsics
        4. 2.3.1.4 Inline assembly
        5. 2.3.1.5 Keywords
        6. 2.3.1.6 Data Type Differences
        7. 2.3.1.7 Tooling support for Migration
      2. 2.3.2 Assembly Language Source Code
    4. 2.4 Toolchain Migration
      1. 2.4.1 Compiler
      2. 2.4.2 Linker
      3. 2.4.3 CCS Project Migration
  6. 3CLA to C29 CPU Migration
    1. 3.1 Use Cases
    2. 3.2 Key Differences
    3. 3.3 Source Code Migration
      1. 3.3.1 C/C++ Source Code
        1. 3.3.1.1 Data Type Differences
        2. 3.3.1.2 Migrating CLAmath.h Functions and Intrinsics
        3. 3.3.1.3 Migrating C28 and CLA to the Same C29 CPU
        4. 3.3.1.4 Migrating C28 and CLA to Different C29 CPUs
      2. 3.3.2 Assembly Language Source Code
    4. 3.4 Toolchain Migration
  7. 4References

Compiler

The C28 compiler and C29 compiler use different underlying infrastructures and completely different source bases.

  • The C28 compiler is TI proprietary, whereas the C29 compiler is LLVM-clang-based. Compiler options are completely different, and need to be changed. Many concepts behind the meaning of options have changed as well, such as for optimization. The C29 Clang Compiler Tools User's' Guide is available here. It has a detailed section on migration, available here.
  • The C29 compiler supports only EABI output formats, whereas, the C28 compiler supports both COFF and EABI. A user migrating from C28-COFF to C29 should first migrate from COFF to EABI, and can refer to documentation available here.
Note: The C29 CPU is a VLIW architecture and allows for significantly higher level of parallelism compared to C28 and CLA. However, for the C29 compiler to fully take advantage of these parallel functional units in the C29, users have to use higher levels of optimization (e.g. -o2, -o3).