A microkernel os for ARM, well ported on Raspberry Pi(s)
.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 pyserialHow 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) ......