[ell-i-developers] arduino IDE sucks

  • From: Eero Hakala <eero.k.hakala@xxxxxxxxx>
  • To: ell-i-developers <ell-i-developers@xxxxxxxxxxxxx>
  • Date: Sun, 27 Jul 2014 23:36:09 +0300

Hi gents, I was trying to make a baseline with 4.8 versions both in GCC and
arm-none-eabi and found some interesting things

Makefile based environment
- compiles without errors with same compiler as the IDE based version!

the Arduino IDE based system
- doesn't find all stuff (4.8.3 20140228)

-c -std=gnu++0x -g -Os --param max-inline-insns-single=500 -Wall
-ffunction-sections -fdata-sections -fno-common -nostdlib -mcpu=cortex-m0
-mthumb -DF_CPU=48000000L -DARDUINO=156 -DELLI_STM32F051_ELLDUINO
-DARDUINO_ARCH_STM32 -fno-rtti -fno-exceptions -fno-threadsafe-statics
/tmp/build4447791685570882080.tmp/sketch_jul27a.cpp -o
     [exec] In file included from
     [exec]                  from
     [exec]                  from sketch_jul27a.ino:1:
fatal error: stm32f0xx.h: No such file or directory
     [exec]  #include <stm32f0xx.h>
     [exec]                        ^
     [exec] compilation terminated.

linux32: also here veery interesting stuff this is actually a real bomb!!

the Makefiel based system from Runtime/stm32/build folder is using system
compiler (4.8.3 20131129) as instructed:

make[2]: Entering directory `/home/eero/Ell-i/ng-elli/Runtime/stm32/build'
arm-none-eabi-gcc -c -std=c99 -g -Os --param max-inline-insns-single=500
-Wall -ffunction-sections -fdata-sections -fno-common -nostdlib
-mcpu=cortex-m0 -mthumb -DF_CPU=48000000L -DARDUINO=1.5.4
-I../cores/arduelli -I../system/stm32/inc -I../system/stm32/CMSIS/Include
-I../variants/ellduino   -c -o startup_stm32f0xx.o

BUT the Arduino IDE based version is using compiler that was brought in
with the toolchain even if the compiler was defined as system compiler:

So what on earth is going on here?

For now its quite evident that we are not going to support IDE based
environment but instead we should concentrate making good documentation of
how to use the Makefile based system!

And we should use the KISS principle, just as the guys in RIOT-OS are using:
- Standard programming in C or C++
- Standard tools such as gcc, gdb, valgrind
- Minimized hardware dependent code
- Zero learning curve for embedded programming
- Partial POSIX compliance. Towards full POSIX compliance.
- Develop under Linux or Mac OS using the native port, deploy on embedded


Other related posts: