Skip to main content
Wouter Klop
Associate
Jun 8, 2018 8:52 PM UTC
Solved

Motor control SDK 5.1.0 and SW4STM32 not compiling

Posted on June 08, 2018 at 22:52

Hi all,

I'm trying to get started with the Motor Control SDK 5.1.0, after viewing the webinar. Hardware is a Nucleo F302R8, Nucleo-IHM07M1 (in 3 shunt configuration), and the bullrunning 1700 kV motor. The motor profiler runs, although I couldn't get it working (it doesn't give stable rotation). That's ok for now, as it indicates the HW/SW platform is in working condition.

The steps taken are as follows:

- Use MCSDK 5.1.0 with the hardware mentioned above, to generate an .ioc file. For code generation, SW4STM32 is selected.

- Open the .ioc file in STM32CubeMX 4.26.0

- Generate code, and click 'open project', which opens SW4STM32

- Build the project in SW4STM32. The building runs quite far, until the following error is thrown:

Building target: motorTestC.elf

Invoking: MCU GCC Linker

arm-none-eabi-gcc -mcpu=cortex-m4 -mthumb -mfloat-abi=hard -mfpu=fpv4-sp-d16 -specs=nosys.specs -specs=nano.specs -T'../STM32F302R8Tx_FLASH.ld' -Wl,-Map=output.map -Wl,--gc-sections -o 'motorTestC.elf' @'objects.list' -lm

Application/User/mc_tasks.o: In function `MCboot':

C:/PATH/motorTestC/Src/mc_tasks.c:184: undefined reference to `STO_PLL_Init'

C:/PATH/motorTestC/Src/mc_tasks.c:188: undefined reference to `RUC_Init'

Application/User/mc_tasks.o: In function `TSK_MediumFrequencyTaskM1':

C:/PATH/motorTestC/Src/mc_tasks.c:308: undefined reference to `STO_PLL_CalcAvrgMecSpeed01Hz'

C:/PATH/motorTestC/Src/mc_tasks.c:337: undefined reference to `RUC_Clear'

C:/PATH/motorTestC/Src/mc_tasks.c:339: undefined reference to `STO_PLL_Clear'

C:/PATH/motorTestC/Src/mc_tasks.c:353: undefined reference to `RUC_Exec'

C:/PATH/motorTestC/Src/mc_tasks.c:367: undefined reference to `STO_PLL_IsObserverConverged'

Application/User/mc_tasks.o: In function `TSK_HighFrequencyTask':

C:/PATH/motorTestC/Src/mc_tasks.c:647: undefined reference to `RUC_FirstAccelerationStageReached'

C:/PATH/motorTestC/Src/mc_tasks.c:650: undefined reference to `STO_PLL_CalcElAngle'

C:/PATH/motorTestC/Src/mc_tasks.c:651: undefined reference to `STO_PLL_CalcAvrgElSpeedDpp'

C:/PATH/motorTestC/Src/mc_tasks.c:654: undefined reference to `STO_ResetPLL'

Application/User/user_interface.o: In function `UI_SetReg':

C:/PATH/motorTestC/Src/user_interface.c:270: undefined reference to `STO_PLL_GetObserverGains'

C:/PATH/motorTestC/Src/user_interface.c:271: undefined reference to `STO_PLL_SetObserverGains'

C:/PATH/motorTestC/Src/user_interface.c:290: undefined reference to `STO_PLL_GetObserverGains'

C:/PATH/motorTestC/Src/user_interface.c:291: undefined reference to `STO_PLL_SetObserverGains'

C:/PATH/motorTestC/Src/user_interface.c:310: undefined reference to `STO_GetPLLGains'

C:/PATH/motorTestC/Src/user_interface.c:311: undefined reference to `STO_SetPLLGains'

C:/PATH/motorTestC/Src/user_interface.c:331: undefined reference to `STO_GetPLLGains'

C:/PATH/motorTestC/Src/user_interface.c:332: undefined reference to `STO_SetPLLGains'

Application/User/user_interface.o: In function `UI_GetReg':

C:/PATH/motorTestC/Src/user_interface.c:591: undefined reference to `RUC_GetNumberOfPhases'

C:/PATH/motorTestC/Src/user_interface.c:520: undefined reference to `STO_GetPLLGains'

C:/PATH/motorTestC/Src/user_interface.c:500: undefined reference to `STO_PLL_GetObserverGains'

C:/PATH/motorTestC/Src/user_interface.c:480: undefined reference to `STO_PLL_GetObserverGains'

C:/PATH/motorTestC/Src/user_interface.c:540: undefined reference to `STO_GetPLLGains'

C:/PATH/motorTestC/Src/user_interface.c:694: undefined reference to `STO_PLL_GetEstimatedCurrent'

C:/PATH/motorTestC/Src/user_interface.c:800: undefined reference to `STO_PLL_GetEstimatedBemfLevel'

C:/PATH/motorTestC/Src/user_interface.c:818: undefined reference to `STO_PLL_GetObservedBemfLevel'

C:/PATH/motorTestC/Src/user_interface.c:748: undefined reference to `STO_PLL_GetEstimatedBemf'

C:/PATH/motorTestC/Src/user_interface.c:730: undefined reference to `STO_PLL_GetEstimatedBemf'

C:/PATH/motorTestC/Src/user_interface.c:712: undefined reference to `STO_PLL_GetEstimatedCurrent'

Application/User/user_interface.o: In function `UI_GetRevupData':

C:/PATH/motorTestC/Src/user_interface.c:1005: undefined reference to `RUC_GetPhaseDurationms'

C:/PATH/motorTestC/Src/user_interface.c:1006: undefined reference to `RUC_GetPhaseFinalMecSpeed01Hz'

C:/PATH/motorTestC/Src/user_interface.c:1007: undefined reference to `RUC_GetPhaseFinalTorque'

Application/User/user_interface.o: In function `UI_SetRevupData':

C:/PATH/motorTestC/Src/user_interface.c:1032: undefined reference to `RUC_SetPhaseDurationms'

C:/PATH/motorTestC/Src/user_interface.c:1033: undefined reference to `RUC_SetPhaseFinalMecSpeed01Hz'

C:/PATH/motorTestC/Src/user_interface.c:1034: undefined reference to `RUC_SetPhaseFinalTorque'

Application/User/mc_config.o:(.data+0x2d4): undefined reference to `STO_PLL_ForceConvergency1'

Application/User/mc_config.o:(.data+0x2d8): undefined reference to `STO_PLL_ForceConvergency2'

Application/User/mc_config.o:(.data+0x2dc): undefined reference to `STO_OTF_ResetPLL'

Application/User/mc_config.o:(.data+0x2e0): undefined reference to `STO_PLL_IsVarianceTight'

collect2.exe: error: ld returned 1 exit status

makefile:37: recipe for target 'motorTestC.elf' failed

make: *** [motorTestC.elf] Error 1

Can anyone explain why this happens, and how it can be solved? Thanks a lot in advance! In case additional input is needed, feel free to ask.

This topic has been closed for replies.
bluenow1896
bluenow1896Best answer
Associate III
Jun 9, 2018 11:24 PM UTC
Posted on June 10, 2018 at 01:24

Hi

klopwouter

,

From the error message, it prompts that the lib of mc was missing from link.

To manually fix the problem, you can go 'project properties' --> 'C/C++ Build' --> 'Settings' --> 'Tools settings' --> 'MCU GCC Linker' --> 'Libraries'

in 'Libraries (-l)' , add :libmc-truestudio_M4.lib

in 'Library searching path (-L)' , add ../../../MCSDK_v5.1.0/MotorControl/lib

Hope this will help.

BTW, the sw4stm32 and truestudio both use GCC, so the lib was shared.

-Andy

3 replies

bluenow1896
bluenow1896Best answer
Associate III
Jun 9, 2018 11:24 PM UTC
Posted on June 10, 2018 at 01:24

Hi

klopwouter

,

From the error message, it prompts that the lib of mc was missing from link.

To manually fix the problem, you can go 'project properties' --> 'C/C++ Build' --> 'Settings' --> 'Tools settings' --> 'MCU GCC Linker' --> 'Libraries'

in 'Libraries (-l)' , add :libmc-truestudio_M4.lib

in 'Library searching path (-L)' , add ../../../MCSDK_v5.1.0/MotorControl/lib

Hope this will help.

BTW, the sw4stm32 and truestudio both use GCC, so the lib was shared.

-Andy

Wouter Klop
Associate
Jun 10, 2018 11:13 AM UTC
Posted on June 10, 2018 at 13:13

Hi

Blue.Andy

,

Thanks for the quick reply! Your solution works perfect. One small addition is that the lib folder was not available in the project folder, so I copied the lib folder from the Program files directory.

Thanks a lot for helping me out

Laurent Ca...
Senior III
Jun 15, 2021 8:26 AM UTC

The question has been moved from the "Motor Control Hardware" section to the "STM32 Motor Control" section (the question is about the STM32 MC SDK). 

Best regards