vmwOS - an operating system for the Raspberry Pi

This forums is for OS project announcements including project openings, new releases, update notices, test requests, and job openings (both paying and volunteer).
Post Reply
deater
Posts: 4
Joined: Tue Jan 14, 2020 10:21 am

vmwOS - an operating system for the Raspberry Pi

Post by deater »

Hello,

I thought I'd announce my project here. I've been working on it for a while.

http://www.deater.net/weave/vmwprod/vmwos/

It is vmwOS (my initials) which runs on the Raspberry Pi. Most models 1A/1B/2B/3B etc. There is code to run on the pi4 but that's not merged yet.

The OS is a very simple UNIX-like OS. It's written in C and you cross-compile from Linux. It has minimal multi-core support. It doesn't support the MMU/Virtual-memory but it does set up the caches and provides kernel/user memory protections.

Userspace programs are mostly Linux-syscall compatible, but are in the bFLT format. I have a custom minimal C-library "vlibc" that the userspace executables link against.

Work is ongoing to support all of the hardware on the Pi. It does support serial port, PWM audio, HDMI framebuffer (including ANSI-compatible console), temperature, random number generator. No USB support, so no keyboard (it does support hooking a PS/2 keyboard to GPIO lines).

Work continues to get a more impressive userspace. I've almost got a full text editor going, sorting out some last bugs with that.

Also, the OS was the basis of the "Pi on Fire" demoscene demo that won 2nd place at Demosplash 2019.

Anyway not sure if anyone would be interested in all this, but thought I'd post in just in case.
User avatar
bzt
Member
Member
Posts: 1584
Joined: Thu Oct 13, 2016 4:55 pm
Contact:

Re: vmwOS - an operating system for the Raspberry Pi

Post by bzt »

Hi,

Welcome to the forum! It is always a pleasure to meet someone developing a hobby OS for non-x86.

Your project looks great! Your site looks like from the 80's a bit if you don't mind me saying that (this is not necessarily a bad thing! Simple, full of info, no JS bloat).

About the missing USB support, you might want to take a look at CSUD (MIT license). Minimal dependencies (basically malloc), and it has an USB keyboard driver. Or the more advanced uspi (built on the former, GPL'd), which has a network driver too.

Cheers,
bzt
User avatar
nyc
Posts: 17
Joined: Sun Dec 29, 2019 10:59 pm
Libera.chat IRC: nyc

Re: vmwOS - an operating system for the Raspberry Pi

Post by nyc »

deater wrote:I thought I'd announce my project here. I've been working on it for a while.
http://www.deater.net/weave/vmwprod/vmwos/
It is vmwOS (my initials) which runs on the Raspberry Pi. Most models 1A/1B/2B/3B etc. There is code to run on the pi4 but that's not merged yet.
The OS is a very simple UNIX-like OS. It's written in C and you cross-compile from Linux. It has minimal multi-core support. It doesn't support the MMU/Virtual-memory but it does set up the caches and provides kernel/user memory protections.
Excellent to see your work on ARM. Where do you plan on going from here? Virtual memory? RISC-V? More filesystems?
deater
Posts: 4
Joined: Tue Jan 14, 2020 10:21 am

Re: vmwOS - an operating system for the Raspberry Pi

Post by deater »

bzt wrote: Your project looks great! Your site looks like from the 80's a bit if you don't mind me saying that (this is not necessarily a bad thing! Simple, full of info, no JS bloat).
I'd like to say it's a certain design aesthetic, but really I've been coding my webpages with raw HTML in a text editor for nearly 25 years now and have never gotten around to learning anything fancier.
bzt wrote: About the missing USB support, you might want to take a look at CSUD (MIT license). Minimal dependencies (basically malloc), and it has an USB keyboard driver. Or the more advanced uspi (built on the former, GPL'd), which has a network driver too.
Thanks for the pointers, I was aware such things existed but hadn't really taken the time to look at it. For now I've been fine using a serial port to run things, but it might be nice at some point to use a machine standalone and while I do have the PS/2 keyboard to GPIO adapter it's fairly resource-intense to more or less bitbang the PS/2 protocol.
deater
Posts: 4
Joined: Tue Jan 14, 2020 10:21 am

Re: vmwOS - an operating system for the Raspberry Pi

Post by deater »

nyc wrote: Excellent to see your work on ARM. Where do you plan on going from here? Virtual memory? RISC-V? More filesystems?
I have a student working on doing some memory systems research (poking around the caches/VM/DRAM) although to be really interesting some of that work would involve poking around in the firmware.

My personal goal right now is to figure out enough of the GPU to get some 3D graphics going, the Pi family actually has a relatively powerful GPU on board. There are people who have figured out enough to get triangles/shaders going while talking directly to the GPU from inside of Linux and I wanted to see if I could do that from vmwOS.

To make development easier though I am working on getting a text editor, writeable filesystem, and file transfer going so I can work on the GPU stuff w/o having to constantly swap SD cards. Editor is finally working. I was looking into Zmodem to transfer files over the serial connection and didn't realize what a licensing mess that was. GNU lrzsz is available but the code is the most horrific I've seen in years. Much more likely I can get zmtx/zmrx going but that has some licensing issues and hasn't been updated since the 90s.
User avatar
bzt
Member
Member
Posts: 1584
Joined: Thu Oct 13, 2016 4:55 pm
Contact:

Re: vmwOS - an operating system for the Raspberry Pi

Post by bzt »

deater wrote:My personal goal right now is to figure out enough of the GPU to get some 3D graphics going
On that note, https://github.com/LdB-ECM/Raspberry-Pi ... ES2_Rotate
deater wrote:...file transfer going so I can work on the GPU stuff w/o having to constantly swap SD cards. Editor is finally working. I was looking into Zmodem to transfer files over the serial connection and didn't realize what a licensing mess that was.
Yep, I run into that issue as well. There's an already working FOSS solution though: raspbootin (for AArch32) and my rewrite that also supports chainloading, raspbootin64 (for AArch64). On the PC side they both use the same, pretty simple utility raspbootcom to send the kernel. If you have troubles compiling it with latest compilers under Linux (I had), see my rewrite of the sender, or you could try the Java kernel sender.
The protocol is extremely simple:

Code: Select all

"\003\003\003" (RPi to PC, ready to accept)
N, four bytes LE (PC to RPi, size of kernel)
"OK" or "SE" (RPi to PC, okay or size error)
N bytes (PC to RPi, the image)
but if you want, you can replace this easily by some BBS modem protocol if you'd like and use minicom on the Linux side (GPL'd and supports multiple file sender protocols).

The rpi-boot source could be useful too, it uses a slightly modified version of the protocol above (with checksums), and it includes a sender that can be compiled with Win32 natively. I would not recommend to use rpi-boot as a tool though, because it's a bit bloated imho, but it's perfect to learn from its source.

Cheers,
bzt
deater
Posts: 4
Joined: Tue Jan 14, 2020 10:21 am

Re: vmwOS - an operating system for the Raspberry Pi

Post by deater »

I've released version 0.20 of vmwOS. It mostly involved adding many layers of abstraction.

It has a full VFS filesystem abstraction layer, supporting multiple filesystems and both reading and writing. Currently though the only supported writable filesystem is DOS3.3 (an old filesystem for Apple II computers from the early 1980s).

There is also now full character and block device support.

Next tasks are probably adding proper locking to the VFS layer, merging in some fat32 and SD-card code, and then seeing if we can get 3d going with the GPU.

I threw together a movie showing off some of the new features:
https://www.youtube.com/watch?v=fc-EOIWgHr4
Post Reply