deater / vmwos Goto Github PK
View Code? Open in Web Editor NEWa simple homebrew operating system for the Raspberry Pi
License: GNU General Public License v2.0
a simple homebrew operating system for the Raspberry Pi
License: GNU General Public License v2.0
The VMWos -- an operating system by Vincent M. Weaver History: ~~~~~~~~ This project originated from code written for the ECE598 Advanced Operating System class at the University of Maine. Building: ~~~~~~~~~ You will either need to build natively on an ARM machine or cross compile. Quickstart Debian: apt-get install genromfs gcc-arm-none-eabi To build natively, edit Makefile.inc and make the CROSS variable be empty. Otherwise, edit Makefile.inc to point to your cross compiler. It is possible to build this on OSX and Windows, I should update with instructions. Running "make" should build kernel/kernel.img and kernel/kernel7.img Installing: ~~~~~~~~~~~ You need an SD card with an existing OS install that you don't care about (raspbian works great). Mount the boot directory on that SD card, and copy the existing kernel.img to a safe place. Now copy your vmwos kernel/kernel.img and kernel/kernel7.img overtop the existing kernel.img and kernel7.img Required Hardware: ~~~~~~~~~~~~~~~~~~ Currently VMWos runs on any Raspberry Pi Model1 ( A, B, B+ or A+), Model 2, and Model 3 I have not tested on Pi Zero. It has a driver that cna output to the HDMI screen, but that is disabled by default currently (it is slow and buggy). It has no support for USB input. To get full input/output you will need to get a USB/Serial adapter and connect to another machine running a terminal program such as minicom. Configure your serial device for 115200,8N1 Using: ~~~~~~ It is currently fairly limited. Assuming you have booted properly into the shell, you can run "help" to get a list of supported commands. Also "ls" should work. Compiling user programs: ~~~~~~~~~~~~~~~~~~~~~~~~ See the examples in ./userspace Right now you need to create a binary with -fPIC and use objcopy to create a RAW binary. I can't seem to find a working ARM binflt toolchain. There is a simple C library included ("vlibc") For more information: ~~~~~~~~~~~~~~~~~~~~~ See http://www.deater.net/weave/vmwprod/vmwos Changes that break older Bare-metal ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ See README.hardware It is hard running a backward compatible bare-metal OS on Pi as things keep changing. Some of this is mitigated if you parse the device tree found on newer setups. Hardware Changes: ================= + On 1GB systems the IO_BASE moved from 0x20000000 to 0x3f0000000 + Processor architecture changed from ARMv6 to ARMv7 to ARMv8 + On Pi3 the pl011 is hooked to bluetooth, so mini-uart is the default (pl011 is mapped to gpio 32/33) + ACT LED: Model B was GPIO16, Active Low On 2/B+/A+ was GPIO47, Active High On 3 it is on an i2c/GPIO expander controlled by GPU + TODO: The Framebuffer address moved on Pi3 (?) + Pi3 the Arasan MMC interface is enabled, and mapped to GPIOs 48-53, Used by wifi? + Pi3 GPCLK2 is mapped to GPIO 43. + Pi2/Pi3, firmware brings system up in HYP (hypervisor) mode Firmware Changes: ================= + Older firmware, the framebuffer byte order was GRB instead of RGB + Older firmware, the UART_CLOCK was 3MHz, it's 48MHz on newer + Older firmware, did ATAGS, newer use device-tree + Have issue on older-firmware loading kernel image >15MB not sure if bug or not Vince Weaver [email protected] 5 March 2018
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.