David Given Ports FuzixOS, an Ultra-Tiny Interactive UNIX, to the Raspberry Pi Pico
Sitting somewhere between UNIX System 3 and System 5, FuzixOS is a tiny operating system — and perfect for the Pico.
Developer David Given has ported the FuzixOS ultra-compact operating system, built from the UZI project, to the Raspberry Pi Pico — and has released both the source code and a precompiled binary to flash for those who fancy experimenting with it.
The Raspberry Pi Pico, launched late last month, is the first microcontroller from Raspberry Pi — and, as such, it doesn't run the Linux-based Raspberry Pi OS of its single-board computer stablemates. With just 264kB of memory and 2MB of flash, it would take a very compact operating system indeed — and that's exactly what FuzixOS, built from the UZI project and offering something akin to UNIX System 3-through-5 functionality, offers.
"The Pico is an interesting device: Two Cortex M0+ cores running at approximately 130MHz, overclockable up to lots; 2MB of NAND flash [externally]; [264kB] of RAM; and a large collection of interesting hardware, including two high-speed IO coprocessors which allow you to do some really interesting things," Given writes. "The Fuzix port only uses one core but it runs really nicely on it, [with] RAM to spare."
"Compared to the ESP8266 it seems a little slower, but I haven’t touched the overclocking settings yet. Performance is still completely adequate for an interactive Unix. Development was done using the Pico port of OpenOCD. I don’t have a JTAG debugger which will work on the Pico, but that’s fine, because there’s a turnkey image which will let you use a Pico as a JTAG debugger for a Pico! Which is why I bought two. And the debugger was written with the SDK, too."
Given's FuzixOS port supports user binaries of up to 64kB of code and data each, up to 15 processes, a true UNIX filesystem, SD Card support as file storage and swap space, brings up a serial console on UART0, and includes the full set of core Fuzix binaries, including fsck, the Bourne shell, a vi clone, and "some simple games." What doesn't work: NAND flash support is written, but buggy, and multitasking only runs the most recent process.
Given's full write-up is available on the cowlark.com website, along with a binary download to flash on your own Raspberry Pi Pico; the source code, meanwhile, is available on GitHub under the GNU General Public License 2.0 pending its acceptance into the upstream FuzixOS project.