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.

LAUNCHXL-F28377S: Error compiling the example Eqep_pos_speed

Part Number: LAUNCHXL-F28377S
Other Parts Discussed in Thread: CONTROLSUITE

Hello:

I am using CCS v7.0 running on Windows 10.

I am unable to compile the example code eqep_pos_speed from controlSUITE  3.4.4, C:\ti\controlSUITE\device_support\F2837xS\v210\F2837xS_examples_Cpu1\eqep_pos_speed\cpu01.  

The error messages begin as follows: 

**** Build of configuration CPU1_RAM for project eqep_pos_speed_cpu01 ****

"C:\\ti\\ccsv7\\utils\\bin\\gmake" -k all
'Building file: C:/ti/controlSUITE/device_support/F2837xS/v210/F2837xS_examples_Cpu1/eqep_pos_speed/cpu01/Eqep_pos_speed.c'
'Invoking: C2000 Compiler'
"C:/ti/ccsv7/tools/compiler/ti-cgt-c2000_16.9.1.LTS/bin/cl2000" -v28 -ml -mt --vcu_support=vcu2 --cla_support=cla1 --tmu_support=tmu0 --include_path="C:/ti/ccsv7/tools/compiler/ti-cgt-c2000_16.9.1.LTS/include" --include_path="C:/ti/controlSUITE/libs/math/IQmath/v160/include" --include_path="C:/ti/controlSUITE/device_support/F2837xS/v210/F2837xS_headers/include" --include_path="C:/ti/controlSUITE/device_support/F2837xS/v210/F2837xS_common/include" -g --define=CPU1 --display_error_number --diag_warning=225 --diag_suppress=10063 --diag_suppress=16002 --preproc_with_compile --preproc_dependency="Eqep_pos_speed.d" "C:/ti/controlSUITE/device_support/F2837xS/v210/F2837xS_examples_Cpu1/eqep_pos_speed/cpu01/Eqep_pos_speed.c"

>> Compilation failure
subdir_rules.mk:9: recipe for target 'Eqep_pos_speed.obj' failed
"C:\ti\controlSUITE\device_support\F2837xS\v210\F2837xS_headers\include\F2837xS_can.h", line 530: error #2638: The alignment of an array element is greater than the element size
"C:\ti\controlSUITE\device_support\F2837xS\v210\F2837xS_headers\include\F2837xS_can.h", line 533: error #2638: The alignment of an array element is greater than the element size
"C:\ti\controlSUITE\device_support\F2837xS\v210\F2837xS_headers\include\F2837xS_can.h", line 535: error #2638: The alignment of an array element is greater than the element size
"C:\ti\controlSUITE\device_support\F2837xS\v210\F2837xS_headers\include\F2837xS_can.h", line 539: error #2638: The alignment of an array element is greater than the element size

etc. for lines 543, 546, 549, 552, 554, 561, 568, and 575.

The lines numbers are in the declaration of the structure CAN_REGS corresponding to reserved bit fields.  A portion of F2837xS.h follows.

line 523    struct CAN_REGS {
line 524    union CAN_CTL_REG CAN_CTL; // CAN Control Register
line 525    union CAN_ES_REG CAN_ES; // Error and Status Register
line 526    union CAN_ERRC_REG CAN_ERRC; // Error Counter Register
line 527    union CAN_BTR_REG CAN_BTR; // Bit Timing Register
line 528    union CAN_INT_REG CAN_INT; // Interrupt Register
line 529    union CAN_TEST_REG CAN_TEST; // Test Register
line 530    bp_32 rsvd1[2]; // Reserved
line 531    union CAN_PERR_REG CAN_PERR; // CAN Parity Error Code Register
line 532    union CAN_REL_REG CAN_REL; // CAN Core Release Register
line 533    bp_32 rsvd2[14]; // Reserved
line 534    union CAN_RAM_INIT_REG CAN_RAM_INIT; // CAN RAM Initialization Register
line 535    bp_32 rsvd3[6]; // Reserved

etc.

The example code eqep_pos_speed did compile using CCS v6.4.  I have uninstalled and reinstalled CCS v7 and controlSuite and deleted previous workspaces but the errors persist.  Any advice will be appreciated.

Thank you in advance.

Karl

  • Karl

    This is a known bug that we are working on fixing, I apologize for the inconvenience. For now you can edit a couple files to not include the CAN headers.

    See my recommendation here: e2e.ti.com/.../2061721

    Best Regards
    Chris
  • Dear Karl,

    Test register,  "CAN_TEST" and Parity Error Code Register "CAN_PERR" are 32 bit wide registers and offset between them is 8h (refer Table 21.5 in Technical Reference Manual). This shows rsvd1 should be 32 bit wide and it is.

    In line 530 instead of assigning rsvd1 to bp_32, rsvd1[2] is assigned. Similarly rsvd2 in line 533 so on.

    Take a back up of the "F2837xS_can.h" in case if you want to revert back and remove the square brackets and it's content in the "CAN_REGS" structure of the file (from line 530 to 576).

    I hope, this should solve your problem.