Getting started on macOS


Is this the right place to make some comments about the first-time use of RIOT? If not, please tell - I did not find a community forum link ...

I'm trying to build and run a very first demo app with RIOT, e.g. examples/hello-world/ for STM32F4. It's tricky. I'm a seasoned open-source C/C++ developer with quite a bit of macOS & Linux & embedded experience. My dominant development platform is macOS Catalina with command-line tools.

* I've installed all the pre-requisites with homebrew, i.e. gcc-arm-embedded, openocd, etc * fwiw, macOS 10.15 is 64-bit only, so the older tutorial can't be used * gcc-arm-embedded runs into tons of Catalina protections, preventing gcc etc to run * the default make on 10.15 (3.81) is deemed too old, I had to install and use gmake from homebrew * gmake flash fails, because openocd (0.10.0) reports "open failed" in ocd_bouncer * I worked around this using a manual upload via st-util and arm-none-eabi-gdb * pyterm fails, because pyserial is missing, the default python3 in macOS 10.15 is 3.7.3 * pyserial cannot be installed with the default python3, fortunately homebrew has a 3.8 variant

Success at last, on the host side:

$ BOARD=stm32f4discovery gmake term PORT=/dev/cu.usbmodem1461303 Welcome to pyterm! Type '/exit' to exit. 2020-03-05 11:39:16,685 # main(): Thmain(): This is RIOT! (Version: 2020.04-devel-983-g1a30b) 2020-03-05 11:39:16,686 # Hello World! 2020-03-05 11:39:16,691 # You are running RIOT on a(n) stm32f4discovery board. 2020-03-05 11:39:16,694 # This board features a(n) stm32f4 MCU.

So yes, RIOT is possible for a newcomer, on the latest macOS with homebrew. But it's tricky.

With my greatest respect for the many developers of this project and the huge amount of time which has been spent on getting RIOT this far, I'd like to make a suggestion. Please consider adding another build/toolchain mechanism: Please understand that I'm not a PlatformIO "fanboy" and I definitely don't go around looking for projects to "promote" PIO (I have no stake in it, nor do I play any role in its development).

The point is that all the issues mentioned above would have been avoided. PIO supports a huge range of platforms, boards, architectures, frameworks, and libraries, and handles all the installations and updates. I use it from the command line, but it also integrates very nicely with a couple of IDEs. Check out the list of supported frameworks, to get an idea of just how wide the reach of PIO has already become, and how malleable it is: Not to mention the libraries, platforms, and boards (see the "Registry" drop-down menu). PIO is well-documented, and the user side "platformio.ini" project config files are often just a few lines. It's *trivial* in actual use.

I'm not saying this to rattle any cages or step on anyone's toes. I've been using PIO for a few years now, and it just keeps on expanding, getting more flexible, and handling more situations. The PIO community and responsiveness of its main developers is excellent, and active. The leverage RIOT can get from it could be phenomenal, IMO. The sum of two active and highly complementary OSS projects is bound to far exceed each of them in isolation.

Evidently, all of the above is just my personal opinion. It carries no weight, and is easy to dismiss. All I'm saying is: please give PlatformIO some very serious consideration w.r.t. RIOT. It's a win-win.

Happy coding, Jean-Claude Wippler