GithubHelp home page GithubHelp logo

itmuse / ewokos Goto Github PK

View Code? Open in Web Editor NEW

This project forked from misazhu/ewokos

0.0 1.0 0.0 25.64 MB

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

License: Apache License 2.0

Makefile 3.02% Assembly 0.71% C 93.78% C++ 1.84% R 0.01% JavaScript 0.01% Objective-C 0.65%

ewokos's Introduction

EwokOS

.Author

.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; 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)
......

ewokos's People

Contributors

misazhu avatar smwikipedia avatar zetalog avatar

Watchers

 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.