|Tak tento projekt mě opravdu překvapil. Jedná se o C/C++ IDE odvozené od Code::Block-u a zaměřené speciálně na embedded programování. Podpora ARMů je přímo ukázková. No a protože to je určrno pro embedded vývoj, tak funguje i laděná, podpora assemberu a řada dalších záležitostí nefunkčních/neimplementovaných v Code::Block-u. Jednoznačný palec nahoru.|
Upozorňuji - nejedná se o JAVU, ale o plnokrevné C++. Součástí balíku je i arm-none-eabi toolchain. V mém případě nezajímavé, ale pro někoho jistě podstatná je i přenositelnost celého balíku prostým překopírováním adresáře bez nutnosti nové instalace.
ARM GNU Embedded "bare-metal" Compiler:
History:It all started with the use of Code::Blocks as an IDE for embedded software development as a replacement for other Java written tools which were too slow or unstable.
Impressed by the Scintilla editor capabilities there was a growing wish for more embedded related features instead of the Desktop oriented approach.
Instead of all those options like e.g. a resource compiler or dynamic library builds, we need options for assembler tools and static library buildings. The linker for embedded tools often need more specific information like device type, heap/stack space or linker script settings. And if those features are there then it is also tempting to make it more universal instead of the GCC flavor of Code::Blocks. By supporting all kind of compiler tools the IDE will become a multi target solution.
So the rewriting of Code::Blocks started and the changes needed were so significant that they could only be realized in a forked source base. Once rewriting a lot of code, in all kind of places, Em::Blocks now really supports multiple targets within one project with assembler highlighting for the target in scope. There are dedicated options for assembler and linker tools and the project manager is fully optimized to embedded software design.
By forking Code::Blocks there is one big advantage, both IDE's can by used side-by-side without conflicting errors.
Targets:One of the big advantages of Em::Blocks is that it supports multiple targets within one project. For example, you can have a build configuration targeting the ARM and one targeting the PIC32.
You can use e.g. different targets for debugging and release if the debugging environment is more stable, faster,flexible ...
With the use of virtual targets you can even build all these targets within one click.
Every compiler toolchain has options on global level and you can set options for the default target of a project. If the build target is different from the project default target, the project settings are disabled for that configuration automatically, and only the global and target settings are taken into account for that particular build.
On lower levels, Project/Target, you can see which settings are valid by inheriting options from upper levels. It's even possible to see where those settings are inherited from by the color.