While i am waiting for my board to arrive i have been browsing the trying to grasp the vast possible ways of programming ARM's. In my eyes there are 2 main ways - bare metal, as it seems to be called, i.e. working directly with the registers, diving in deep into the datasheet, flipping bits and so on, and the second way is through a library (CMSIS, HAL and Standard Peripherals Library).
I understand bare metal to mean no OS. There's a bit of grey area as you move up from a simple hand written event queue dispatcher, through compiled in RTOS libraries moving towards full blown OSes... But I don't see having a HAL or supplier libraries in your code precludes you from being able to call your development bare metal, if that's what you want to do.
With the AVR's i have never used an Arduino, because i like to be more direct with the microcontroller, but with ARM it seems to me that this task will be overwhelming, or more so tedious and time consuming. In this perspective i need to choose something in between, but with no experience i am blind. Then there is the whole dilemma of choosing IDE...
Any advice?
You need to just get started with something. you've picked an eval board, so that's your biggest choice made for now.
Install these (I'm not sure if stm32cube eclipse plugin is already in the SW4STM32 IDE or not... but I prefer it standalone having tried the plugin in atollic, and assume it will be the same in SW4STM32)
http://www.st.com/en/development-tools/sw4stm32.htmlhttps://my.st.com/content/my_st_com/en/products/development-tools/software-development-tools/stm32-software-development-tools/stm32-configurators-and-code-generators/stm32cubemx.htmlPull down some example projects for your board into the IDE and look at them. Then read the getting started PDF for the STM32cube, and see if you can generate a simple project, then load it up in the IDE, add some basic LED flashing functionality, and compile it, ready to debug.
then when your board shows up you can plug it in and see what happens.
Once you have had some wins with this setup, I recommend you start looking at atollic truestudio, which is a general purpose arm cortex IDE. Then start using other suppliers eval boards, start with their proprietary IDE offering, then try moving that to atollic, too...
You can also play with the mbed website (and I recommend you do - the speed with which you can get an example project up and running with mbed and your nucleo is amazing) but really the abstraction that exists in that platform is huge because it tries to embrace boards form every single cortex m supplier into one single unchanging API, so as a result if you ever have any conflicts in mbed it can be terrible just trying to trace down your under the hood hardware configuration to actual register settings.
Anyway, is there any website, article, video, tutorial or something, where all the basic information about starting with ARM is presented? I feel like the information is wayyy to spreaded all over the place and a beginner can feel a bit lost. The hardest think about anything are the fist steps i guess.
ARM isn't a product range of one company, it's a whole ecosystem of companies doing similar stuff with small differentiation. And they are all doing things mostly the same but not exactly... (because they want to make it hard for people to move from them to their nearly the same competitor)
Nobody is responsible for the whole thing, so information is siloed and hard to always get consistently - also open source tools always seem to have breaking changes because open source programmers are apparently useless at architecting anything in any meaningful way that can ever last...
so whatever info you do find has to be up to date or it will be wrong..
that's why, starting out, it's wise to just stick with one supplier's tools and documentation and demo projects for their eval board that you own. dig around their example projects, see what goes on under the hood, then work out how you want to code once you are understanding what you have been given..