TMS320F28388D: Importing TMS320F2812 DSP code into TMS320F388D

Part Number: TMS320F28388D
Other Parts Discussed in Thread: TMS320F2812, , C2000WARE

Dear Team,

I am working on a product upgradation project where in the existing product is already developed on TMS320F2812 DSP for a Railway power electronics converter. Now we want to upgrade our prodcut with latest DSP platform i.e TMS320F28388D. So we want to save time on software development and coding process. So I would like to import code written in 2812 DSP into 388D DSP.

Considering fixed point, floating point, IQ math, DSP specific registers, Math libraries differences in both DSP, what care must be taken for faster development and debug free code importing and make efficient code. 

 

Please suggest.

 

Thanks,

Vemula.

  • Hi Vemula,

    Migrating from the TMS320F2812 to the TMS320F28388D is a significant upgrade, as you are moving from a legacy architecture to a modern, multi-core platform with significantly different peripheral and memory architectures. Because the F28388D is so different, a direct "import" of your existing code is generally not possible; instead, you should view this as a project porting process.

    To help me provide you with the most relevant guidance for your specific codebase, could you share a bit more about your current implementation? For instance, have you already identified which areas—such as fixed-point versus floating-point math, specific peripheral register usage, or your current library dependencies—you expect to be the most challenging to transition? Also, do you already have access to the latest C2000Ware, and would you like some specific recommendations on which documentation or tools to prioritize to help minimize your debug time?

    In the meantime, here are a few key architectural considerations for your migration:

    • EABI vs. COFF: The F28388D requires the Embedded Application Binary Interface (EABI) format, which is incompatible with the older COFF format used by the F2812 1. This means your linker command files will need to be updated to use EABI section names (e.g., .const instead of .econst) 1.
    • Data Types: Keep in mind that EABI defines double as 64 bits, whereas the older standard treated it as 32 bits 1. You will need to review your data structures and math interfaces to ensure compatibility.
    • Floating-Point vs. Fixed-Point: The F28388D includes a dedicated Floating-Point Unit (FPU) and Trigonometric Math Unit (TMU) 2. While you can run fixed-point code, you may find significant performance gains by leveraging the hardware FPU. If you move to floating-point, ensure you link against the correct FPU-enabled Runtime Support (RTS) libraries and use the appropriate compiler flags (--float_support=fpu32) 3.
    • Peripherals: The F28388D features a completely different CAN module and significant changes to the PWM and ADC peripherals compared to the F2812 4. Rather than trying to port legacy register-level code, I highly recommend using the C2000Ware DriverLib examples as a structural foundation for your new project 4.

    Once you clarify which parts of your code are currently the most critical, I can point you toward the most relevant technical documents and library resources to help streamline your development.

    1. EABI Migration Guide
    2. F2838x Technical Reference Manual
    3. C28x Compiler User's Guide
    4. E2E Support Forum: Migrating to F2838x

    Best Regards,

    Zackary Fleenor