Need help with EwokOS?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

MisaZhu
146 Stars 28 Forks Apache License 2.0 1.6K Commits 2 Opened issues

Description

A microkernel os for ARM, well ported on Raspberry Pi(s)

Services available

!
?

Need anything else?

Contributors list

EwokOS

.Author

Misa.Z [email protected]

.About

A microkernel OS for learning operating system. versatilepb / raspi1,2,3 ported well, raspi4 todo....
-mmu
-multi processes
-multi thread
-ipc
-virtual fs service(everythig is a file)
-very simple ramdisk for initrd
-framebuffer device service for graphics
-uart device service
-SD card

.Environment & Tools

QEMU: 
    brew install glib
    brew install pixman
    brew install pkg-config
    download modified qemu-4.2.0 from https://github.com/MisaZhu/qemu_raspi
    ./configure --enable-kvm --enable-hax --target-list=arm-softmmu
    make and make install
Linux:  
    Ubuntu Linux 16.04 with "libglib2.0-dev","libpixman-1-dev","libsdl2-dev","gcc-arm-none-eabi","gdb-arm-none-eabi" or "gdb-multiarch","fuseext2"
    installed(can install by "apt")

Mac OSX(with brew installed):
brew tap PX4/homebrew-px4 brew install gcc-arm-none-eabi-49 (set the right PATH environment after installed) download usb to ttl driver https://www.silabs.com/products/development-tools/software/usb-to-uart-bridge-vcp-drivers brew install python pip install pyserial

How to create/mount ext2 image in macosx ===============prepair================ brew install e2fsprogs brew cask install osxfuse brew install libtool brew install autoconf brew install automake

(download https://github.com/alperakcan/fuse-ext2)
./autogen.sh
CFLAGS="-idirafter/opt/gnu/include -idirafter/usr/local/include/osxfuse/ -idirafter/$(brew --prefix e2fsprogs)/include" LDFLAGS="-L/usr/local/opt/glib -L/usr/local/lib -L$(brew --prefix e2fsprogs)/lib" ./configure
sudo xcode-select -s /Applications/Xcode.app/Contents/Developer
make
sudo make install
=================example==============
dd if=/dev/zero of=img bs=1024 count=16384
mke2fs img
mkdir -p tmp
fuse-ext2 -o force,rw+ img tmp
(copy files)
umount ./tmp
rm -r tmp

.tty debug

install miniterm.py
miniterm.py /dev/xxxUSBTTY 115200

.make and run

"cd system; make/make full(with XGUI)":
  build EwokOS rootfs apps and sd file system.
"cd kernel/build/{arch}; make":
  build EwokOS kernel image.
"make run":
  run EwokOS;
"make debug":
  run EwokOS at debug server-mode.
"make gdb":
  debug EwokOS (debug client-mode).

.commands

Most of commands are in 'rootfs/sbin' directory, like:
ls, ps, pwd, test ......

.Source code read-guide Tips: Don't fall in love with assembly too much;).

. Kernel init memory map

PhyMem        VMem         Desc
----------------------------------------------------
0x00000000    0xFFFF0000   interrupt table
0x00008000    0x80008000   Kernel start (load to)
***           ***          (_init_stack, _irq_stack, _startup_page_dir)
***           ***          Kernel end, Kernel PageDir Table start
+16KB         +16KB        Kernel PageDir Table end.
+128KB        +128KB        kernel malloc base
+32M           +32M          kernel malloc end (size=2M).
......
physical ram top           Share memory start base               
......
MMIO_BASE_PHY MMIO_BASE    MMIO base (arch)
......

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.