Arduino on any microcontroller?

Hi Arduino fans! I've been using Arduino for a few months now, I have just registered here on forum and this is my first post. Phew! :)

I'm doing a lot of electronics projects with different kind of microcontrollers and hardware.

In a desire to get up and running quickly with my prototypes and proof-of-concepts, few months ago I started wondering if it would be possible to run Arduino sketches and libraries on one of the controllers I'm using right now. Being a creature of action, I took the Arduino source (https://github.com/arduino/Arduino) and spent a few days to adapt it to compile and run on that controller. That's nothing really new, there are ports to controllers other than avr/stm out there already.

What is different with this one is that I also went that extra yard or two and made that port of mine, well, portable. I added hardware abstraction layer which is essentially a list of chip specific functions ("board API") you need to implement together with some mapping structures and startup code.

Once you do that, running Arduino sketches and using libraries is a copy-paste operation, provided those sketches and libraries don't use any avr/stm specific constructs.

So far I used ADXL345, BMP085, L3GD20, LSM303, PWMServoDriver, TCS3472S libraries from Adafruit (and their boards) with no changes to code at all, and a few others I scavenged from Sparkfun and some other places.

There are a few things left to do and, knowing me and myself, in order to get it done I have set up a kind of accountability countdown: an Indiegogo campaign (http://igg.me/at/arduino-xc). You can tell I spent about a day to create it, right? :)

No need to pledge to any perks, just watch that countdown if you are interested in this Arduino flick, and once campaign is over I'll have Arduino-XC source ready on github and you can download it and play with it.

Cheers!

traditionally, the problem with porting Arduino to a new chip is not so much the core libraries, but the MANY additional libraries that don't use the arduino abstractions (for example, libraries that write to the AVR SPI, timer, or I2C peripherals directly.)