SYSCONFIG: Duplicate GPIO Definitions in board.h (SysConfig- auto generated)

Part Number: SYSCONFIG

I'm working with the example project led_ex2_blinky_cpu1_cpu2_cpu3_multi for the F29H85x (Multi-Core) and have discovered an issue with the automatically generated board.h files from SysConfig.

The board.h file for CPU1 is correct, but the board.h files for CPU2 and CPU3 contain duplicate GPIO definitions.

//*****************************************************************************
//
// GPIO Configurations
//
//*****************************************************************************
#define CPU2_LED 9
void CPU2_LED_init();
#define CPU3_LED 23
void CPU3_LED_init();


//*****************************************************************************
//
// CMPSS Configurations
//
//*****************************************************************************

//*****************************************************************************
//
// RTDMA1 Configurations
//
//*****************************************************************************

//*****************************************************************************
//
// RTDMA2 Configurations
//
//*****************************************************************************

//*****************************************************************************
//
// GPIO Configurations
//
//*****************************************************************************
#define CPU2_LED 9
void CPU2_LED_init();
#define CPU3_LED 23
void CPU3_LED_init();


Questions:

  1. Why does SysConfig generate duplicate #define statements in the CPU2 and CPU3 board.h files?
  2. Is this a known issue or an error in the SysConfig configuration of this example project?
  3. How should this issue be resolved?
  4. Why doesn't the compiler detect and warn about these duplicate #define statements?
  • Hi Thao,

    This is a known SysConfig bug in the multi-core code generation for F29H85x projects.

    1. Why does SysConfig generate duplicate definitions?

    The duplication stems from how SysConfig handles multi-core code generation. In F29x devices, CPU1 must aggregate information from all cores and generate initialization code for device-level settings (PinMux, clock setup, etc.) [1]. In this process, SysConfig generates code blocks in files like board.h for modules assigned to each core—and in CONFIGURE mode, these blocks are "generated even if the associated resource instance is not added to the current core" [2]. This aggregation logic incorrectly produces duplicate GPIO definition blocks in the CPU2 and CPU3 header files.

    2. Is this a known issue?

    Yes. TI has confirmed this is a SysConfig bug related to GPIO code generation for secondary cores in multi-core projects. It was fixed in F29H85X-SDK version 1.02.01.00 [3].

    3. How should this be resolved?

    • Preferred fix: Update to F29H85X-SDK version 1.02.01.00 or later (the latest is 1.03.00.00) [3].
    • Temporary workaround: Manually remove the duplicate definitions from the generated board.h files. Note that these will be overwritten if you regenerate from SysConfig, so upgrading the SDK is the permanent solution.

    4. Why doesn't the compiler warn about duplicates?

    The C preprocessor standard allows redefinition of a macro with an identical replacement value without issuing a warning or error. Since both #define CPU2_LED 9 statements have the same value (9), and both #define CPU3_LED 23 have the same value (23), the compiler treats them as benign redefinitions. Only conflicting redefinitions (different values for the same macro name) trigger compiler warnings [3].


    To help refine this recommendation, it would be helpful to know:

    • Which SDK version you are currently using — if it's already 1.02.01.00 or later and you still see this issue, it may indicate a different variant of the bug
    • Whether the duplicate definitions are causing any functional or build issues beyond the code cleanliness concern

    1. Resource Allocator - F29H85x SDK Documentation
    2. Configure Mode (CONFIGURE) - F29H85x SDK Documentation
    3. F29H859TU-Q1: GPIO SysConfig Bug - TI E2E Forum

    Best Regards,

    Zackary Fleenor

  • Hi Zackary,

    Thank you for your quick response.

    I updated the SDK and tested with versions 1.02.01, 1.03.00, and 26.00.00, but I still see the duplicate GPIO definitions being generated in the CPU2/CPU3 board.h files.

    Could you please confirm if this is still a known issue in these SDK versions?

    If so, is a fix planned for a future SDK release? If yes, do you have an estimated timeline, and which SDK version is expected to include the fix?

    Thank you and best regards,

    Thao

  • Hi Thao,

    Thank you for confirming across multiple SDK versions — this helps us track the issue properly. I've filed an internal bug report to track this to closure. You'll receive an update here once a fix is available in a future SDK release.

     In the meantime, the workaround is to manually remove the second duplicate // GPIO Configurations block from CPU2/CPU3 board.h after each SysConfig regeneration.

    Best Regards,

    Zackary Fleenor