Arduino OS

How would one go about downloading the android OS to an Arduino Uno based board and running it through a LCD TFT display? Android isn't necessary if Ubuntu or a similar program is possible.

An Arduino Uno has 32K of program memory. There's dozens (if not more) of other reasons you can't do it, but that right there ends that idea.

To what purpose?

An arduino board cannot run any OS like that. The hardware specs the arduino has are orders of magnitude away from the requirements.

Use a raspberry pi.

DrAzzy: An arduino board cannot run any OS like that. The hardware specs the arduino has are orders of magnitude away from the requirements.

It is an amusing mental image though :)

Agreed, Rpi is a good candidate here. Or any one of the other linux-capable SOC boards.

How about a PCduino 3B board? :grinning:

marcus_yallow: How would one go about downloading the android OS to an Arduino Uno based board and running it through a LCD TFT display? Android isn't necessary if Ubuntu or a similar program is possible.

Why not buy: this

Under $40. I bought one to see what could be done and it is fairly capable. USB-OTG works great... flash, modem, serial-USB.

Easy to write apps, too.

Ray

Pcduino looks like the thing.

Hi Marcus,

There are two kinds of devices in the 'computer-on-a-chip' family. The names are confusing (at least to me) but the 'microcontroller' family (also called the microprocessor family) includes the Arduino UNO (and MEGA, and MICRO, and ... many, many other microcontroller boards that you see). These are very small 'computers' that are best at doing one thing only. This isn't to say they can't be used to do several disparate things, but for each thing you add to their 'to-do list' they slow down, and after a while, get confused and stop working. Their tiny amount of RAM (1-4K) gets used up, or the program cannot fit in the proportionally small amount of program storage space - known in the Arduino world, as 'flash memory'. It's like the usb drives you may be familiar with - the programs on it stay there. In the Arduino UNO's case, that hypothetical drive holds only 32K! Yikes!

The other kind of device you often see is called (to the best of my knowledge) a 'single board computer', or SBC. The Raspberry Pi is perhaps the best known of these, but there are several members of the "Arduino' family that are in this group. These kind of devices can be 'multi-tasked', that is, run more than a single thing (or process) at a time. This is the kind of device that you could run Android or Linux (or even iOS ... theoretically) on. These devices are programmed in high level languages, and use an installed base of code from the underlying operating system. (To my mind, they are both easier, and more difficult to program.)

I'm not clear on what you want to do. Why do you want to run Android on an Arduino UNO?

The responses on here are fantastic. Thanks all

I intended to say I have an arduino uno based board with the same headers, PCduino 3B. I believe this to be one of the SBC's you mentioned of the arduino family.

in fact i know for sure with addition of a few inexpensive components that linux can be run on an avr. i suspect the same is true of android too. maybe even some version of windows.

in fact i know for sure with addition of a few inexpensive components that linux can be run on an avr

Sure; just add a Raspberry Pi Zero, or one of those C.H.I.P. Both should be less than $10 :-)

Or did you mean the uselessly-slow interpreted x86 versions.

neither. avr is the only processor and only additional components are sd card and ram. this is a well known project from years back. i didnt build one myself but now own one given to me by a friend. i know at of least two other working units. the one i have is running ubuntu mate w/o x and another i am told jaunty. boot time is uselessly slow but once up quite snappy.

board2.jpg

john1993:
neither. avr is the only processor and only additional components are sd card and ram. this is a well known project from years back. i didnt build one myself but now own one given to me by a friend. i know at of least two other working units. the one i have is running ubuntu mate w/o x and another i am told jaunty. boot time is uselessly slow but once up quite snappy.

board2.jpg

Is that a pc? What avr model is that? What ubuntu version? x86 or other?
On much ram is that?

that is the original by dimitry something using m1284. mine is a version modified extensively for faster speed by friend (compsci frreshman) using m32 or m64, i forget. she recompiled for different arm core etc.

not a pc. as mentioned ubuntu mate iirc. modified for no gui. ram is 256k from old 386 mb. i think search for avr linux will take you to the original schematics and source.

Interesting, might have to play with this setup. Why? No reason at all.

AVR Linux Project

john1993: neither. avr is the only processor and only additional components are sd card and ram. this is a well known project from years back.

While it isn't interpreted x86 as westfw mentioned, it is still not running the OS on the AVR. It is interpreting/emulating ARM instructions through the external RAM.

So no, the AVR isn't running linux. The AVR is emulating an ARM processor and various other h/w which is "running" linux.

Marcus, Just stop and think for minute, the AVR on an UNO has 32k of flash and 2k of RAM. It is simply not possible to load linux on it much less android which is another layer on top of linux. There isn't enough ram to handle the frame buffering needed to run the TFT display for android much less android itself.

--- bill

bperrybap: While it isn't interpreted x86 as westfw mentioned, it is still not running the OS on the AVR. It is interpreting/emulating ARM instructions through the external RAM. So no, the AVR isn't running linux.

i find it hard to consider its the ram or the sd card thats "running" the os. SOMETHING is running linux and if anything its the avr being the only user programmable device there.

in a sense virtually ALL modern computers are interpreting or emulating something. some of the latest high performance x86 are actually virtual machines running on dec alpha sub-processors. many cisc and risc mcu at base level have microcoded cores. one can even look at the logic inside avr as a form of microcode defining the real machine.

regarding emulation and interpreting look at java, python, etc.. even compiled programs are not really running the original source code which may be long gone. so maybe "running" is actually in the eye of the beholder. semantics.

not practical? admittedly. running? looks like that to me. interesting and fun? definitely.

bperrybap: Just stop and think for minute, the AVR on an UNO has 32k of flash and 2k of RAM. It is simply not possible to load linux on it much less android which is another layer on top of linux. --- bill

Not only that, but it's lacking a lot of other peripheral stuff that we take for granted in a regular CPU: There's no MMU to support virtual memory, there's no concept of protection rings (i.e. anyone can write directly to hardware), there's no threading support in the CPU, etc.

That said, imagine if you just made a huge array of ATTiny chips with one acting as the kernel and all the others acting as user mode processes. I bet you could put something approximating old school Unix on that. Hmmm....

I wonder how an AVR emulating a PDP-11 running old-style (2.10bsd?) unix would work? (all the missing HW features are implemented in the Emulation, of course.)

More generally, I wonder what is the smallest/fastest VM with "real OS" you implement on an AVR, capable of loading programs from SD-cards and using emulated RAM? OS-9?