Continue Discussion 28 replies
November 2020

IvanV

Thank you for a great post.
To be honest, I didnt know what stands for SDK so maybe you shoud put full title somewere at the beginning.

Also, I must say that I actually like the Eclipse-based IDEs because I once had project where I’ve been developing RTOS for Cortex-M3 and the IDE Memory view and CPU register view was of great help to me. Initially I started developing it in VS Code but I soon switched to Eclipse based IDE. Further, I like Eclipse IDEs better than Keil because Eclipse can be customised better.

1 reply
November 2020

ButtFace

Great post!

My workflow consists of VS Code with the Cortex Debug and Vim extensions with a custom makefile for cross builds, hate the forced IDEs.
Especially if the IDE is the only way of downloading the SDK (like in SiLabs’ case).

Just give me the SDK and I’ll figure out how to build my project myself, I don’t want your early 2000’s looking IDE.

November 2020

off

The given requirements are clear and understood. At the same time, their weight factor is different: De gustibus non est disputandum!
We may or may not like Windows but every IDE has to support it otherwise it isn’t the competitor on the existing market. Every other OS is a bonus, not a requirement.
Makefile is indeed the lowest common denominator. At the same time, IDE is mostly for rapid prototype development when make takes quite significant time to tune and set it up the right/intended way.
Examples for sure are a must but their variety and quality are not less important. And this is in my mind is hugely important metric!
I did use many of those MCU and IDE but my marks are significantly different.
My major complaint is the quality of the examples - they do mostly show how to use the given MCU/SoC but they also show how NOT to design and write code - they are written by cheap outsourced engineers, require a lot of work to be understood and adapted. Yeah, this is the nature of the business…
And, of course, this is just my personal opinion.

1 reply
November 2020

francois

Thanks for chiming in, Ivan. I think there’s a lot to like with Eclipse, and I understand the appeal of visual debuggers. I want everyone to be able to work with the tools they like (Eclipse, Vim, Notepad.exe, …), and not be backed into a corner by their MCU vendor :slight_smile: .

November 2020

francois

:100: I was careful in the introduction to note that this is an opinion piece. There probably is no objective truth on this topic!

I agree with you that examples are important, though I do not typically care whether or not the example code is high quality. As long as it demonstrate the use pattern for a peripheral, I’ve got what I need. One thing I did allude to in the code, is that I like to have all the examples downloaded so I can browse their code. Some SDKs require you use their project configurator to instantiate examples one by one :face_vomiting:.

1 reply
November 2020

ranjith

This is completely biased.
Do you see only PSoC BLE with PSoC creator from Cypress?
Cypress also provides ModusToolbox which is cross platform (Mac, Win, Linux) and uses Makefile ecosystem.
Provides large set of code examples through Github. So continuous delivery is always there to be updated (prefered more than zip).
They support eclipse and vscode officially. But it doesn’t stop you from using vim or Emacs.

2 replies
November 2020

off

If I’d not need to manage others, especially young and/or inexperienced fellows then I may think like you’re saying. Any example needs to show not only a single side one needs but everything including grammatically correct comments. An example needs to show WHAT, HOW and WHY otherwise it is just a clue! Sometimes it’s enough.

November 2020 ▶ ranjith

francois

Hey @ranjith, thanks for the note! I had not heard of Modus Toolbox before, looks like it is relatively new.

I made a change to the article to note that I’m specifically talking about PSoC Creator rather than the PSoC6 family as a whole. I’ll take a look at the module toolbox and update the article as needed.

November 2020

off

After using Creator can’t switch my mind to Modus. Way too different tools.

1 reply
November 2020

nathancharlesjones

Great post, @francois! This is an important but not often discussed topic. I’ve done some similar experimentation and wanted to offer a few pointers for the post. Forgive me if you’re already aware of both of these!

  1. You mentioned that the STM32 SDK isn’t available as a monolithic download but I believe it is. Here is the link to that for the F1, and I believe that every device family has a similar resource.

  2. You’re correct that Infineon doesn’t provide a makefile for their MCUs, but I found that the generic makefile generated by STM32CubeMX makes a decent stand-in, with a few modifications. You can find one that I used here and as long as I’m not going to get in trouble for modifying and sharing ST Microelectronics’ makefile, you should feel free to share that as widely as you’d like!

