Debugging with Eclipse Print

 

This application note describes how to use Eclipse for building and debugging Linux user-space applications on the Emcraft STM32MP1 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 ./meta-toolchain-qt5-openstlinux-weston-stm32mp1-som-x86_64-toolchain-2.4-snapshot.sh

  • Activate the cross-build environment:
  • $ source /opt/st/stm32mp1-som/2.4-snapshot/environment-setup-cortexa7hf-neon-
    vfpv4-openstlinux_weston-linux-gnueabi
    $ unset CCACHE_PATH

  • 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 arm-openstlinux_weston-linux-gnueabi- as a Cross compiler prefix and /opt/st/stm32mp1-som/2.4-snapshot/sysroots/x86_64-openstlinux_weston_sdk-linux/usr/bin/arm-openstlinux_weston-linux-gnueabi/ 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 STM32MP1 Cortex A7 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/st/stm32mp1-som/2.4-snapshot/sysroots/x86_64-openstlinux_weston_sdk-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/st/stm32mp1-som/2.4-snapshot/sysroots/x86_64-openstlinux_weston_sdk-linux to Other flags:
  • 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 arm-openstlinux_weston-linux-gnueabi-gdb and click Apply:
  • On the Linux development host, create the c-example/.gdbinit GDB command file in your workspace and add the set set sysroot /opt/st/stm32mp1-som/2.4-snapshot/sysroots/cortexa7hf-neon-vfpv4-openstlinux_weston-linux-gnueabi command command to it:
  • echo "set set sysroot /opt/st/stm32mp1-som/2.4-snapshot/sysroots/cortexa7hf-neon- vfpv4-openstlinux_weston-linux-gnueabi command" > /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