-
Notifications
You must be signed in to change notification settings - Fork 6
Add double-precision float multiply example using PRU MAC hardware accelerator #119
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
Copilot
wants to merge
3
commits into
main
Choose a base branch
from
copilot/dev-tley-double-float
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from all commits
Commits
Show all changes
3 commits
Select commit
Hold shift + click to select a range
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
77 changes: 77 additions & 0 deletions
77
examples/double_float/firmware/am261x-lp/icss_m0_pru0_fw/ti-pru-cgt/example.projectspec
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,77 @@ | ||
| <?xml version="1.0" encoding="UTF-8"?> | ||
| <projectSpec> | ||
| <applicability> | ||
| <when> | ||
| <context | ||
| deviceFamily="PRU" | ||
| deviceId="AM261x" | ||
| /> | ||
| </when> | ||
| </applicability> | ||
|
|
||
| <project | ||
| title="Double Float Multiply" | ||
| name = "double_float_multiply_am261x-lp_icss_m0_pru0_fw_ti-pru-cgt" | ||
| products="com.ti.OPEN_PRU;MCU-PLUS-SDK-AM261X" | ||
| configurations=" | ||
| Release, | ||
| Debug, | ||
| " | ||
| connection="TIXDS110_Connection.xml" | ||
| toolChain="TI" | ||
| cgtVersion="2.3.3" | ||
| device="AM261x" | ||
| deviceCore="ICSS_M0_PRU_0" | ||
| ignoreDefaultDeviceSettings="true" | ||
| ignoreDefaultCCSSettings="true" | ||
| endianness="little" | ||
| outputFormat="ELF" | ||
| outputType="executable" | ||
|
|
||
| compilerBuildOptions=" | ||
| -I${CG_TOOL_ROOT}/include | ||
| -I${MCU_PLUS_SDK_PATH}/source | ||
| -I${OPEN_PRU_PATH}/source | ||
| -I${MCU_PLUS_SDK_PATH}/source/pru_io/firmware/common | ||
| -DPRU0 | ||
| -DSLICE0 | ||
| -v4 | ||
| -DSOC_AM261X | ||
| " | ||
| linkerBuildOptions=" | ||
| -m=double_float_multiply.${ConfigName}.map | ||
| --disable_auto_rts | ||
| --entry_point=main | ||
| --diag_suppress=10063-D | ||
| " | ||
|
|
||
| postBuildStep=" | ||
| " | ||
|
|
||
| description="A Double Float Multiply FW project"> | ||
|
|
||
| <configuration name="Debug" | ||
| compilerBuildOptions=" | ||
| -D_DEBUG_=1 | ||
| " | ||
| linkerBuildOptions=" | ||
| " | ||
| ></configuration> | ||
| <configuration name="Release" | ||
| compilerBuildOptions=" | ||
| -O3 | ||
| " | ||
| linkerBuildOptions=" | ||
| " | ||
| ></configuration> | ||
| <pathVariable name="MCU_PLUS_SDK_PATH" path="${COM_TI_MCU_PLUS_SDK_AM261X_INSTALL_DIR}" scope="project" /> | ||
| <pathVariable name="OPEN_PRU_PATH" path="${COM_TI_OPEN_PRU_INSTALL_DIR}" scope="project" /> | ||
| <file path="../../../main.asm" openOnCreation="false" excludeFromBuild="false" action="copy"> | ||
| </file> | ||
| <file path="./linker.cmd" openOnCreation="false" excludeFromBuild="false" action="copy"> | ||
| </file> | ||
| <file path="${OPEN_PRU_PATH}/docs/api_guide_am261x/EXAMPLES_PRU_DOUBLE_FLOAT_MULTIPLY.html" | ||
| openOnCreation="false" excludeFromBuild="false" targetName="README.html" action="link"> | ||
| </file> | ||
| </project> | ||
| </projectSpec> |
43 changes: 43 additions & 0 deletions
43
examples/double_float/firmware/am261x-lp/icss_m0_pru0_fw/ti-pru-cgt/linker.cmd
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,43 @@ | ||
| /* | ||
| * AM261x_PRU0.cmd | ||
| * | ||
| * Example Linker command file for linking assembly programs built with the TI-PRU-CGT | ||
| * on AM261x PRU0 cores | ||
| */ | ||
|
|
||
| /* Specify the System Memory Map */ | ||
| MEMORY | ||
| { | ||
| PAGE 0: | ||
| /* 16 KB PRU Instruction RAM */ | ||
| PRU_IMEM : org = 0x00000000 len = 0x00004000 | ||
|
|
||
| PAGE 1: | ||
| /* Data RAMs */ | ||
| /* 8 KB PRU Data RAM 0 */ | ||
| PRU0_DMEM_0 : org = 0x00000000 len = 0x00002000 | ||
| /* 8 KB PRU Data RAM 1 */ | ||
| PRU1_DMEM_1 : org = 0x00002000 len = 0x00002000 | ||
|
|
||
| PAGE 2: | ||
| /* C28 needs to be programmed to point to SHAREDMEM, default is 0 */ | ||
| /* 32 KB PRU Shared RAM */ | ||
| PRU_SHAREDMEM : org = 0x00010000 len = 0x00008000 | ||
| } | ||
|
|
||
| /* Specify the sections allocation into memory */ | ||
| SECTIONS { | ||
|
|
||
| .text > PRU_IMEM, PAGE 0 | ||
| .stack > PRU0_DMEM_0, PAGE 1 | ||
| .bss > PRU0_DMEM_0, PAGE 1 | ||
| .cio > PRU0_DMEM_0, PAGE 1 | ||
| .data > PRU0_DMEM_0, PAGE 1 | ||
| .switch > PRU0_DMEM_0, PAGE 1 | ||
| .sysmem > PRU0_DMEM_0, PAGE 1 | ||
| .cinit > PRU0_DMEM_0, PAGE 1 | ||
| .rodata > PRU0_DMEM_0, PAGE 1 | ||
| .rofardata > PRU0_DMEM_0, PAGE 1 | ||
| .farbss > PRU0_DMEM_0, PAGE 1 | ||
| .fardata > PRU0_DMEM_0, PAGE 1 | ||
| } |
149 changes: 149 additions & 0 deletions
149
examples/double_float/firmware/am261x-lp/icss_m0_pru0_fw/ti-pru-cgt/makefile
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,149 @@ | ||
| export OPEN_PRU_PATH?=$(abspath ../../../../../..) | ||
| include $(OPEN_PRU_PATH)/imports.mak | ||
|
|
||
| # Define build outputs | ||
| OUTPUT_NAME := double_float_multiply_am261x-lp_icss_m0_pru0_fw | ||
| HEX_ARRAY_PREFIX := PRU0Firmware | ||
| GEN_DIR := generated | ||
| TARGET := $(GEN_DIR)/$(OUTPUT_NAME).out | ||
| TARGET_HEX := $(GEN_DIR)/$(OUTPUT_NAME).h | ||
|
|
||
| # MCU+ projects: rename & move hex array output | ||
| MCU_HEX_NAME := pru0_load_bin.h | ||
| MCU_HEX_PATH := $(OPEN_PRU_PATH)/examples/double_float/firmware/am261x-lp/$(MCU_HEX_NAME) | ||
|
|
||
| # which directories to search for assembly & C source files? | ||
| FILES_PATH := .. ../../.. . | ||
| vpath %.asm $(FILES_PATH) | ||
| vpath %.c $(FILES_PATH) | ||
| vpath %.cmd $(FILES_PATH) | ||
| vpath %.obj $(GEN_DIR) | ||
| C_FILES := $(notdir $(foreach directory, $(FILES_PATH), $(wildcard $(directory)/*.c))) | ||
| ASM_FILES := $(notdir $(foreach directory, $(FILES_PATH), $(wildcard $(directory)/*.asm))) | ||
|
|
||
| # Generate an object file for every *.asm and *.c source file in FILES_PATH | ||
| OBJECTS := $(patsubst %.asm, $(GEN_DIR)/%.obj, $(notdir \ | ||
| $(foreach directory, $(FILES_PATH), $(wildcard $(directory)/*.asm)))) | ||
| OBJECTS += $(patsubst %.c, $(GEN_DIR)/%.obj, $(notdir \ | ||
| $(foreach directory, $(FILES_PATH), $(wildcard $(directory)/*.c)))) | ||
|
|
||
| # Linker command file | ||
| COMMAND_FILES := linker.cmd | ||
|
|
||
| # Include paths | ||
| INCLUDE := \ | ||
| --include_path=$(CGT_TI_PRU_PATH)/include \ | ||
| --include_path=$(OPEN_PRU_PATH)/source | ||
| ifeq ($(BUILD_MCUPLUS),y) | ||
| INCLUDE += \ | ||
| --include_path=$(MCU_PLUS_SDK_PATH)/source \ | ||
| --include_path=$(MCU_PLUS_SDK_PATH)/source/pru_io/firmware/common | ||
| endif | ||
|
|
||
| # Compiler flags (Defined in 'PRU Optimizing C/C++ Compiler User's Guide) | ||
| # commonly modified flags include: | ||
| # silicon version: -v (3: PRUSS, PRU-ICSS; 4: PRU_ICSSG) | ||
| # C code optimization: -O (off, 0, 1, 2, 3, 4) | ||
| CFLAGS := \ | ||
| -v3 -O2 \ | ||
| --display_error_number --diag_wrap=off --diag_warning=225 \ | ||
| --asm_directory=$(GEN_DIR) --obj_directory=$(GEN_DIR) --pp_directory=$(GEN_DIR) \ | ||
| -ppd -ppa -g --endian=little | ||
|
|
||
| # Linker flags (Defined in 'PRU Optimizing C/C++ Compiler User's Guide) | ||
| LFLAGS := \ | ||
| -m$(GEN_DIR)/$(OUTPUT_NAME).map --xml_link_info=$(GEN_DIR)/$(OUTPUT_NAME)_linkInfo.xml \ | ||
| --display_error_number --diag_wrap=off --diag_warning=225 --diag_suppress=10063-D \ | ||
| --warn_sections --reread_libs | ||
|
|
||
| ifeq ($(C_FILES),) | ||
| # PRU firmware is assembly-only | ||
| # commonly modified flags include: | ||
| # entry point | ||
| LFLAGS += \ | ||
| --entry_point=main --disable_auto_rts --ram_model | ||
|
|
||
| else | ||
| # PRU firmware has C code | ||
| # commonly modified flags include: | ||
| # stack size, heap size | ||
| LFLAGS += \ | ||
| --stack_size=0x100 --heap_size=0x100 \ | ||
| -i$(CGT_TI_PRU_PATH)/lib -i$(CGT_TI_PRU_PATH)/include --library=libc.a | ||
| endif | ||
|
|
||
| # Defines (pass instance specific definitions to the program) | ||
| # see --define or -D in 'PRU Optimizing C/C++ Compiler User's Guide' | ||
| # For example, to define PRU0, ICSSG1, SOC_AM243X, and set _DEBUG_=1: | ||
| # -DPRU0 -DICSSG1 --define=SOC_AM243X -D_DEBUG_=1 | ||
| DFLAGS := | ||
|
|
||
| # Libraries | ||
| # see --library in 'PRU Optimizing C/C++ Compiler User's Guide' | ||
| LIBS := | ||
|
|
||
| # Only build if tools are defined | ||
| ifeq (,$(CGT_TI_PRU_PATH)) | ||
| all clean: | ||
| @echo 'CGT_TI_PRU_PATH not set. Make sure that:' | ||
| @echo ' 1) OPEN_PRU_PATH points to the open-pru repo' | ||
| @echo ' 2) imports.mak exists at OPEN_PRU_PATH' | ||
| @echo ' 3) Both the open-pru repo and imports.mak are set up as per' | ||
| @echo ' OPEN_PRU_PATH/docs/getting_started.md' | ||
| else | ||
|
|
||
| # All Target | ||
| all: $(OBJECTS) $(COMMAND_FILES) | ||
| @$(MAKE) --no-print-directory -Onone "$(TARGET)" | ||
|
|
||
| # Invoke the compiler on all assembly files in vpath to create the object files | ||
| $(GEN_DIR)/%.obj: %.asm | ||
| $(MKDIR) $(GEN_DIR) | ||
| @echo 'Building file: "$^"' | ||
| @echo 'Invoking: PRU Compiler' | ||
| "$(CGT_TI_PRU_PATH)/bin/clpru" $(INCLUDE) $(CFLAGS) $(DFLAGS) $^ | ||
| @echo 'Finished building: "$^"' | ||
| @echo ' ' | ||
|
|
||
| # Invoke the compiler on all c files in vpath to create the object files | ||
| $(GEN_DIR)/%.obj: %.c | ||
| $(MKDIR) $(GEN_DIR) | ||
| @echo 'Building file: $^' | ||
| @echo 'Invoking: PRU Compiler' | ||
| "$(CGT_TI_PRU_PATH)/bin/clpru" $(INCLUDE) $(CFLAGS) $(DFLAGS) $^ | ||
| @echo 'Finished building: "$^"' | ||
| @echo ' ' | ||
|
|
||
| # Invoke the linker (-z flag) to make the .out file | ||
| $(TARGET): $(OBJECTS) $(COMMAND_FILES) | ||
| @echo 'Building target: "$@"' | ||
| @echo 'Invoking: PRU Linker' | ||
| "$(CGT_TI_PRU_PATH)/bin/clpru" $(CFLAGS) -z $^ $(LFLAGS) -o $(TARGET) $(LIBS) | ||
| @echo 'Finished building target: "$@"' | ||
| @echo ' ' | ||
| @$(MAKE) --no-print-directory post-build | ||
|
|
||
| # To clean generated files | ||
| clean: | ||
| -$(RMDIR) $(GEN_DIR) | ||
| ifeq ($(BUILD_MCUPLUS),y) | ||
| -$(RM) $(MCU_HEX_PATH) | ||
| endif | ||
| @echo 'Finished clean' | ||
| @echo ' ' | ||
| endif | ||
|
|
||
| # Generate hex array | ||
| post-build: | ||
| -$(CGT_TI_PRU_PATH)/bin/hexpru --diag_wrap=off --array --array:name_prefix=$(HEX_ARRAY_PREFIX) -o $(TARGET_HEX) $(TARGET) | ||
| -$(CAT) $(OPEN_PRU_PATH)/source/firmware/pru_load_bin_copyright.h $(TARGET_HEX) > $(TARGET_HEX).temp | ||
| -$(MOVE) $(TARGET_HEX).temp $(TARGET_HEX) | ||
| ifeq ($(BUILD_MCUPLUS),y) | ||
| -$(COPY) $(TARGET_HEX) $(MCU_HEX_PATH) | ||
| endif | ||
| @echo ' ' | ||
|
|
||
| .PHONY: all clean | ||
|
|
||
| # Include the dependencies that the compiler creates (-ppd and -ppa flags) | ||
| -include $(OBJECTS:%.obj=%.pp) | ||
20 changes: 20 additions & 0 deletions
20
examples/double_float/firmware/am261x-lp/icss_m0_pru0_fw/ti-pru-cgt/makefile_projectspec
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,20 @@ | ||
| # | ||
| # Auto generated makefile | ||
| # | ||
|
|
||
| export OPEN_PRU_PATH?=$(abspath ../../../../../..) | ||
| include $(OPEN_PRU_PATH)/imports.mak | ||
|
|
||
| PROFILE?=Release | ||
|
|
||
| PROJECT_NAME=double_float_multiply_am261x-lp_icss_m0_pru0_fw_ti-pru-cgt | ||
|
|
||
| all: | ||
| $(CCS_ECLIPSE) -noSplash -data $(OPEN_PRU_PATH)/ccs_projects -application com.ti.ccstudio.apps.projectBuild -ccs.projects $(PROJECT_NAME) -ccs.configuration $(PROFILE) | ||
|
|
||
| clean: | ||
| $(CCS_ECLIPSE) -noSplash -data $(OPEN_PRU_PATH)/ccs_projects -application com.ti.ccstudio.apps.projectBuild -ccs.projects $(PROJECT_NAME) -ccs.configuration $(PROFILE) -ccs.clean | ||
|
|
||
| export: | ||
| $(MKDIR) $(OPEN_PRU_PATH)/ccs_projects | ||
| $(CCS_ECLIPSE) -noSplash -data $(OPEN_PRU_PATH)/ccs_projects -application com.ti.ccstudio.apps.projectCreate -ccs.projectSpec example.projectspec -ccs.overwrite full |
8 changes: 8 additions & 0 deletions
8
examples/double_float/firmware/am261x-lp/icss_m0_pru0_fw/ti-pru-cgt/syscfg_c.rov.xs
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,8 @@ | ||
| /* | ||
| * ======== syscfg_c.rov.xs ======== | ||
| * This file contains the information needed by the Runtime Object | ||
| * View (ROV) tool. | ||
| */ | ||
| var crovFiles = [ | ||
| "kernel/freertos/rov/FreeRTOS.rov.js", | ||
| ]; |
77 changes: 77 additions & 0 deletions
77
examples/double_float/firmware/am261x-lp/icss_m0_pru1_fw/ti-pru-cgt/example.projectspec
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,77 @@ | ||
| <?xml version="1.0" encoding="UTF-8"?> | ||
| <projectSpec> | ||
| <applicability> | ||
| <when> | ||
| <context | ||
| deviceFamily="PRU" | ||
| deviceId="AM261x" | ||
| /> | ||
| </when> | ||
| </applicability> | ||
|
|
||
| <project | ||
| title="Double Float Multiply" | ||
| name = "double_float_multiply_am261x-lp_icss_m0_pru1_fw_ti-pru-cgt" | ||
| products="com.ti.OPEN_PRU;MCU-PLUS-SDK-AM261X" | ||
| configurations=" | ||
| Release, | ||
| Debug, | ||
| " | ||
| connection="TIXDS110_Connection.xml" | ||
| toolChain="TI" | ||
| cgtVersion="2.3.3" | ||
| device="AM261x" | ||
| deviceCore="ICSS_M0_PRU_1" | ||
| ignoreDefaultDeviceSettings="true" | ||
| ignoreDefaultCCSSettings="true" | ||
| endianness="little" | ||
| outputFormat="ELF" | ||
| outputType="executable" | ||
|
|
||
| compilerBuildOptions=" | ||
| -I${CG_TOOL_ROOT}/include | ||
| -I${MCU_PLUS_SDK_PATH}/source | ||
| -I${OPEN_PRU_PATH}/source | ||
| -I${MCU_PLUS_SDK_PATH}/source/pru_io/firmware/common | ||
| -DPRU1 | ||
| -DSLICE1 | ||
| -v4 | ||
| -DSOC_AM261X | ||
| " | ||
| linkerBuildOptions=" | ||
| -m=double_float_multiply.${ConfigName}.map | ||
| --disable_auto_rts | ||
| --entry_point=main | ||
| --diag_suppress=10063-D | ||
| " | ||
|
|
||
| postBuildStep=" | ||
| " | ||
|
|
||
| description="A Double Float Multiply FW project"> | ||
|
|
||
| <configuration name="Debug" | ||
| compilerBuildOptions=" | ||
| -D_DEBUG_=1 | ||
| " | ||
| linkerBuildOptions=" | ||
| " | ||
| ></configuration> | ||
| <configuration name="Release" | ||
| compilerBuildOptions=" | ||
| -O3 | ||
| " | ||
| linkerBuildOptions=" | ||
| " | ||
| ></configuration> | ||
| <pathVariable name="MCU_PLUS_SDK_PATH" path="${COM_TI_MCU_PLUS_SDK_AM261X_INSTALL_DIR}" scope="project" /> | ||
| <pathVariable name="OPEN_PRU_PATH" path="${COM_TI_OPEN_PRU_INSTALL_DIR}" scope="project" /> | ||
| <file path="../../../main.asm" openOnCreation="false" excludeFromBuild="false" action="copy"> | ||
| </file> | ||
| <file path="./linker.cmd" openOnCreation="false" excludeFromBuild="false" action="copy"> | ||
| </file> | ||
| <file path="${OPEN_PRU_PATH}/docs/api_guide_am261x/EXAMPLES_PRU_DOUBLE_FLOAT_MULTIPLY.html" | ||
| openOnCreation="false" excludeFromBuild="false" targetName="README.html" action="link"> | ||
| </file> | ||
| </project> | ||
| </projectSpec> |
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
2. Duplicate main definition
🐞 Bug✓ CorrectnessAgent Prompt
ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation toolsThere was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This feedback seems valid. Is there something in place to prevent the makefile from grabbing main_c_ref.c and using it as a build source?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ask❓
This feedback seems valid. Is there something in place to prevent the makefile from grabbing main_c_ref.c and using it as a build source?
Answer:
No—based on the new makefile logic shown in the diff, there is currently nothing preventing
main_c_ref.cfrom being auto-discovered and compiled.Why it gets picked up:
FILES_PATH := .. ../../.. .examples/double_float/firmware/<board>/<core>/ti-pru-cgt/, the../../..entry resolves toexamples/double_float/firmware/main_c_ref.clives exactly in that directory (examples/double_float/firmware/main_c_ref.c)C_FILESandOBJECTSare populated via$(wildcard $(directory)/*.c), somain_c_ref.cis included automatically.main.asmdefinesmain:(exported with.global main)main_c_ref.cdefinesint main(void)This will typically cause a “multiple definition of
main” link error forgmake all.The comment in
main_c_ref.c(“NOT compiled into the default PRU firmware project”) may be true for CCS projects if the projectspec excludes it, but it is not true for these makefile builds as written.Recommended mitigation (one of):
C_FILES, doC_FILES := $(filter-out main_c_ref.c,$(C_FILES))OBJECTS(or deriveOBJECTSfrom filteredC_FILES/ASM_FILESrather than re-wildcarding).main_c_ref.cinto a directory not searched byFILES_PATH(e.g.firmware/ref/), and only include it in a dedicated “C reference” build.BUILD_C_REF=y) that selects eithermain.asmormain_c_ref.c, but not both.As-is, the bot’s feedback is valid for the makefile-based builds.