openSUSE:ARM microcontroller howto
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.