openSUSE:ARM microcontroller howto

Jump to: navigation, search

How to develop for ARM microcontrollers on openSUSE

A Hackweek Interstellar project and a demo at ARM Tech Symposium Europe 2014 have demonstrated how openSUSE on ARM can be used to develop for ARM based microcontrollers. This page gives a brief overview of some development tools available in openSUSE.

Note that at this time openSUSE itself is only available for Cortex-A, not Cortex-M or Cortex-R.

GCC

openSUSE's gcc and gcc48 (4.8.3) compiler packages on armv7l are known to produce working kernel code for ARMv7-M.

Known issues

  • Compiling old Linux kernel or U-Boot versions (e.g., Linux 3.0.x or 2.6.33) with recent compilers may expose alignment bugs at runtime. You can then try older gcc versions from devel:gcc. Or try to forward-port or rewrite any downstream code for recent upstream versions that are more likely to work, of course.

OpenOCD

Version: 13.2 Newly packaged

The openocd package can be used both for flashing code onto the microcontroller and for debugging its execution together with gdb.

pyOCD

A python-pyOCD package is being created.

GDB

Together with a suitable server, openSUSE's gdb package is known to be able to debug ARMv7-M code.

Known issues

  • Using gdb 7.8 with openocd 0.8.0 as server, breakpoints could not always be set for the STM32F429-Discovery. Possibly some Thumb vs. ARM instruction set issue?

Tips

Remote file editing

As alternative to doing all coding on an ARM device itself, sshfs is a quickly set up way to remotely edit your source code files from your openSUSE desktop on x86_64 instead. Of course, NFS would be more performant.