cancel
Showing results for 
Search instead for 
Did you mean: 

How do I choose which development toolset to use?

Jack Juni
Associate II
Posted on February 01, 2018 at 17:40

Just getting into STM32 programming and am bewildered by number of development tools, so many of which seem mutually exclusive.  Is there some sort of roadmap, guide to selection of tools?  Does STM32CubeProgrammer supersede STM32CubeMX?  Where does the recently acquired TrueStudio fit in?  What criteria should be used to decide where to commit limited learning time?

#software-development-tools #development-tools
11 REPLIES 11
Posted on February 01, 2018 at 18:09

A lot of it has to do with personal preference and development style.

I find all IDE to be very similar in function, but I'm coming from an understanding of 'Assemblers, Compilers, Linkers and Loaders', and I have editors, merge tools, file managers and source code analysis tools that I use outside of the IDE when those are more convenient or simply work better.

I like Keil because I can easily clone or copy projects into new directories without the entire thing having kittens.

Tips, Buy me a coffee, or three.. PayPal Venmo
Up vote any posts that you find helpful, it shows what's working..
henry.dick
Senior II
Posted on February 01, 2018 at 18:37

Tool choices are highly personal and institutional if you do so for hire.

I use keil and iar, as that's what most of my customers want and more importantly there is someone to yell at if the tool is to blame. If your livelihood is on the stake, free tools are simply too expensive.

With that said I use coide / gcc for personal projects. I like it's ability to configure modules flexibly and graphically - though my reliance on vendor libraries is minimal now. Not to mention that the price is right.

Jack Juni
Associate II
Posted on February 01, 2018 at 19:40

Thanks for the rapid replies!

At this point, I'm pretty free to choose the direction we will follow for toolchain.  My own experience has almost all been with IDEs, so I have a preference for the speed and convenience of having it all at my fingertips.  That's not to say that I couldn't be swayed by a good argument.  Our company develops for manufacture, but with a heavy emphasis on rapid (i.e. insanely short) development times.  Programming microcontrollers is only a small part of what I do,  Sadly, this means that I really do not have a lot of time to invest in learning a toolchain, even though I am well aware that such time likely would pay off well in the long term.  Here, short-term results are king.  I am, therefore, highly dependent on using example code and cutting & pasting to get things working.

I have used the STM32 core libraries for the Arduino IDE, which are great except for two things:  1)  Cannot access lower-level functions (could not get inverse PWM signal for example) and, 2)  No real debugging.

Tried mBed, but it's libraries do not seem to be compatible with ST's example code.  Used TrueStudio, but am unsure where that fits in with ST's long-term plans.  I know they bought it, but they also just released STM32CubeProgrammer.  How does 

STM32CubeProgrammer fit with STM32CubeMX with STM32Cube?  If I use CubeMX or CubeProgrammer, do I also need to learn and use a full toolchain like Keil?

henry.dick
Senior II
Posted on February 01, 2018 at 20:00

It seems to me that you meant something slightly different than tool chains when you talked about took chains. 

The libraries you talked about can be blended with the tool chains of your choice. Unless you use some weird tool chains. So if your concern is about the compatibility of your tool chain of choice with those libraries no need to worry. 

As as to your first complaint about the arduino port of the stm32, end of the day you are running gcc and anything you can do with gcc can be done with that port. No exception. 

Posted on February 01, 2018 at 19:21

>> and institutional 

This is a very strong driver. If the organization has picked a specific tool chain you use that, they may be significant invested in tools, and have a lot of resistance to change. There may be legacy projects that need specific tools, or things which are obsolete.

When code is delivered by third-parties this might also constrain the tools being used. You might need to continue using those tools as part of the license and support contracts, and frankly it might be a more effective use of time not to fiddle and mess with stuff that is otherwise working and functional.

The trick in all these things is to be nimble and adaptive, with a broad understanding of the available tools and appropriate application of those tools.

Tips, Buy me a coffee, or three.. PayPal Venmo
Up vote any posts that you find helpful, it shows what's working..
Posted on February 01, 2018 at 20:50

STM32CubeProgrammer and 

STM32CubeMX are totally different tools with different purposes. CubeProgrammer is just that it takes the produced binary file and programs that onto the MCU. Not much more. CubeMX is used to configure the MCU hardware that you want to use, including the pinout.

I recommend (and personally use the following combo)

-STM32CubeMX - to start a project, configure the IO, the different hardware blocks etc. Then i generate a project for my toolchain.

-System Workbench for STM32 (

http://www.st.com/en/development-tools/sw4stm32.html

 ) as the editor and IDE that i use to edit the C code and actually compile and debug the project.

You should be able to change the System Workbench to something else for the IDE, but you will most likely have to use STM32CubeMX and CubeProgrammer no matter which IDE you choose.

-Andriy

Posted on February 02, 2018 at 23:15

Ahh!  I had a totally wrong idea of what STM32CubeProgrammer is for.  I thought it was for writing programs rather than for transferring them to the chip.  Thanks for setting me straight.

I was previously unaware of what SW4STM32 was for.  I see that it is Eclipse-based.  Since ST has just acquired Atollic TrueStudio, another Eclipse-based IDE, are the two going to be merged?  

Posted on February 02, 2018 at 23:22

The compatibility information is a big relief.  Thanks!

But, I can't use the HAL libraries with the Arduino port.  Or, is there a way?  If so, then the best for me might be to use the Arduino IDE for quick and dirty prototyping and STM32CubeMX and

SW4STM32

 for the production version, with STM32CubeProgrammer to get the code into flash.

Posted on February 03, 2018 at 00:17

two choices:

1) once your arduino code is working, you can replicate the arduino project, including whatever library your stm32-arduino flavor uses, in your favorite IDE/toolchain.

For example, I use stm32duino and xduino from time to time, and then move over to coide for development.

2) alternatively, you can simply develop code natively. I have a middle layer of my own that allows me to either work on SPL or my own version, without changing user code. all I need to do is to layer in the right middleware + right libraries and I'm done. I can do this with STM32, LM3S/TM4/MSP432 and LPC parts.

actually most of my code will work, with minor modifications, across those parts and within part families.