2 replies
November 2020

stevenlin

Hi all ,
Now i used vs code and gdb.
Because it is cross platform (window and linux like).
And IDE’s editor is pool.

November 2020

francois

Thanks for the link, Nathan. I looked for those and just wasn’t able to find them. Good to see they still exist! I’ll add a note to the post.

November 2020 ▶ nathancharlesjones

SeaFood

Actually, ST’s notation is underevaluated.

Indeed, ST is proposing all of its SDKs either through their STM32CubeMX tool or directly through simple zip files or even GitHub directly !

You can check:

That’s an impressive effort !

1 reply
November 2020

francois

This is very cool, and I did not know about the Github repository. Seems like a new effort? I’ll update the article tomorrow. Thanks for the note @SeaFood!

1 reply
November 2020

amundas

Great post!
Personally my experience with Silicon Labs’ SDK has been quite good, and the SDK can be downloaded as a single zip. Their example makefiles are quite nice.

I would also give a huge penalty to the Atmel/Microchip SDK (ASF) for using precompiled libraries for which they don’t release the source code (QTocuh, LoRa etc)

1 reply
November 2020 ▶ francois

SeaFood

According to this page it seems it was done in last April.

It seems ST also opened the Pull requests, so not just a publication, but rather an opportunity to contribute :). Definitely cool !

November 2020

francois

As far as I can tell, those are deprecated. The downloadable toolchain in that forum post is from 2016.

1 reply
November 2020 ▶ francois

amundas

My bad, here is a link to a fresh version, although you need a user at silabs.com. Definately not “as available” as some of the other SDKs.

November 2020 ▶ discobot

JamesMaxwell

@francois Thanks for your article.
1- Can you write a post about your vim setup? What do you use for completion and linting? LSPs?
2- How do you debug if you use vim? Isn’t register/peripheral views of Eclipse and VSCode’s Cortex-Debug a deal-breaker?

1 reply
November 2020 ▶ JamesMaxwell

discobot

Hi! To find out what I can do, say @discobot display help.

November 2020

vadim.b

A minor note: NXP features another line of Cortex-M devices: S32K Automotive MCUs for those requiring ASIL certification.

November 2020

Rajah

I have used TIVAWARE, the wonky exe is actually a self extracting zip. It works well for Windows users. However, when I switched to linux, even I had to ‘extract the exe’ manually. Never tried nordic, maybe I should get a dev board to try it out.

November 2020 ▶ off

ranjith

Creator will be good for graphical interfaces. Dont know how easy or tough to maintain these graphical interface codes.

1 reply
November 2020 ▶ ranjith

jcw

Have you folks looked into PlatformIO? There’s an IDE variant, which is probably what most people use, but the link above is for just the CLI core. In my opinion, PIO is crazy effective in combination with vim (my favourite), supports a ridiculous number of platforms, auto-installs and -updates all their toolchains, takes care of all libraries and dependencies, and supports TDD and CI. I’ve been using it for years now, mostly STM32 and ESP32. I’m still bumping into features which were designed “just right”.

I’m not a fanboy, nor do I have a stake in this open source project. I just use it. Daily.

September 2021

Erik

First of all, great overview!
The focus on the software development side is intentional I believe, but I feel that it is very important to also look at the hardware and hardware/firmware crossover point when judging a SDK.
Meaning - the ease of pin function planning and peripheral mapping to those pins and enabling required peripherals. For me, a very important metric is a following workflow: choose any MCU from the manufacturers lineup, configure it for your specific application and get to a compiling sample project with all peripheral set up (clocks, DMAs, interrupt handlers etc) ready for further tuning and application development.
For example, with STM32Cube, setting up a project with Ethernet, FreeRTOS, LWIP, DMA channels and couple of other communication busses is quite trivial. Would be really interesting how other manufacturers SDKs compare to that. For me, often, getting to the point where the MCU feature planning and setup is done is the most frustrating and error-prone part of the development process…

October 2021

riq

great article.
Please, consider creating an updated blog post… perhaps including other vendors as well like Nuvoton (spoiler: might get 0/10)

1 reply
October 2021 ▶ riq

riq

and also include RP2040 sdk (spoiler: might get 10/10)

June 2024

mintisan

thanks for your wonderfull post.