Embedded Programming with the GNU Toolchain
bravegnu.org
bravegnu.org
platformio init --ide eclipse --board disco_f303vc --framework cmsis my-project-dir/
This will download and install the compiler toolchain and the cmsis libraries. It will then setup some convenience scripts, e.g. to compile, link and upload: platformio run --target upload
Although since we said ide, there will be run configurations in the ide project for this already. There are many ide choices like sublime text or my favourite, clion (although the clion product does not support remote debugging yet).Qemu is installed for simulation if you don't have hardware (it does this for other boards too, e.g. if working with some atmel processors then simulavr will be installed). Gdb is installed too.
It comes with a library manager, continuous integration env setup and a few other bits and bobs.
gcc/openocd/gdb for ARM Cortex'es and avr-gcc/avrdude/avr-gdb is basically one of the most consistent toolchains available for a wide range of microcontrollers. It's not terribly hard to learn (hard to master though) and you're not locked into particular IDE.
I only wish I had read a guide like this before :)
I was (still am, though not active) interested in embedded programming. Though for complete newbie entering into arm gnu embedded programming toolchain was very steep learning curve and I was not willing to put huge amount of cash into some proprietary IDE.
So my hobby was limited to atmel's micro-controllers, which were more than I needed for my interest, though it was always interesting to try ARM micro-controllers.
Maybe I need to resurrect plans for programming ARM. Though probably bare metal programming is getting less and less attention, due to great and user-friendly platforms like arduino, raspberry pi (and all ecosystem of super powerful credit card computers), micropython, etc. But it's always a great pleasure to run a bare metal system with greatest performance and power efficiency.
crosstool-ng [0]: I've used this to cross compile the Linux kernel for my PPC PlayStation 3. Believe me, it was easily 20x faster to cross-compile than to wait on the PS3's slow PPU. It has lots of options though and I was never quite sure which ones would lead to a "broken" toolchain.
ellcc [1]: My go-to resource if I want to get a LLVM/Clang toolchain that supports most any target (every host build supports every target) from most any host. My favorite compiler (LLVM/Clang), libc (musl), and STL (libc++), what is there not to like? :)
[1]: http://ellcc.org
I'd probably suggest NUCLEO-F401RE [1], as that series is newer and has out-of-the box mbed support (including it's mass-storage based firmware uploading).
1: http://www.st.com/web/catalog/tools/FM116/CL1620/SC959/SS153...