LearnLearn  Dig into the μnix Wiki       
Discuss  discuss  Talk at the µnix forums
Chat and Participate participate  #munix irc.freenode.net
Build    Build a μnix workstation walkthru  

munix

About the μnix Project

avr insideThe μnix project is comprised of several distinct subprojects while μnix itself is also part of a larger, ongoing project.  μnix, also spelled munix when the character set doesn't support the mu letter, refers to the hardware and firmware solution in toto, as you'll find written "The μnix workstation."  The μnix OS is the firmware that runs on the ATXmega AMPS core that acts like a traditional operating system would, managing memory, scheduling access to resources, and communicating with peripherals.  The μnix workstation also utilizes several other AVR microcontrollers, each with their own specialized firmware and supporting hardware (think clock distribution buffers) to perform tasks associated with a computer system.  These include:

  • ATBIOS
  • Keyboard and mouse controller
  • VGA GPU and display controller
  • Interrupt controller
  • USB controller
  • mini/microSD Flash controller
  • Sound management controller

Each of these MCU's are treated in more detail in other, more technical, sections and most of them have their own dedicated project and source repository.

OpenHouse:
Open-source Home Automation Suite from OpenHousewares, LLC

μnix came from the specification for OpenHouse: a collection of Open-source hardware schematics, board layouts, electronic parts, MCUs, and their controlling firmware that can be used to manage a domicile or commercial building.  The μnix system was designed to play the role of the central control unit and interface to a touch-screen flat panel control system.  While clearly a 32-bit processor would outperform an 8-bit one, it was part of the original OpenHouse design philosophy to keep everything 8-bits, affordable, and readily available.  This is how μnix came to be an amalgamation of solely 8-bit components.

The *NIX in μnix

The ATXmega MCUs run a special type of kernel called an exokernel and support Flash and SRAM-based filesystems.  A custom-developed compiler, assembler, and linker that understands μnix's memory management scheme supports "porting" applications to the μnix OS.  It's not so much porting, since the space allowances are so heavily restrictive, but closer to copying the functionality of a UNIX system and partial POSIX compliance; many small apps do everything.  Someone with Solaris or Linux experience should feel comfortable in a μnix shell. The supported native filesystems AVRFS and E2FS were modeled after Digital UNIX's AdvFS and Sun's ZFS and supports mounting, although the nature of Flash mostly requires a robust failure strategy and obviates the need for tiresome fsck checks.

 

ATmega32A


The microcontroller that would play the role of the system BIOS (we call ATBIOS) has probably had the most scrutiny and time taken on its decision (for various historical reasons lost to the mists of time).  An ATmega328P, the MCU found in the popular Arduino, was originally scoped for the role, but was replaced by it's more-pins-having sibling, the ATmega32A.  Even that 40-pin behemoth requires an 8-bit IO expander to get the job done!

  It may even be possible in the future before the firmware is completely written to change the MCU once again, as the ATmega32's 16MHz top CPU speed causes more work to be done on the IO and Address Buses.