Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 3 Next »

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):

    image-20240123-114533.png
  • 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.

    image-20240123-114636.png
  • 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:

    image-20240123-114728.png
  • Click Finish.

  • Add your source file (see attached for an example) to the project, open File -> Import, select File System:

    image-20240123-114758.png
  • 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:

image-20240123-114826.png
  • 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:

    image-20240123-114858.png
  • 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/cortexa7hf-neon-vfpv4-openstlinux_weston-linux-gnueabi -marm -mfpu=neon-vfpv4 -mfloat-abi=hard -mcpu=cortex-a7 to Other flags.

    image-20240123-114939.png
  • In the same window, navigate to Cross GCC Linker -> Library search path:

    image-20240123-115000.png
  • 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/cortexa7hf-neon-vfpv4-openstlinux_weston-linux-gnueabi -marm -mfpu=neon-vfpv4 -mfloat-abi=hard -mcpu=cortex-a7 to Other flags:

    image-20240123-115040.png
  • Repeat the configuration steps above for the Release configuration.

  • 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:

    image-20240123-115116.png
  • 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:

    image-20240123-115152.png
  • Create a new Connection by clicking New and choosing SSH connection type; click OK:

    image-20240123-115235.png
  • 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:

    image-20240123-115256.png
  • In the Main tab, specify Remote Absolute File Path for C/C++ Application and click Apply:

    image-20240123-115328.png
  • Now, switch to the Debugger tab, change gdb to arm-openstlinux_weston-linux-gnueabi-gdb and click Apply:

    image-20240123-115403.png
  • 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:

    image-20240123-115431.png
  • 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:

    image-20240123-115451.png
  • No labels