Skip to content

ZhiyuanSue/RendezvOS

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

774 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

RendezvOS

The project was originally named in honor of my brother YuJian, but later changed its name to RendezvOS, which was taken from the word rendezvous, used to express a romantic and expectant encounter.

About YuJian

YuJian is my senior brother, a 2020 master's student in the Department of Computer Science and Technology at Tsinghua University. He has an incredible talent for mathematics and computer science, as well as an extremely hard and diligent attitude to study and work, which is my role model in life

Introduction

This repo is not a complete kernel, but only a 'kernel' of a kernel, which can also be seen as a hal level.

This repo provide the boot ,memory manage, basic thread and task manage.

Of course, I will try to add a linux compatible level for test.

You should add the kernel compatible level into the script/config/config_##arch##.json for your own kernel

kernel compatible level

for example, current test repo is like:

	"RendezvOS_Linux":{
			"use":true,
			"features":[
				"RendezvOS_Linux"
			],
			"depend_module":[
				"log"
			],
			"path":"modules/RendezvOS_Linux",
			"git":"git@github.com:ZhiyuanSue/RendezvOS_Linux.git"
		}

In that git repo, you should provide the syscall function and register the irq handler functions, and the main_init function, which is used for the kernel init part, it is first boot into the RendezvOS's 'main' and then boot into the kernel's main_init, etc.

Otherwise, the code might cannot pass the complie.

user test case

Besides, you should also add a modules/user code, RendezvOS now is in developing, so no filesystem can be used, and I add a 'link_app.py' to generate a link_app.S and using 'incbin' way to get the user test case.

The user repo and the script/make/user.mk is generated by the script/config/user.py and the script/config/user.json. and then using the make user can generate the user elf file.

But, if it's necessery, you should not using the incbin way, and then you need to change the scripts and set the user repo by yourself.

Start(with the test Linux compatible repo)

build env

If you need the env, just run

./build_env.sh

the script will automatically install all what you need, some software might need the password of the computer.

run

First you need to config it,choose an arch, e.g.

make config ARCH=x86_64

now you can choose 'x86_64' or 'aarch64'

if you need the user test cases,just run

make user

which can be configured in script/script/user.json and script/script/user.py then

make run

no more other steps

if you have change the config under script/config/xxx.json, you should reconfig it,but no need to give the arch again

make config

debug and others

using

make run LOG=true

to add the qemu log

as for the kernel log level, you should set in config##arch##.json, and should not set in make cmd

and using

make run DBG=true

to using gdb

and using

make run DUMP=true
make dump

to generate the dump file

and using

make run SMP=1(or any other other number)

to set the smp number

and using

meke run MEM_SIZE=1G

to set the memory as 1G

config

The config file, which is read by configure.py, is the config file for the kernel

if you want to change it ,just see what happened in the configure.py or you can try to build one for yourself.

unlike the toml file in rust, all the configure of rendezvos is set in config file ,and no more work for the kernel developer.

Acknowledgements

I reused some of the code from some open source projects, so I have to acknoledge them - U-boot(https://github.com/u-boot/u-boot): I reuse the dtb part and some definations of u-boot(and it use GPL2.0) - Linux(https://www.kernel.org/): I reuse the errno part from linux,maybe more,for lost of the common sence of my own might comes from Linux

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors