Loading...
 

SW4STM32 and SW4Linux fully supports the STM32MP1 asymmetric multicore Cortex/A7+M4 MPUs

   With System Workbench for Linux, Embedded Linux on the STM32MP1 family of MPUs from ST was never as simple to build and maintain, even for newcomers in the Linux world. And, if you install System Workbench for Linux in System Workbench for STM32 you can seamlessly develop and debug asymmetric applications running partly on Linux, partly on the Cortex-M4.
You can get more information from the ac6-tools website and download (registration required) various documents highlighting:

System Workbench for STM32


Eclipse CDT nullpointerException compiling

I have been pulling my hair out on this one for a day or so.

My SystemWorkbench build environment for my project seems to be broken.

When I try to build my project I get the following error:

“Errors running builder ‘CDT Builder’ on project ‘myproject.”
java.lang.NullPointerException

Other projects work fine. I also tried creating a new Eclipse workspace and imported the project into it but I still had the same issue.

Digging into the eclipse log I find the exception details:

ENTRY org.eclipse.core.resources 4 75 2020-10-02 04:16:22.809

MESSAGE Errors occurred during the build.

SUBENTRY 1 org.eclipse.cdt.managedbuilder.core 4 75 2020-10-02 04:16:22.809

MESSAGE Errors running builder ‘CDT Builder’ on project ‘myproject’.

STACK 0

java.lang.NullPointerException
at fr.ac6.mcu.ide.engine.CustomBoardGenerator.compareXMLBoard(CustomBoardGenerator.java:150)
at fr.ac6.mcu.ide.engine.CustomBoardGenerator.createCustomBoard(CustomBoardGenerator.java:330)
at fr.ac6.mcu.ide.engine.CustomBoardGenerator.addCustomBoardTo(CustomBoardGenerator.java:142)
at fr.ac6.mcu.ide.engine.CustomBoardGenerator.addCustomBoardToProject(CustomBoardGenerator.java:92)
at fr.ac6.mcu.ide.core.MCUIdeProjectTargetPartsManager.doApplyBoard(MCUIdeProjectTargetPartsManager.java:1012)
at fr.ac6.mcu.ide.core.MCUIdeProjectTargetPartsManager.doApplyBoard(MCUIdeProjectTargetPartsManager.java:978)
at fr.ac6.mcu.ide.core.MCUIdeProjectTargetPartsManager.syncExistingBoard(MCUIdeProjectTargetPartsManager.java:803)
at fr.ac6.mcu.ide.core.MCUIdeProjectTargetPartsManager.visitBoardSetup(MCUIdeProjectTargetPartsManager.java:700)
at fr.ac6.mcu.ide.core.MCUIdeProjectTargetPartsManager.doGetBoard(MCUIdeProjectTargetPartsManager.java:621)
at fr.ac6.mcu.ide.core.MCUIdeProjectTargetPartsManager.getBoard(MCUIdeProjectTargetPartsManager.java:411)
at fr.ac6.mcu.ide.core.MCUIdeProjectTargetPartsManager.getMcu(MCUIdeProjectTargetPartsManager.java:501)
at fr.ac6.mcu.ide.core.MCUIdeProjectTargetPartsManager.getMcu(MCUIdeProjectTargetPartsManager.java:473)
at fr.ac6.mcu.ide.core.MCUIdeProjectTargetPartsManager.getMcu(MCUIdeProjectTargetPartsManager.java:462)
at fr.ac6.mcu.ide.build.CrossCommandLineGenerator.generateCommandLineInfo(CrossCommandLineGenerator.java:81)
at fr.ac6.mcu.ide.process.makefile.MakefileGenerator.generateToolCommandLineInfo(MakefileGenerator.java:2499)
at fr.ac6.mcu.ide.process.makefile.MakefileGenerator.addRuleForSource(MakefileGenerator.java:3071)
at fr.ac6.mcu.ide.process.makefile.MakefileGenerator.addFragmentMakefileEntriesForSource(MakefileGenerator.java:2319)
at fr.ac6.mcu.ide.process.makefile.MakefileGenerator.addSources(MakefileGenerator.java:2227)
at fr.ac6.mcu.ide.process.makefile.MakefileGenerator.populateFragmentMakefile(MakefileGenerator.java:1043)
at fr.ac6.mcu.ide.process.makefile.MakefileGenerator.regenerateMakefiles(MakefileGenerator.java:958)
at org.eclipse.cdt.managedbuilder.internal.core.CommonBuilder.performMakefileGeneration(CommonBuilder.java:1006)
at org.eclipse.cdt.managedbuilder.internal.core.CommonBuilder.performPrebuildGeneration(CommonBuilder.java:873)
at org.eclipse.cdt.managedbuilder.internal.core.CommonBuilder.build(CommonBuilder.java:748)
at org.eclipse.cdt.managedbuilder.internal.core.CommonBuilder.build(CommonBuilder.java:510)
at org.eclipse.cdt.managedbuilder.internal.core.CommonBuilder.build(CommonBuilder.java:459)
at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:735)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:206)
at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:246)
at org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:301)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:304)
at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:360)
at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:383)
at org.eclipse.core.internal.resources.Workspace.buildInternal(Workspace.java:487)
at org.eclipse.core.internal.resources.Workspace.build(Workspace.java:406)
at org.eclipse.ui.actions.BuildAction$1.runInWorkspace(BuildAction.java:285)
at org.eclipse.core.internal.resources.InternalWorkspaceJob.run(InternalWorkspaceJob.java:39)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)

The evening before this happened i did have some hard crashes on my machine and it is entirely possible that this has corrupted a file ... but git shows no file differences amongst the files I checking in (and there isn’t much i don’t within the project folder ... but i dont checking the workspace folder but as per above I generated a new one of those and the problem did not go away).

Can anyone point me to a likely culprit?

In the interests of helping others who may struggle with cryptic errors like this in my case this was caused by my NUCLEO-H745ZI-Q.xml file having become corrupted ... it was no longer an XML file but a binary file consisting mostly of nulls. I replaced it with a good version and CDT is working again as expected.