
Originally Posted by
Captain Starfish
Short version:
It's a lot harder. Like "climbing off a kid's pushbike with trainer wheels and into an FA-18" harder.
Long version:
The Arduino is based on decent, basic hardware (the Atmel AVR). There's a huge user base and lots of documentation, support boards, a very very simplified development environment with most of the embedded firmware wiring done for you behind the scenes. Anything you can think of hooking into, pretty much, someone else has already done and written and published a library for. So it's usually a case of pulling in libraries and writing a bit of glue and "business logic" for your application to hang it together.
The Geckos offer a lot more power. ARM 32 bit vs AVR 8 bit core, fast processing, a tonne of peripherals on chip and a lot of flexibility in how to set them up. Their IDE is good, super powerful with all sorts of features and based on Eclipse. It's nowhere as dumbed down as the Arduino, but it just installs - unlike trying to program an AVR without Ardunio, instead using the Eclipse/AVR-GCC/AVRDUDE toolchain. Their starter kit boards give you something to plug into your computer and they have tonnes of example source to play with. They have APIs and a hardware abstraction layer that does stuff for you, sorta kinda like Arduino but nowhere as good. Coding these things is still done in C or C++, and you generally have a fair bit more memory to play with than the Arduinos.
The down side? Unlike the silicon itself (which is totes amazeballs) the API is utter shi t. You usually end up bypassing it, go straight to the chip's reference manual and smash registers directly. Seriously, "just give it to the graduate/intern" is not something you do with a HAL/API and they dropped the ball big time with this. With all that flexibility comes lots of config too, so you end up having to do a fair bit to get anything happening at all. And exactly what that "fair bit" is depends heavily on what you're trying to achieve, so you need to understand a whole lot more than you want to before you can whittle it down to the few lines of magic that get your app working.
I'm glad I made the jump, but:
1. I wish I was doing it on a client's job, that was a lot of hours of bashing my head against a wall I would love to have been paid for; and
2. Since starting on this project I had to do a little interface between a CNC control board and a laser power supply. Gecko? No way, Arduino. And for quick and dirty stuff I'll go back to the Arduino every time because it's quicker and easier by an order of magnitude.