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

The μ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:
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.
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.

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.