All Projects β†’ andrewrk β†’ Clashos

andrewrk / Clashos

multiplayer arcade game for bare metal Raspberry Pi 3 B+

Projects that are alternatives of or similar to Clashos

Rust Raspberrypi Os Tutorials
πŸ“š Learn to write an embedded OS in Rust πŸ¦€
Stars: ✭ 7,275 (+4917.24%)
Mutual labels:  raspberry-pi, aarch64, kernel
Docker Cloudflare Ddns
A small amd64/ARM/ARM64 Docker image that allows you to use CloudFlare as a DDNS / DynDNS Provider.
Stars: ✭ 467 (+222.07%)
Mutual labels:  raspberry-pi, aarch64
Raspberry Pi Cross Compilers
Latest GCC Cross Compiler & Native (ARM & ARM64) CI generated precompiled standalone toolchains for all Raspberry Pis. πŸ‡
Stars: ✭ 261 (+80%)
Mutual labels:  raspberry-pi, aarch64
Ubuntu64 Rpi
ι€‚η”¨δΊŽζ ‘θŽ“ζ΄Ύ3b/3b+ηš„64位系统.
Stars: ✭ 652 (+349.66%)
Mutual labels:  raspberry-pi, aarch64
XNU
Research into porting the XNU kernel to ARM devices.
Stars: ✭ 76 (-47.59%)
Mutual labels:  kernel, aarch64
Fukuro
Simple microkernel (early stage)
Stars: ✭ 18 (-87.59%)
Mutual labels:  kernel, aarch64
Raspberry Pi Pcie Devices
Raspberry Pi PCI Express device compatibility database
Stars: ✭ 444 (+206.21%)
Mutual labels:  raspberry-pi, aarch64
Raspberry Pi Os
Learning operating system development using Linux kernel and Raspberry Pi
Stars: ✭ 11,000 (+7486.21%)
Mutual labels:  raspberry-pi, kernel
Jingos
JingOS - The World’s First Linux-based OS design for Tablets
Stars: ✭ 101 (-30.34%)
Mutual labels:  raspberry-pi, kernel
Core
Ultibo Core
Stars: ✭ 102 (-29.66%)
Mutual labels:  raspberry-pi, kernel
novusk
A kernel written in Rust
Stars: ✭ 61 (-57.93%)
Mutual labels:  kernel, aarch64
Build
Armbian Linux build framework
Stars: ✭ 1,827 (+1160%)
Mutual labels:  aarch64, kernel
Debian Pi Aarch64
This is the first 64-bit system in the world to support all Raspberry Pi 64-bit hardware!!! (Include: PI400,4B,3B+,3B,3A+,Zero2W)
Stars: ✭ 2,505 (+1627.59%)
Mutual labels:  raspberry-pi, aarch64
GENADEV OS
An AArch64 hobbyist OS for the Raspberry Pi 3 B+
Stars: ✭ 14 (-90.34%)
Mutual labels:  kernel, aarch64
Talks
schedule and materials about my presentations
Stars: ✭ 245 (+68.97%)
Mutual labels:  aarch64, kernel
Woa Deployer Rpi
WOA Deployer for Raspberry Pi
Stars: ✭ 898 (+519.31%)
Mutual labels:  raspberry-pi, aarch64
Docker Homebridge
Homebridge Docker. HomeKit support for the impatient using Docker on x86_64, Raspberry Pi (armhf) and ARM64. Includes ffmpeg + libfdk-aac.
Stars: ✭ 1,847 (+1173.79%)
Mutual labels:  raspberry-pi, aarch64
Compute Engine
Highly optimized inference engine for Binarized Neural Networks
Stars: ✭ 138 (-4.83%)
Mutual labels:  raspberry-pi, aarch64
Hampi
HamPi
Stars: ✭ 142 (-2.07%)
Mutual labels:  raspberry-pi
Gvisor
Application Kernel for Containers
Stars: ✭ 12,012 (+8184.14%)
Mutual labels:  kernel

ClashOS

A work-in-progress multiplayer arcade game that runs directly on the Raspberry Pi 3 B+ hardware, written entirely in Zig.

Current Status

"Hello World" OS using the MiniUART. Tested and working on real hardware. It has regressed on real hardware, and I haven't fixed it yet.

Building

zig build

Testing

QEMU

zig build qemu

Debugging with GDB

zig build qemu -Dgdb

In another terminal:

gdb zig-cache/clashos-dbg -ex 'target remote localhost:1234'

Sending a New Kernel Image via Serial

While the Raspberry Pi is running, you can use

zig build upload -Dtty=/dev/ttyUSB0

If using QEMU, use zig build qemu -Dpty and note the tty path. In another terminal window, cat the tty path. In yet another terminal window, you can use the zig build upload command above, with the tty path provided by QEMU. This is compatible with using GDB with QEMU, just make sure to pass the -Dgdb to both zig build commands.

Actual Hardware

  1. Mount an sdcard with a single FAT32 partition.
  2. Copy boot/* to /path/to/sdcard/*.
  3. zig build
  4. Copy clashos.bin to /path/to/sdcard/kernel7.img.

For further changes repeat steps 3 and 4.

Roadmap

  • Interface with the file system
  • Get rid of dependency on binutils objcopy
  • Interface with the video driver
  • Get a simple joystick and button and use GPIO
  • Sound (should it be the analog or over HDMI)?
  • Make the game
  • Build arcade cabinets

Documentation

EZSync 012 USB Cable

  • Black: Pin 6, Ground
  • Yellow: Pin 8, BCM 14, TXD / Transmit
  • Orange: Pin 10, BCM 15, RXD / Receive

How to view the serial data

Where /dev/ttyUSB0 is the device that represents the serial-to-USB cable:

sudo screen /dev/ttyUSB0 115200 cs8

Memory Layout

0x0000000 (  0 MiB) - boot entry point
0x0001000           - shortExceptionHandlerAt0x1000 function
0x0001100           - kernelMainAt0x1100 function
0x8000000 (128 MiB) - top of kernel stack, and bootloader_main function
0x8800000 (136 MiB) - top of bootloader stack
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].