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.

AM263P4: SysConfig doesn't generate code for the PRU core during build

Part Number: AM263P4
Other Parts Discussed in Thread: SYSCONFIG

Tool/software:

I am using Code Composer Studio 20.0.2 to work with a system project made up of 3 RF5 cores and 2 PRU cores. Each of the R5F core projects has a sysconfig file, and those have been correctly generating code for those projects. Recently, I added in a SysConfig file to the PRU project. Currently, I have added a 1 RTI and 1 GPIO to the SysConfig of the PRU for a test. When I clean and build the PRU project, it compiles correctly and shows a folder for Generated Source, but there is no code present in that folder. Reviewing the Output, it doesn't show any steps that mention SysConfig code generation.  I have done my best to verify all settings compared to the R5F projects which correctly generated code from SysConfig, but I haven't been able to find any difference between the PRU and R5F with regards to SysConfig implementation.

PRU SysConfig File

/**
 * These arguments were used when this file was generated. They will be automatically applied on subsequent loads
 * via the GUI or CLI. Run CLI with '--help' for additional information on how to override these arguments.
 * @cliArgs --device "AM263Px" --part "AM263P4" --package "ZCZ_F" --context "icss_m0_pru0" --product "MCU_PLUS_SDK_AM263Px@10.01.00"
 * @v2CliArgs --device "AM263P4" --package "NFBGA (ZCZ-F)" --context "icss_m0_pru0" --product "MCU_PLUS_SDK_AM263Px@10.01.00"
 * @versions {"tool":"1.22.0+3893"}
 */

/**
 * These are the reserved peripherals and settings in this configuration
 */
const iGPIO1        = scripting.addPeripheral("GPIO");
iGPIO1["0"].$assign = "PR0_PRU0_GPIO0";
iGPIO1.$name        = "GPO_0";
const iRTI1         = scripting.addPeripheral("RTI");
iRTI1.$name         = "Timer0";
iRTI1.$assign       = "RTI0";

Build Output:

[0]**** Build of configuration Debug for project 50019F-COD005_PRU_0 ****
[1]"C:\\ti\\ccs2002\\ccs\\utils\\bin\\gmake" -k -j 20 all -O 
 
[2]Building file: "../main.c"
[3]Invoking: PRU Compiler
[4]"C:/ti/ti-cgt-pru_2.3.3/bin/clpru" -Ooff --include_path="C:/ti/ccs2002/ccs/ccs_base/pru/include" --include_path="C:/Software/50019F-HCS/50019F-COD001_System_Project/50019F-COD005_PRU_0_Project" --include_path="C:/ti/ti-cgt-pru_2.3.3/include" --include_path="C:/ti/mcu_plus_sdk_am263px_10_01_00_31/source" -g --diag_warning=225 --diag_wrap=off --display_error_number --endian=little -k --preproc_with_compile --preproc_dependency="main.d_raw" --include_path="C:/Software/50019F-HCS/50019F-COD001_System_Project/50019F-COD005_PRU_0_Project/Debug/syscfg"  "../main.c"
[5]Finished building: "../main.c"
 
[6]Building file: "../HCS_Current_Servo.c"
[7]Invoking: PRU Compiler
[8]"C:/ti/ti-cgt-pru_2.3.3/bin/clpru" -Ooff --include_path="C:/ti/ccs2002/ccs/ccs_base/pru/include" --include_path="C:/Software/50019F-HCS/50019F-COD001_System_Project/50019F-COD005_PRU_0_Project" --include_path="C:/ti/ti-cgt-pru_2.3.3/include" --include_path="C:/ti/mcu_plus_sdk_am263px_10_01_00_31/source" -g --diag_warning=225 --diag_wrap=off --display_error_number --endian=little -k --preproc_with_compile --preproc_dependency="HCS_Current_Servo.d_raw" --include_path="C:/Software/50019F-HCS/50019F-COD001_System_Project/50019F-COD005_PRU_0_Project/Debug/syscfg"  "../HCS_Current_Servo.c"
[9]"../main.c", line 127: warning #112-D: statement is unreachable
[10]Finished building: "../HCS_Current_Servo.c"
 
[11]Building target: "50019F-COD005_PRU_0.out"
[12]Invoking: PRU Linker
[13]"C:/ti/ti-cgt-pru_2.3.3/bin/clpru" -Ooff -g --diag_warning=225 --diag_wrap=off --display_error_number --endian=little -k -z -m"empty.Debug.map" -i"C:/ti/ti-cgt-pru_2.3.3/lib" -i"C:/ti/ti-cgt-pru_2.3.3/include" --reread_libs --diag_suppress=10063-D --diag_wrap=off --display_error_number --warn_sections --xml_link_info="50019F-COD005_PRU_0_linkInfo.xml" --ram_model -o "50019F-COD005_PRU_0.out" "./HCS_Current_Servo.obj" "./main.obj" "../linker.cmd"  -llibc.a 
[14]<Linking>
[15]warning #10210-D: creating ".stack" section with default size of 0x100; use the -stack option to change the default size
[16]Finished building target: "50019F-COD005_PRU_0.out"
 
[17]Building secondary target: "PRU_0.h"
[18]Invoking: PRU Hex Utility
[19]"C:/ti/ti-cgt-pru_2.3.3/bin/hexpru" --linkerfill --diag_wrap=off --array --array:name_prefix=PRU_0_image -o "PRU_0.h"  "50019F-COD005_PRU_0.out" 
[20]Translating to Array format...
[21]   "50019F-COD005_PRU_0.out" .text:_c_int00* ==> .text:_c_int00*
[22]   "50019F-COD005_PRU_0.out" .text ==> .text
[23]Finished building secondary target: "PRU_0.h"
 
[24]**** Build Finished 

  • Hi Nathan,

    PRU projects do not have linked code in XDT(backend template files) file to generate code from syscfg.

    Given most of PRU features are hand coded with C/assembly we do not include it as part of our offering.

    I checked internally there is no plan of record to support it also.

  • From SOC perspective PRU are considered as HW module like ADC PWM etc, so it is not applicable to have dedicated sysconfig for it.

    Think of it more like a resource which R5F cores can use, configure using the syscgf.

    PRU pinmux and IEP and MII configs can be configured using R5F syscfg.