Running Linux on a 8bit AVR

Posted on Thursday, March 29th, 2012 in ARM, AVR by DP

A common assumption is that you need a 32bit processor and lots of RAM to even consider running Linux, but Dimitry pulled it off with just an 8bit AVR.

It is common to see newbies asking in microcontroller forums if they can run Linux on their puny little 8-bit micro. The results are usually laughter. It is also common to see, in Linux forums, asked what the minimum specs for Linux are. The common answer is that it requires a 32-bit architecture and an MMU and at least a megabyte of ram to fit the kernel. This project aims to (and succeeds in) shatter(ing) these notions. The board you see on the right is based on an ATmega1284p. I’ve made one with an ATmega644a as well, with equal success. This board features no other processor and boots Linux 2.6.34. In fact, it can even bring up a full Ubuntu stack, including (if you have the time) X and gnome.

We were suspicious, it’s close to April 1 after all. However there’s lots of pictures, videos, and code to back up the claim.

Via the forum.

This entry was posted on Thursday, March 29th, 2012 at 11:00 pm and is filed under ARM, AVR. You can follow any responses to this entry through the RSS 2.0 feed. You can skip to the end and leave a response. Pinging is currently not allowed.

13 Responses to “Running Linux on a 8bit AVR”

  1. Torwag says:

    There is code as well and it doesn’t look like an April fool.
    If so it was a very hard task to set it up like this!
    Thus, in any way he deserves the credits :D

  2. Fabio Utzig says:

    Hmmm! The kernel messages clearly say that this is running on a XScale processor (Palm Tungsten E2 machine) which is an ARMv5. Output of “uname -a” also confirms that as well as lots of kernel drivers named pxa-2xx-something.

    The title and presentation are misleading.

    • Fabio, read much? Apparently not! I emulate a PXA255 and the kernel needs a machine type, so i tell it TE2, because i was well familiar with the machine and thus could emulate it easiest.

      If you had spent half a minute reading, you could have avoided looking like a fool…Too late now…

      • Fabio Utzig says:

        Oh sorry! My fault.

        I just read what was in the article and watched the video. Did not read your website. Now it makes some sense.

        Still quite unbelievable you could fit everything on an ATmega. I got your code and will take a look.

        And I have no problem in looking like a fool!


    • Steve says:

      Amazing. Truly amazing.

  3. Hardcorefs says:

    The issue is NOT if you can get linux on the cpu, (you can), just make as much as possible a library to be loaded as needed.

    But the fact that linux is event/interrupt driven.

    There comes a time when context switching consumes so much of the computing power, that there is little time left for work.

    POP a little ethernet 100Base in , and you are already burying the cpu just dealing with *SOME* the traffic.

  4. Yonghan says:

    Not to mention it takes almost a bloody two hours to boot up.

  5. Drone says:

    This is like brain surgery with a shovel! Why would someone waste so much time with this?

    • torwag says:

      This is a proof of concept…he claims by himself this is not about serious usage. Simply testing and stretching limits.
      I would say he “wasted so much time” because he can…
      As simple as this…

    • vinod s says:

      Hey Drone, It is a part of his hobby, so you are not supposed to comment that he is wasting his time. :-) Instead he is enjoying his LIFE by these type of hacks. Life is not just earning a lot of money and eating a lot of food . ;-)
      So before commenting, just think twice…

  6. Mike says:

    Just to be clear; this is not Linux on AVR. This is an ARMv5 emulator on AVR, with Linux running in the emulation.

    It’s definitely interesting, and the sort of technical achievement that leaves you scratching your head in bemusement, but again, the description *is* somewhat misleading.

  7. Appu says:

    Very happy to see this. this kind of wastage of time is my dream for quite long.

Leave a Reply

Notify me of followup comments via e-mail. You can also subscribe without commenting.

Recent Comments

  • Daniel: Do I comment here or on FB?
  • Craig B: Shouldn't the default be 00xxx010? Note that bit 0 appears out of order in the documentation. In that case I think the initial value is...
  • JJM: From the datasheet extract you are showing, the power up status should be 00xxx010, not 000xxx01. Bit numbering is misleading since 'measurement resolution' is apparently...
  • Jan Ciger (@janoc200): Hmm, that could actually explain why the three sensor IMU breakout I have bought a few years ago had all sorts of issues - I...
  • Travis: Is it preset to the windows 3 fingered salute?