5
\$\begingroup\$

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!

\$\endgroup\$
3
  • \$\begingroup\$ not a pic, but any microcontroller??????? \$\endgroup\$
    – Andrew
    Commented Oct 31, 2010 at 0:20
  • 1
    \$\begingroup\$ it's OK for you to edit your question as you refine it \$\endgroup\$ Commented Oct 31, 2010 at 0:26
  • \$\begingroup\$ 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. \$\endgroup\$
    – Thomas O
    Commented Oct 31, 2010 at 0:26

5 Answers 5

5
\$\begingroup\$

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.

\$\endgroup\$
7
  • \$\begingroup\$ i quit =x thanks for your experience \$\endgroup\$
    – Andrew
    Commented Oct 31, 2010 at 2:08
  • \$\begingroup\$ ps.: what can I do with 2 or 3 altoids boxes?! must be an RCA adapter for video. thanks \$\endgroup\$
    – Andrew
    Commented Oct 31, 2010 at 2:09
  • \$\begingroup\$ 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? \$\endgroup\$
    – pingswept
    Commented Oct 31, 2010 at 2:26
  • 2
    \$\begingroup\$ Maybe try the Chumby Hacker Board? adafruit.com/… \$\endgroup\$
    – pingswept
    Commented Oct 31, 2010 at 3:27
  • 1
    \$\begingroup\$ 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. \$\endgroup\$
    – Kellenjb
    Commented Oct 31, 2010 at 17:18
2
\$\begingroup\$

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.

\$\endgroup\$
1
\$\begingroup\$

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.)

\$\endgroup\$
6
  • \$\begingroup\$ atmel maybe???? \$\endgroup\$
    – Andrew
    Commented Oct 31, 2010 at 0:19
  • 1
    \$\begingroup\$ 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. \$\endgroup\$
    – Thomas O
    Commented Oct 31, 2010 at 0:20
  • \$\begingroup\$ @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. \$\endgroup\$
    – Kellenjb
    Commented Oct 31, 2010 at 17:21
  • \$\begingroup\$ 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. \$\endgroup\$
    – Thomas O
    Commented Oct 31, 2010 at 17:23
  • \$\begingroup\$ 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. \$\endgroup\$
    – Kortuk
    Commented Oct 31, 2010 at 21:20
1
\$\begingroup\$

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.

\$\endgroup\$
3
  • 2
    \$\begingroup\$ 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. \$\endgroup\$
    – Thomas O
    Commented Oct 31, 2010 at 0:16
  • \$\begingroup\$ 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. :-) \$\endgroup\$
    – akohlsmith
    Commented Oct 31, 2010 at 0:29
  • \$\begingroup\$ 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. \$\endgroup\$
    – Thomas O
    Commented Oct 31, 2010 at 0:30
1
\$\begingroup\$

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

\$\endgroup\$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.