Debugging with Eclipse Print

 

This application note describes how to use Eclipse for building and debugging Linux user-space applications on the Emcraft i.MX 8M SOM. You will need a Linux version of the Eclipse IDE installed to your Linux development host.

Go to https://www.eclipse.org/downloads/eclipse-packages/ and select the latest version of Eclipse IDE for C/C++ Developers. At the moment of writing, the current version is the "Oxygen" release. Download and install Eclipse to your host.

Adding a Project to Eclipse

Here is how to create a single file project in Eclipse.

  • Download the Yocto toolchain from the Emcraft website.
  • Install the toolchain to your development host. The toolchain can be installed to an arbitrary directory:
  • $ sh ./fsl-imx-fb-glibc-x86_64-meta-toolchain-qt5-aarch64-toolchain-4.9.51 -mx8-beta.sh

  • Activate the cross-build environment and start Eclipse:
  • $ source /opt/fsl-imx-wayland/4.9.51-mx8-ga/environment-setup-aarch64-poky-linux $ unset CCACHE_PATH $ ./eclipse/eclipse &

  • Select a workspace directory (an arbitrary directory, different from the directory where your source file is located):
  • Create an empty project, open File -> New -> C/C++ Project, select C Managed Build, enter the name of the project, for example, c-example, and click Next.
  • On the next screen you will be prompted to select configurations. Leave all the defaults and click Next to proceed.
  • On the next screen, enter aarch64-poky-linux- as a Cross compiler prefix and /opt/fsl-imx-wayland/4.9.51-mx8-ga/sysroots/x86_64-pokysdk-linux/usr/bin/aarch64-poky-linux as a Cross compiler path:
  • Click Finish.
  • Add your source file (see attached for an example) to the project, open File -> Import, select File System:
  • Click Next, and, using Browse, navigate to the directory with your source file. Select the directory in the left window, this will add its content to the project:
  • Click Finish.

Creating Build Configuration and Building the Project

Now, we need to instruct Eclipse on how to build the project for the i.MX8M Cortex A53 target.

  • Right-click on the just created project and select Properties. Navigate to C/C++ Build->Settings.
  • In the Tool Settings tab on the right, select Include paths:
  • If needed, click on the + button and enter an include path.
  • Navigate to Miscellaneous and add --sysroot=/opt/fsl-imx-wayland/4.9.51-mx8-ga/sysroots/aarch64-poky-linux to Other flags.
  • In the same window, navigate to Cross GCC Linker -> Library search path:
  • If needed, click on the + button and enter a library search path.
  • Navigate to Miscellaneous and add --sysroot=/opt/fsl-imx-wayland/4.9.51-mx8-ga/sysroots/aarch64-poky-linux to Linker flags, click Apply and Close when done:
  • To build the project, press Ctrl-B.

Debugging the Project on the Target

Now, we need to add Debug Configuration to the Eclipse project:

  • Open Run -> Debug Configurations:
  • Create a new configuration in C/C++ Remote Application by clicking + in the upper left part of the dialogue; select Project and C/C++ Application:
  • Create a new Connection by clicking New and choosing SSH connection type; click OK:
  • Edit properties of the new connection: specify the Host IP address, the User (root) and the Password based authentication (leave the Password empty); click Finish:
  • In the Main tab, specify Remote Absolute File Path for C/C++ Application and click Apply:
  • Now, switch to the Debugger tab, change gdb to aarch64-poky-linux-gdb and click Apply:
  • On the Linux development host, create the c-example/.gdbinit GDB command file in your workspace and add the set sysroot /opt/fsl-imx-wayland/4.9.51-mx8-ga/sysroots/aarch64-poky-linux command to it:
  • echo "set sysroot /opt/fsl-imx-wayland/4.9.51-mx8-ga/sysroots/aarch64-poky-linux" > /home/sasha_d/eclipse-workspace/c-example/.gdbinit

  • Click Debug. You will be asked to switch to the Debug Perspective window, accept it:

  • Click to enlarge

  • Eclipse will automatically deploy your application on the target and run gdbserver on it using the SSH protocol.
  • When started under remote debugger, the program automatically stops at the main() function. Now you can execute you program with steps, put breakpoints, and examine variables:

  • Click to enlarge