5

How can I create an device running Linux (Android OS) with video output?

PS. I don't want to use an existing very sophisticated dev board, I want to create one.

Thanks!

Toby Jaffey
  • 28,796
  • 19
  • 96
  • 150
Andrew
  • 275
  • 2
  • 6
  • 11
  • not a pic, but any microcontroller??????? – Andrew Oct 31 '10 at 00:20
  • 1
    it's OK for you to edit your question as you refine it – Toby Jaffey Oct 31 '10 at 00:26
  • You might be able to use a more powerful microcontroller which is based on an ARM architecture, such an STM32 with external memory. You'd need at least 1 MB to even boot Linux to a shell prompt, and probably 32 MB+ to get Android up and running. However, that being said even if it does work, it will cost far more than a CPU+memory solution would, or a simple solution like the BeagleBoard which Joby Taffey suggested. – Thomas O Oct 31 '10 at 00:26

5 Answers5

5

I've been doing something like this over the course of about 4 of the last 6 months (I worked on some other stuff in between). Building my own Linux board has been a tremendous learning experience, but it's also been quite challenging.

Here are some things I wish I knew before I started:

  1. Generally, BGA packages mean you have to use fine-pitch traces and vias, and you it's difficult to assemble the boards yourself. Even if you were to succeed in soldering a BGA yourself, if you had a problem, you wouldn't know if it was due to bad soldering or bad design. The worst problem, though, is that this makes iterating on your design expensive-- around $1000 and 15 business days per rev if you live in the US.

  2. For the love of William Shockley, start with a reference design with Android support (well, just Linux in my case). My board is based off the Atmel AT91SAM9G20 eval kit; that's saved me a great deal of headache.

  3. Use the U-boot bootloader. It's the dominant one, which means that you can get support in more places.

  4. Before you start laying out a board, think very carefully about how to position the components to minimize trace length. I did this to some extent, but not as much as I should have.

  5. Buy the dev kit that is most similar to what you're planning to build, and build the bootloader and kernel from source. That will teach you a lot. If you're serious about video, I would probably try to validate whatever hardware platform I chose before laying out a board.

Good luck.

pingswept
  • 12,581
  • 4
  • 46
  • 64
  • i quit =x thanks for your experience – Andrew Oct 31 '10 at 02:08
  • ps.: what can I do with 2 or 3 altoids boxes?! must be an RCA adapter for video. thanks – Andrew Oct 31 '10 at 02:09
  • Can't do much with just 2 or 3 Altoids boxes. Maybe make 2 or 3 high-voltage, low-value capacitors? Or some sort of storage system for mints? – pingswept Oct 31 '10 at 02:26
  • i want to do semething like the ybox http://www.ladyada.net/make/ybox2/ – Andrew Oct 31 '10 at 02:43
  • 2
    Maybe try the Chumby Hacker Board? http://www.adafruit.com/index.php?cPath=46&main_page=product_info&products_id=278 – pingswept Oct 31 '10 at 03:27
  • 1
    These comments have nothing to do with the original question. Pingswept, as a mod you should be identifying things like this and suggesting he creates a new question instead of answering him here. – Kellenjb Oct 31 '10 at 17:18
  • That seems heavy-handed to me, but I'm happy to go along with it if Andrew wants to turn his comment into a question. – pingswept Oct 31 '10 at 19:53
2

TI has several video processors in their DaVinci series, some of which combine a microprocessor with a video system, with or without DSP, that will run Linux. For example, the TMS320DM365 includes an ARM9, and an H.264/MPEG4/MJPEG video accelerator. It can output 720p H.264 and MPEG4 at 30 fps.

I know you aren't interested in a development board, but just FYI, the Leopardboard 365, which uses this chip, costs only $129, and the schematics are available on-line so you would be able to adapt them for your own project.

The two varieties of Linux that have support for the DM365 are Ubuntu and MontaVista. Don't know anything about Android.

tcrosley
  • 47,708
  • 5
  • 97
  • 161
1

Not possible. PIC microcontrollers are not 32-bit, nor do they have anything even close to the requirements of even the smallest Linux kernel, let alone userspace.

Even PIC32s still do not have the resources that even a tiny Linux kernel requires.

Toby Jaffey
  • 28,796
  • 19
  • 96
  • 150
akohlsmith
  • 11,162
  • 1
  • 35
  • 62
  • 2
    PIC32's are not ARM processors. They are a mix of MIPS and a few custom features. An STM32 is an example of a microcontroller with an ARM processor. – Thomas O Oct 31 '10 at 00:16
  • Ugh, that was a rather large think-o. Yes, you're absolutely right, they're MIPS based, not ARM based. Sorry for the misinformation. The other points are still valid, though. :-) – akohlsmith Oct 31 '10 at 00:29
  • Don't worry we all have them... like my "why isn't my interrupt firing... oh crap it's plugged into the wrong pin" moment which occurred after 2 days debugging a problem. – Thomas O Oct 31 '10 at 00:30
1

I hate to put a downer on your idea, but I don't think you could get a PIC running Linux and certainly not Android.

You may just about be able to get a PIC32 running a basic RTOS, but not Linux - as the PIC32's don't have enough memory (128KB maximum.)

Thomas O
  • 31,546
  • 57
  • 182
  • 320
  • atmel maybe???? – Andrew Oct 31 '10 at 00:19
  • 1
    Point me to an Atmel AVR (or AVR32) with at least 1MB onboard data memory and a supported architecture. They might exist, but I don't think so. – Thomas O Oct 31 '10 at 00:20
  • @Thomas, you can always add memory to a microcontroller. You can then have your micro start up on a small amount of system memory and boot from the memory connected. The issue with getting linux to run on it is compiling it to do what you want it to do. – Kellenjb Oct 31 '10 at 17:21
  • Well, yeah, but why would you go to the bother of adding external logic to get a few megabytes extra when you could use a processor designed for the task in the first place? Microcontrollers are not CPUs and are not designed to run big kernels like Linux. – Thomas O Oct 31 '10 at 17:23
  • by nature of being a processor the memory must be external, at least to my knowledge. Sounds like in both cases you need external memory. – Kortuk Oct 31 '10 at 21:20
  • Some mobile processors have memory on the die, or in a die-on-die configuration. – Thomas O Oct 31 '10 at 22:52
1

Microcontrollers are complete computers (RAM + CPU + storage + I/O) all on a single chip.

So far as I know there are no Linux ports to microcontrollers which can run without extra external RAM - so Linux needs 2 or more chips (except in FPGAs, perhaps).

If you are looking for a well supported Linux dev board with video output, the beagleboard is a popular choice.

Or, you can build your own. But, you'll also need some kind of video processor and video RAM to produce anything more than basic graphics.

On top of all that, Android is big - really big.

Some relevant tags: android, pic, microcontroller, linux

Toby Jaffey
  • 28,796
  • 19
  • 96
  • 150