Based on树莓派3 and ARMv8-AArch64 architectures, a micro operating system kernel is implemented.
The project is organized in the form of overview + subprojects . overview stores all code. Each subproject uses these codes according to its own needs, including filtering out unnecessary files (excluding them from compilation).
The project is developed using modern C++ language, and the main target architecture is ARMv8 . The compiler used by the project is g++ , so the code will contain some syntax extensions of g++ , such as __attribute__ , __asm__ .
In addition, compile
This project is based on eclipse ( version >= 4.6.3 ). When compiling, you need to use the appropriate eclipse version. On Windows , Linux or MacOS , select File -> Open Projects from File System -> Click Directory , select the directory where the project is located, and open -> Finish
The project has multiple sub-projects, mainly: host , qemu_virt , raspi3 and user_space .
The corresponding goals (architecture) of these configurations are: development based on the host host operating system (mainly used to test memory management and other architecture-independent functions), development based on QEMU simulation (used to test virtual memory, interrupts, etc.), development based on Raspberry Pi 3 (used to comprehensive verification), and program in user space.
All sub-projects are located under subprojects.
The project has configured some special construction goals. See Build Targets for the project.
In the kernel, avoiding the use of global variables can actually be used specifically to initialize all global variables that need to be defined. Those variables are convenient to use only because they have already allocated space during the compile period. If you have to use it, define it once at the definition and redefine it once in the initialization function.
If the project configuration is changed, a new command line must be restarted because all eclipse environments will be exported.
Project progress overview Reference Progress_Current.md
Project record reference RECORDING_NOTE.md
The structure and configuration of the subprojects, refer to subprojects/README.md
In Progress(maybe MIT-LICENCE, but may be closed again, it now is half-open and half-closed).
No, make it POSIX instead.
Follow some coding rules that may be later referenced here
Read the document that may be later published
Using qemu to debug some demostration program
Try to change kernel's code,rerun.
Then, git add -A && git commit && git push !
see here, also see external document.
rsp3-armv8-baremital , the original project.
linux , Linux, officially.
qemu , an emulator that helps a lot.
gVisor , a user space kernel, by Google, in Go.
User Mode Linux(UML) , as its name says.
x2 , an ancient kernel on Bochs.
raspi3 tutorial, by bzt, very useful for beginners.
armv8 hello world, hello world example for armv8, based on QEMU, useful for beginners.