SMALL EXCURSION AWAY FROM THIS THREAD
yes, i’m feeling with you. This part ist not well documented. I needed some time till i got a working solution and i tried a lot
Some facts which are very important:
MCUXpresso Studio ist definitly not supportd for the, in my case Imx8mm dual lite, but the toolchain, samples for IAR Embedded Workbench or Development based on GCC is available.
Pinconfiguration ist possible with two different tool, but i use
<<MCUXpresso Config Tools - Pins, Clocks, Peripherals>>, but only Pinconfiguration is supported. MCUXpresso Config Tools complains at the respective sections about it, but it works and correctly updates the code.
Dont use the bare examples from the SDK! This is very painful to cherry pick the needed dependencies. Use MCUXpresso Config Tools and import the SDK. Then you can select the respective example of you choise and generate a folder structure only with the needed source code for your application (RTOS, UART, Timer, Interrupt) (This don’t work for the SDK getting started examples)
Oke first of all it is very important that you use a linux development host. I use a laptop with Ubuntu 18.04. This is caused by the fact that the arm toolchain (was) only available for linux dev hosts, not for windows. (arm-none-linux-gnueabihf)
EDIT: It also available for windows, but i recommend the use of a ubuntu dev hosts instead.
This step is only needed for command line build (installing this is mandatory anyway) with cmake, not for the ide itself. Eclipse installs a independent gnu toolchain with x packs.
Install the Eclipse IDE and toolchain (x packs). J Link like documented on this page.
Get <<Eclipse IDE for Embedded C/C++ Developers>> here https://www.eclipse.org/downloads/packages/
Download the SDK from NXP (Therefore the exact SOC Number from the Toradex verdin imx8mm datasheet (eg. MIMX8MM3DVTLZAx) is needed).
Follow the getting startet with GCC from the NXP SDK. Install addional software like cmake, putty, etc…
This guide is tageting a simple << hello world >> example, which is a good starting point.
You successfully build the << hello world >> example. Some similar examples exists on the toradex developers site.
CMake is used by the sdk to build makefiles for the respective configuration debug, release, debug_ddr on so on … then cmake also starts make to build the final .bin file.
Here is the point where i was starting the reverse enginering process to setup eclipse to build this the same way. Eclipse not suppot this kind of CMake projects. This means you can not simply import this to Eclipse.
In the SDK navigate to the << hello world >> example.
In cotrast to the sdk example run the following commands:
$ ./armgcc/build_debug.sh # This only generates the appropriate makefilefiles (for the debug_configuration) without calling make
$ cd ./armgcc
$ make << generated makefile >> VERBOSE=1 # This runs make an lists all gcc configurations, include paths and options which must mirrored equally to the created eclipse project
Capture the verbose output to a text file. (Later to get the verbose output from the make command a second time, you first have to run $ make clean)
You have create a new projekt and import your whole folder structure of the example generated by << MCUXpresso Config Tools >> to your new project. Then delete the debug and release configuration.
Create a new configuration. In this case << Debug_cm4_ram >>.
Get the verbose ouput from << 4 Step>> and go through each project option of the eclipse project and mirror the compiler option, includepath, …etc. with the gcc command line options. Don’t forget the linker script!
If everything hast correctly configured it succecssfully builds.
Debugging needs an .elf file instead of a .bin file, which can be configured in the project options too. Setting up the debugger is good exmplained here eclipse-embed-cdt.github.io.
Run the M4 code so far i alway had to bring up the imx8mm to the u-boot console. Debugging is then possible.
If you step further and want to boot the cortex a, it is only possible to load the .bin file from the SD Card or TFTP and free run the cortex m without debugging. This works good.
So far i could not debug cortex m code if the cortex a boots completly.