First of all, the RTOS implementation I chose is FreeRTOS [1]. I don't know exactly why. It just appeared a lot in my studies, it seems to be free and there is a lot of material around. I guess I just had to start somewhere. I surely can implement my own, and maybe one day I'll do that, but starting on something already established, tested and proven to work is much easier, at least when you don't have a lot of experience on the field.
The hardware I chose is the ArduinoMega2560 (actually a Chinese version of it I bought from Aliexpress a while ago). I know Arduino is not the first choice for most professional developers, as they say it hides too much, it abstracts the hardware too much, and I think that's true. I wouldn't make a product based on an Arduino board with software developed on Arduino's IDE, as I believe you're not really in control of your hardware, so weird stuff may happen. Nevertheless, my opinion on Arduino is that it is one of the greatest platforms for testing algorithms, proving concepts and learning new stuff. I know there are a lot of other development boards from all vendors you can imagine that do exactly the same thing Arduino does, but I haven't found one as cheap and available. The amount of peripherals available out there is amazing! From a single button to Ethernet or Wifi connection, Bluetooth, ZigBee, all kinds of motor controllers, 7-seg displays, LCD displays, fire detector, accelerometer, GPS, GPRS und so weiter und so fort. Even Arduino has several versions, from very simple 8-bit microcontrollers with 16KB of Flash and 1KB of RAM (Arduino Nano) to 32-bit ARM Cortex-M3 with 512KB of Flash running at 84MHz (Arduino Due).
As I'm not interested in learning (more) about the microcontroller itself but on the application (RTOS), using Arduino seemed like a good option. I can learn about it all I want, abstracting the hardware, and when I get to the point where porting it to a new hardware is interesting, I'll check under the hood. Arduino MEGA 2560 is based on Atmel's ATmega2560 [2]: 256KB of Flash, 8KB of SRAM, 4KB of EEPROM, 16MHz and a lot of internal peripherals. The Arduino board [3] has 54 I/Os (15 may be PWM outputs), 16 analog inputs and 4 UARTs. SPI and I2C are also supported. Power comes from an external adapter (12V) or from the USB connection and is converted to 3.3V by an in board regulator, thus Vin (from the adapter), 5V and 3V3 are available to the user.
Enough chit-chat!
[1] http://www.freertos.org/
[2] http://www.atmel.com/devices/ATMEGA2560.aspx?tab=overview
[3] https://www.arduino.cc/en/Main/ArduinoBoardMega2560
No comments:
Post a Comment