TheUno and BigBrother vs Arduino Solutions

The Arduino is an interresting evaluation board for all who want to start playing with a microcontroller thanks to many source codes, tutorials and forums which are available today to help you. However, the simplicity of the Arduino hides some defects. This pages proposes to discuss about the two main points on which we think the Arduino is particularly a bad solution for people who want to learn electronics.

1. Arduino has no debugging capabilities


This is the main reason you will leave the Arduino: there is no debugging capabilities. At the very beginnings, this is not really a problem (no need of debug to make a LED blinking !), but you will quickly need to spy the software, execute the program step-by-step, etc, to correct the possible anomalies in your code.

Some people will say that a serial link is available and that you can add traces in your application to spy the execution. Do you really think that it is an acceptable solution ? Of course no, it modifies the code, slow the application, and can't be really useful when there are too many traces sent back to the computer.

This is the main reason MyFreescaleWebPage created TheUno and BigBrother evaluation boards, replacing the bootloader and the serial link of the Arduino by the USBDM, an integrated and open-source debugging cable.

The USBDM enables you to load and debug your application by simply running your program step-by-step or inserting breakpoints. Of course it is also possible to show and modify the content of the memory and registers of the target microcontroller. The USBDM is a professional solution to debug your applications.

2. TheUno & BigBrother help you learning microcontrollers


You get the Arduino to learn microcontrollers. But in fact, the Arduino hides all the important aspects of microcontrollers: memory, registers, interrupts, etc. Why ? This is because of all the libraries distributed with the Arduino environnement and also because of some parts of the code which are hidden to you.

For examples, did you already wonder about the "delay()" function provided by the Arduino environment and how it works ? Do you know how the "setup()" and "loop()" functions are called ? Do you think the microcontroller is executing pure C++ code ? Do you know where your variables are declared in the microcontroller ? Many people working with Arduino are not able to answer to these simple questions, and you can't say that you are able to program a microcontroller if you don't master several aspects of microcontrollers architecture and programming techniques.

Of course, this website is proposing libraries. But those libraries are written in order to be integrated in your final applications. There is no use of special functions such as "digitalWrite()" and "digitalRead()" to manipulate the pins. MyFreescaleWebPage provides libraries like they are written in professional solutions.

3. And so many additional defects on the Arduino


The poor performances of the functions provided by the environment, the bad way of coding in some parts of the Arduino code, the impossibility to change the clock frequency, the declaration of the Serial link used to communicate with the computer, the presence of the bootloader in your final design, the limited list of microcontrollers on which you can port your applications,...

Conclusions


The Arduino evaluation boards are simple and appreciated by beginners, but are in fact some bad solutions if you want to learn electronics.

TheUno, BigBrother and BigBrother-USB are compared below to some Arduino boards. We remember the possibility to perform onboard debugging on our evaluation boards and the portability of source codes between Freescale microcontrollers.

Arduino UNO R3 Arduino Mega2560 R3 Arduino MegaADK TheUno BigBrother BigBrother-USB
Flash 32kB 256kB 256kB 64kB 256kB 128kB
RAM 2kB 8kB 8kB 4kB 32kB 16kB
EEPROM 1kB 4kB 4kB 2kB
Core Speed 16MHz 16MHz 16MHz 18Mhz 24MHz 24MHz
Onboard debugging
I/O 20 70 70 20 40 (2 shield slots) 40 (2 shield slots)
IIC 1 1 1 1 1 2
SPI 1 1 1 1 2 2
UART 1 4 4 2 2 2
ADC 6 16 16 10 24 12
PWM 6 15 15 6 14 8
CAN
USB