The Raspberry Pi Pico is not compatible with Linux, but now supports another Unix-like operating system known as Fuzix. Alan Cox’s Fuzix is a Unix-like operating system for older devices with less performance capacity. David Given’s two recent posts have brought to the attention about the operating system’s compatibility with ESP8266 MCU and Raspberry Pi Pico.
Fuzix operating system has a kernel which is the central core of the system. Also, it has a C compiler and a set of core applications similar to the UNIX filesystem. The Raspberry Pi Pico port comes with many benefits like a well-structured Unix filesystem with its compatibility for SD cards through the SPI interface. Hence, supporting the Fuzix operating system. The full set of Fuzix binaries is available through a serial console to UART0.
Porting Fuzix to ESP8266
The post on “Porting Fuzix to the ESP8266” addresses the MCU’s support for the Fuzix OS. The absence of a memory management unit on the ESP8266 limits the scope of swapping processes in and out, due to address relocation issues. Thus for operating Fuzix on the MCU only one process is taken care of at an instance. ESP8266 MCU’s quicker SD card fixes this issue by reducing the time and makes the overall system efficient to use. David Given says“ the boot time is four seconds. Running a program from the shell takes about 500ms, most of the time spent swapping out the current process.”
The option of using a quick SD card opened up the possibilities of porting Fuzix on Raspberry Pi Pico as well, as it does not have multitasking functionality and NAND flash support. As there is no support for flash memory hence memory is dependent on the SD card. Although the code is sufficient to work with, an improper file system can crash the dhara FTL library.
Fuzix on Raspberry Pi Pico
The Raspberry Pi Pico comes with dual-core Cortex M0+ working at a frequency up to 130MHz, 269kB of RAM; and two fast IO coprocessors. The Fuzix port for Pico only operates on a single core. Compared to the ESP8266, RP Pico is a bit slower, but there could be some improvements if overclocking is explored for the RP Pico. “Performance is still completely adequate for an interactive Unix.”
Some highlights of Fuzix on Raspberrry Pi Pico:
- It provides user binaries using up to 64kB of storage for code and data. This limit can be increased due to the availability of RAM
- The system supports up to 15 processes on the Raspberry Pi Pico
- It has a proper well-structured Unix filesystem.
- SD card support is used for both the filesystem and swap space
- It supports a serial console on UART0
According to David Given “the documentation of Raspberry Pi Pico is excellent, as is the C SDK. The SDK provides a set of libraries that are thin wrappers around the underlying hardware, making most features utter simplicity to use. Unlike the ESP8266 libraries, the Pico SDK is unopinionated. It doesn’t require you to use any of its features if you want to talk directly to the hardware.”
For detailed information on both, visit David Given’s posts on porting Fuzix to the ESP8266 MCU and Raspberry Pi Pico here and there.
Saumitra Jagdale is a Backend Developer, Freelance Technical Author, Global AI Ambassador (SwissCognitive), Open-source Contributor in Python projects, Leader of Tensorflow Community India and Passionate AI/ML Enthusiast
Support CNX Software! Donate via cryptocurrencies, become a Patron on Patreon, or purchase goods on Amazon or Aliexpress
A quick googling shows that nuttx is also running on the pico.
Cool. How does this compare to the orignal Unix hardware in 1969 / 1972?
Current MCUs are much more powerful than the good old PDP11! That’s why I’m pretty certain it’s possible to have a good and usable UNIX-like system on current devices. A year ago I was interested in trying to port 2.11BSD to ESP32 but had little time to work on the design, but since then we’ve seen equivalent solutions now (such as the PDP11 emulator). I still think that having a native UNIX-like OS for such machines would be extremely useful, but without networking it’s pointless nowadays. I also think that ESP32 would be a much better target than ESP8266 because… Read more »
Sprite_tm implemented a PDP11 emulator on the ESP32, and has it running Unix V2.11, inside a miniature VT102 terminal (complete with bluetooth keyboard and networking)
https://www.cnx-software.com/2021/01/27/mini-replica-of-dec-pdp-11-computer-runs-2-11-bsd-unix-on-esp32-soc/
This is the one I was speaking about above 🙂 At least all of these projects confirm the demand for a unix-like OS for those super-powerful, network-connected MCUs.
There is actually that guy who managed to implement a complete BSD on the PIC32: retrobsd on MX and litebsd on MZ series. Other than that he relied quite a bit on microchip libraries, I suppose that should be able to pretty much serve as a basis for a port.
Oh definitely, I had been looking at this quite a few times already.
>I still think that having a native UNIX-like
>OS for such machines would be extremely
>useful, but without networking it’s pointless nowadays.
Networking without memory protection is like going to a destruction derby in a Sinclair C5.
Not really in fact. It’s exactly the same as running a single-process application connected to the network. Any bug in that application can result in any part of the memory being overwritten. An operating system running on an MPU-less machine is just in the exact same situation. The real benefit of MPU is to isolate processes (and the system) from each other, i.e. contain intrusions and limit privilege escalation. And most of the time, single-process applications already have all privileges to do everything, so once they’re networked you know you lose the whole machine if it’s broken into. Thus it’s… Read more »