Giter Club home page Giter Club logo

ewokos's Introduction

EwokOS

.Author

.About

A microkernel OS for learning operating system. versatilepb ported well, raspi2 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

Linux:	
	Ubuntu Linux 16.04 with "qemu-system-arm","gcc-arm-none-eabi","gdb-arm-none-eabi"
	installed(can install by "apt")

Mac OSX(with brew installed):	
	brew tap PX4/homebrew-px4
	brew install gcc-arm-none-eabi-49
	brew install qemu
	(set the right PATH environment after installed)

.make and run

"make run": run EwokOS; 
  "qemu-system-arm -kernel build/EwokOS.bin -serial mon:stdio -sd ../rootfs/rootfs.ext2"
  boot kernel file and mount SD card.

"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

kernel/arm/boot.S
kernel/src/mm/kalloc.c
kernel/src/mm/mmu.c
kernel/src/mm/trunkmalloc.c
kernel/src/mm/kmalloc.c
kernel/src/proc.c 
kernel/src/sheduler.c
kernel/src/syscalls.c
kernel/src/mm/shm.c
kernel/src/kipc.c

rootfs/lib/src/stdlib.c
rootfs/lib/src/unistd.c
rootfs/lib/src/ipc.c
rootfs/lib/src/shm.c

rootfs/sbin/init/init.c
rootfs/sbin/vfsd/vfsd.c
rootfs/dev/initfs/initfs.c
rootfs/dev/fbd/fbd.c
rootfs/dev/ttyd/ttyd.c
rootfs/sbin/shell/shell.c

Tips: Don't fall in love with assembly too much;).

. Kernel init memory map

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

ewokos's People

Contributors

misazhu avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.