This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

PRU-ICSS-INDUSTRIAL-SW: PRU image build for DAN prp/hsr

Part Number: PRU-ICSS-INDUSTRIAL-SW

Dear support,

related to the previous conversation (https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1185462/pru-icss-industrial-sw-am4379---ti-rtos---prp-red-rx-issue/4668796?tisearch=e2e-sitesearch&keymatch=AM4378%20-%20PRP%20Red%20Rx%20issue#4668796) and patch send over email, we are facing issue whit building PRU firmware.

In project "hsr_prp_firmware_project" we select and try to build the option:


- PRU0_PRP_1_0

and


- PRU1_PRP_1_0

Under general we select for "Variant and core" IDK_AM437X


We are facing build error if we have selected AM437x type of device.

Error: 

**** Build of configuration PRU0_PRP_1_0 for project hsr_prp_firmware ****

"C:\\ti\\ccs1040\\ccs\\utils\\bin\\gmake" -k -j 6 all -O 
 
Building file: "C:/ti/PRU-ICSS-HSR-PRP-DAN_01.00.05.01/firmware/Micro_Scheduler.asm"
Invoking: PRU Compiler
"C:/ti/ti-cgt-pru_2.3.2/bin/clpru" -v3 --include_path="C:/ti/ccs1040/ccs/ccs_base/pru/include" --include_path="C:/ti/PRU-ICSS-HSR-PRP-DAN_01.00.05.01/hsr_prp_firmware_project" --include_path="C:/ti/PRU-ICSS-HSR-PRP-DAN_01.00.05.01/include" --include_path="C:/ti/PRU-ICSS-HSR-PRP-DAN_01.00.05.01/include/hw" --include_path="C:/ti/PRU-ICSS-HSR-PRP-DAN_01.00.05.01/firmware" --include_path="C:/ti/PRU-ICSS-HSR-PRP-DAN_01.00.05.01/protocols/hsr_prp/include" --include_path="C:/ti/PRU-ICSS-HSR-PRP-DAN_01.00.05.01/protocols/hsr_prp/include/v1.0" --include_path="C:/ti/PRU-ICSS-HSR-PRP-DAN_01.00.05.01/protocols/timeSync/include" --include_path="C:/ti/ti-cgt-pru_2.3.2/include" --define=icss1 --define=pru0 --define=TWO_PORT_CFG --define=PRU --define=PRU0 --define=PTP --define=ICSS_V_1_0 --define=BUILD_PRP --define=am4379 --undefine=DEBUG --diag_warning=225 --diag_wrap=off --display_error_number --endian=little --hardware_mac=on --asm_listing --preproc_with_compile --preproc_dependency="Micro_Scheduler.d_raw"  "C:/ti/PRU-ICSS-HSR-PRP-DAN_01.00.05.01/firmware/Micro_Scheduler.asm"
No Assembly Errors, 1 Assembly Warning
"check_task.h", WARNING! at line 45: [E1000] error while processing C code in .cdecls directive
	    .cdecls C,NOLIST
 
Finished building: "C:/ti/PRU-ICSS-HSR-PRP-DAN_01.00.05.01/firmware/Micro_Scheduler.asm"
 
Building target: "hsr_prp_firmware.out"
Invoking: PRU Linker
"C:/ti/ti-cgt-pru_2.3.2/bin/clpru" -v3 --define=icss1 --define=pru0 --define=TWO_PORT_CFG --define=PRU --define=PRU0 --define=PTP --define=ICSS_V_1_0 --define=BUILD_PRP --define=am4379 --undefine=DEBUG --diag_warning=225 --diag_wrap=off --display_error_number --endian=little --hardware_mac=on --asm_listing -z -m"hsr_prp_firmware.map" --heap_size=0 --stack_size=0 -i"C:/ti/ti-cgt-pru_2.3.2/lib" -i"C:/ti/ti-cgt-pru_2.3.2/include" --reread_libs --define=ICSS1_PRU_CORE=1 --diag_wrap=off --display_error_number --warn_sections --xml_link_info="hsr_prp_firmware_linkInfo.xml" -o "hsr_prp_firmware.out" "./Micro_Scheduler.obj" "../AM437x_PRU_SS1.cmd"  -llibc.a 
<Linking>
 
 undefined first referenced                                      
  symbol       in file                                           
 --------- ----------------                                      
 main      C:\ti\ti-cgt-pru_2.3.2\lib\rtspruv3_le.lib<boot.c.obj>
 
error #10234-D: unresolved symbols remain
error #10010: errors encountered during linking; "hsr_prp_firmware.out" not built
 
>> Compilation failure
makefile:141: recipe for target 'hsr_prp_firmware.out' failed
gmake[1]: *** [hsr_prp_firmware.out] Error 1
makefile:137: recipe for target 'all' failed
gmake: *** [all] Error 2

**** Build Finished ****


How to solve the problem?

Linker settings:


Thanx!
Regards Mare...

  • Hi Mare,

    Sorry for missing this e2e for long. Please let me know if this is still open. 
    You can try removing "libc.a" from linker include files and selecting last option of "Disable automatic RTS selection".

  • Hi,
    Yes, I think we should keep this track alive because I wanna be sure that the build process is done correctly.

    For thread: https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1263030/pru-icss-industrial-sw-prp-bug-fix-issue/4803784#4803784

    I think we build images with .cmd in the project (I think is hsr_prp_fw.cmd). I know that maybe is not the right one, but we try to build it somehow. 
    Maybe this is also the reason for other issues on firmware in our other thread mentioned above.

    Soo, we try your recipe:

    1.) I assume that we need to build with configuration: PRU0_PRP_1_0 and PRU1_PRP_1_0. Please confirm.
    2.) Please check if the settings are okay now.
    PRU0:

    PRU1:

    This is the compiler output:

    **** Clean-only build of configuration PRU1_PRP_1_0 for project hsr_prp_firmware ****
    
    "C:\\ti\\ccs1040\\ccs\\utils\\bin\\gmake" -k -j 6 clean -O 
     
    DEL /F  "hsr_prp_firmware.hex"  "hsr_prp_firmware.out" 
    DEL /F "Micro_Scheduler.lst" 
    DEL /F "Micro_Scheduler.obj" 
    DEL /F "Micro_Scheduler.d" 
    Could Not Find C:\ti\PRU-ICSS-HSR-PRP-DAN_01.00.05.01\hsr_prp_firmware_project\PRU1_PRP_1_0\Micro_Scheduler.d
    Finished clean
     
    
    **** Build Finished ****
    
    **** Build of configuration PRU1_PRP_1_0 for project hsr_prp_firmware ****
    
    "C:\\ti\\ccs1040\\ccs\\utils\\bin\\gmake" -k -j 6 all -O 
     
    Building file: "C:/ti/PRU-ICSS-HSR-PRP-DAN_01.00.05.01/firmware/Micro_Scheduler.asm"
    Invoking: PRU Compiler
    "C:/ti/ti-cgt-pru_2.3.2/bin/clpru" -v3 --include_path="C:/ti/ccs1040/ccs/ccs_base/pru/include" --include_path="C:/ti/PRU-ICSS-HSR-PRP-DAN_01.00.05.01/hsr_prp_firmware_project" --include_path="C:/ti/PRU-ICSS-HSR-PRP-DAN_01.00.05.01/include" --include_path="C:/ti/PRU-ICSS-HSR-PRP-DAN_01.00.05.01/include/hw" --include_path="C:/ti/PRU-ICSS-HSR-PRP-DAN_01.00.05.01/firmware" --include_path="C:/ti/PRU-ICSS-HSR-PRP-DAN_01.00.05.01/protocols/hsr_prp/include" --include_path="C:/ti/PRU-ICSS-HSR-PRP-DAN_01.00.05.01/protocols/hsr_prp/include/v1.0" --include_path="C:/ti/PRU-ICSS-HSR-PRP-DAN_01.00.05.01/protocols/timeSync/include" --include_path="C:/ti/ti-cgt-pru_2.3.2/include" --define=icss1 --define=pru0 --define=TWO_PORT_CFG --define=PRU --define=PRU1 --define=PTP --define=ICSS_V_1_0 --define=BUILD_PRP --define=am4379 --undefine=DEBUG --diag_warning=225 --diag_wrap=off --display_error_number --endian=little --hardware_mac=on --asm_listing --preproc_with_compile --preproc_dependency="Micro_Scheduler.d_raw"  "C:/ti/PRU-ICSS-HSR-PRP-DAN_01.00.05.01/firmware/Micro_Scheduler.asm"
    No Assembly Errors, 1 Assembly Warning
    "check_task.h", WARNING! at line 45: [E1000] error while processing C code in .cdecls directive
    	    .cdecls C,NOLIST
     
    Finished building: "C:/ti/PRU-ICSS-HSR-PRP-DAN_01.00.05.01/firmware/Micro_Scheduler.asm"
     
    Building target: "hsr_prp_firmware.out"
    Invoking: PRU Linker
    "C:/ti/ti-cgt-pru_2.3.2/bin/clpru" -v3 --define=icss1 --define=pru0 --define=TWO_PORT_CFG --define=PRU --define=PRU1 --define=PTP --define=ICSS_V_1_0 --define=BUILD_PRP --define=am4379 --undefine=DEBUG --diag_warning=225 --diag_wrap=off --display_error_number --endian=little --hardware_mac=on --asm_listing -z -m"hsr_prp_firmware.map" --heap_size=0 --stack_size=0 -i"C:/ti/ti-cgt-pru_2.3.2/lib" -i"C:/ti/ti-cgt-pru_2.3.2/include" --reread_libs --disable_auto_rts --define=ICSS1_PRU_CORE=1 --diag_wrap=off --display_error_number --warn_sections --xml_link_info="hsr_prp_firmware_linkInfo.xml" -o "hsr_prp_firmware.out" "./Micro_Scheduler.obj" "../AM437x_PRU_SS1.cmd"  
    <Linking>
    warning #10062-D: entry-point symbol "_c_int00" undefined
    warning #10202-D: no suitable entry-point found; setting to 0
    Finished building target: "hsr_prp_firmware.out"
     
    C:/ti/ti-cgt-pru_2.3.2\bin\hexpru.exe C:\ti\PRU-ICSS-HSR-PRP-DAN_01.00.05.01\tools\hsr_prp_fw.hexpru hsr_prp_firmware.out && C:\ti\PRU-ICSS-HSR-PRP-DAN_01.00.05.01\tools\bin2header.exe hsr_prp_firmware.b00 hsr_prp_firmware_PRU1_bin.h PRU1_FIRMWARE 4 && xcopy hsr_prp_firmware_PRU1_bin.h C:\ti\PRU-ICSS-HSR-PRP-DAN_01.00.05.01\protocols\hsr_prp\firmware\prp\v1.0\icss_prp_pru1_bin.h* /Y
    Translating to Binary format...
       "hsr_prp_firmware.out" .text ==> .text
    file size: 6928
    C:hsr_prp_firmware_PRU1_bin.h
    1 File(s) copied
     
    warning: Data is being written to auto-generated file hsr_prp_firmware.b00
    
    **** Build Finished ****
    


    Is everything as it should be?
    Now I will try if the issue with PRP and PTP still exists.

    Please give me feedback.

    Best regards, Mare