
Embedded Programming with the GNU Toolchain - ingve
http://www.bravegnu.org/gnu-eprog/
======
CraigJPerry
Check out platformio. E.g. to download and install an arm toolchain with the
cmsis libraries, to be developed with eclipse for an F3 discovery board:

    
    
        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.

[http://docs.platformio.org/en/latest/demo.html#wiring-
blink](http://docs.platformio.org/en/latest/demo.html#wiring-blink)

~~~
fest
Second this as I tried platformio for STM32 recently. I was expecting hiccups
due to arch usually having newer versions of libraries but everything worked
out nicely.

------
fest
Using gcc for ARM with my own makefiles and in some cases, even linker script
has been one of the best sources of hard earned knowledge about embedded
development I posess.

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 :)

------
trymas
Jackpot!

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.

~~~
poseid
indeed, the AVR tools are nice for starters - I wrote some thoughts about
those a while back on my blog: [http://thinkingonthinking.com/an-arduino-
sketch-from-scratch...](http://thinkingonthinking.com/an-arduino-sketch-from-
scratch/)

------
jevinskie
I'd like to mention two projects that have helped me with my embedded
toolchain adventures.

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? :)

[0]: [http://crosstool-ng.org](http://crosstool-ng.org)

[1]: [http://ellcc.org](http://ellcc.org)

------
marianov
I did the transition from arduino ide to command line compilation using a
makefile and avrdude. But the hardware is super easy (and cheap) with arduino
like boards. What hardware does ARM development need? Which prototyping boards
are easier for beginners?

~~~
fest
I'm fond of STM32 Discovery/Nucleo devboards. They have all the required
debugger/programmer hardware on board, can be used as debuggers/programmers
for standalone STM32 MCUs and are very well priced (you can get one for <
15EUR).

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...](http://www.st.com/web/catalog/tools/FM116/CL1620/SC959/SS1532/LN1847/PF260000)

------
poseid
that is a nice initiative! My main resources for open-source ARM programming
were [https://github.com/muccc/arm-
workshop/tree/master/mvp](https://github.com/muccc/arm-
workshop/tree/master/mvp) and [https://github.com/LimiFrog/LimiFrog-
SW](https://github.com/LimiFrog/LimiFrog-SW)

------
wscott
Was considering an embedded project in the near future, so this may be
helpful. In my initial search it was looking like Guix
([http://www.gnu.org/software/guix/](http://www.gnu.org/software/guix/)) would
be very useful.

