Search code examples
cembeddedstm32halnucleo

Assertion error while trying to debug program STM32CubeIDE, using NUCLEO board: exit error 3


EDIT: Problem solved. The IDE didn't install properly - apparently some files got corrupted. Works fine after reinstallation.

I just started learning how to program STM32 boards and my first project was supposed to be the blinking blue diode. I was following a tutorial but then after the command make -j16 all in the CDT Build Console I got a message:

12:00:27 **** Incremental Build of configuration Debug for project test ****
make -j16 all 
Assertion failed!

Program: C:\Users\Aya\Desktop\my_pc\CubeIDE\STM32CubeIDE_1.13.2\STM32CubeIDE\plugins\com.st.stm32cube.ide.mcu.externaltools.make.win32_2.1.0.202305091550\tools\bin\make.exe
File: ../job.c, Line 2648

Expression: ap <= end
"make -j16 all" terminated with exit code 3. Build might be incomplete.

12:00:39 Build Finished. 0 errors, 0 warnings. (took 11s.299ms)

The code that I wrote: HAL_GPIO_WritePin(GPIOD, GPIO_Pin_15, GPIO_PIN_SET); I'm confused because apparently it generates no errors, but I still cannot load this code into the microcontroller. Additionally, there is no .bin file that has the same name as the project (supposedly it should be created, but I cannot find it). Does anyone know how to solve this issue? I am using the NUCLEO STM32-F207ZGT6.

I tried switching to release, tried updating plugins as well as tried to use a different diode - it always generates the same exit code: exit code 3.


Solution

  • You cannot load the code because the code has not been built:

    Build might be incomplete.

    It looks like a toolchain issue. The reference:

    File: ../job.c, Line 2648

    where the assertion has occurred is not an assert in your code, but rather within make.exe (the build management tool). You have zero errors because zero files were compiled - it never got that far.

    You appear to be using STM32CubeIDE, but have installed it in a non-standard location (on the Windows Desktop). I would strongly advise uninstalling and letting the toolchain installer install to the default path. As with any GNU based tools I would certainly avoid installing to a path containing spaces - with their Linux heritage Win32 versions have not always worked well with spaces.

    Alternatively, you did not intend to use the STM32CubeIDE toolchain, but it is installed and picked up instead of the intended toolchain. If you are using CubeIDE, why would you be running make from the command line? The IDE will manage the project for you.

    I would certainly omit the -j16 as a test. That determines the number of concurrent "jobs" make will execute. Given that the assert message refers to jobs.c, it may well be related. The author of the tutorial knows nothing about your platform and whether 16 concurrent jobs makes any sense. Build optimisation may be important in large projects, but is probably not important to your learning exercise. It may build slower, but at the moment it is not building at all, and is not necessary to an successful or correct build.