mirror of
https://github.com/drasko/codezero.git
synced 2026-01-12 02:43:15 +01:00
Changed l4id_t type to integer to recognise negative id values like L4_ANYTHREAD. Added an extremely simple script that cleans and builds everything in right order. Increased boot pmds by one: This is due to the fact that if the 1MB initial allocation area of the kernel is not 1MB-aligned, it is ought to be mapped from the middle of one MB to next, which requires 2 pmds. modified: .gdbinit modified: README new file: buildall.sh modified: include/l4/arch/arm/types.h modified: include/l4/generic/scheduler.h modified: loader/kernel.S modified: loader/main.c modified: loader/mylink.lds modified: loader/start.axf.S modified: src/glue/arm/init.c modified: src/glue/arm/memory.c modified: tasks/fs0/src/bdev.c modified: tasks/mm0/include/kdata.h modified: tasks/mm0/include/vm_area.h modified: tasks/mm0/src/init.c modified: tasks/mm0/src/task.c modified: tools/ksym_to_lds.py modified: tools/l4-qemu
102 lines
5.1 KiB
Plaintext
102 lines
5.1 KiB
Plaintext
|
|
Codezero Microkernel 'Toy' release
|
|
|
|
Copyright (C) 2007 Bahadir Balban
|
|
|
|
|
|
What is Codezero?
|
|
|
|
Codezero is a small microkernel based on the L4 microkernel principles and has
|
|
its own interpretation of the L4 microkernel API. In addition, it has server
|
|
tasks that implement memory management, a virtual filesystem layer, and these
|
|
servers currently support a small but essential subset of the POSIX API.
|
|
|
|
Codezero project is an effort to implement a modern, open source operating
|
|
system based on the latest technology in microkernel and OS design. It targets
|
|
realtime, high-end embedded systems and has an emphasis on the ARM architecture.
|
|
|
|
It is quite common to see open source projects developed in a closed-doors
|
|
fashion. Codezero project goes beyond just publishing source code as open source
|
|
but also uses the latest open source development practices such as those used by
|
|
the Linux Kernel.
|
|
|
|
|
|
Why the name Codezero?
|
|
|
|
The project focuses on simplicity, elegance, cleanliness, which are important
|
|
assets in software engineering. The philosophy is to implement a structurally
|
|
complete system with most modern OS features while retaining simplicity in the
|
|
implementation as much as possible. This objective also fits well with embedded
|
|
platforms, which usually have rigorous memory and performance requirements. Also
|
|
the project is written from scratch, so the name emphasises that.
|
|
|
|
|
|
Design & Features:
|
|
|
|
Codezero microkernel: Based on L4 microkernel principles, there are only a few
|
|
system calls and the microkernel provides purely mechanism; threads and address
|
|
spaces, and the methods of inter-process communication between them. Anything
|
|
beyond these are policy and they are implemented in the userspace. Due to this
|
|
rigorously simple design the same microkernel can be used to design completely
|
|
different operating systems. In terms of other features, the microkernel is
|
|
preemptive, and smp-ready. Currently only synchronous communication is
|
|
implemented, but this will change in the near future.
|
|
|
|
MM0: Implements memory management. It contains memory and page allocators. It
|
|
implements demand paging by managing page faults, physical pages and their
|
|
file/task associations.
|
|
|
|
FS0: Implements a simple, modern virtual filesystem layer. Since it abstracts
|
|
the low-level filesystem details, it is a relatively easy job to port a new
|
|
filesystem to be used under FS0.
|
|
|
|
|
|
License:
|
|
|
|
The current 'Toy' release is distributed under GNU General Public License
|
|
Version 3 and this version only. Any next version will be released in the same
|
|
license, but there are intentions to keep the project in a dual-licensed manner.
|
|
In any case, the project source code will always be released as open source with
|
|
copyleft clauses.
|
|
|
|
The third party source code under the directories loader/ tools/ libs/c libs/elf
|
|
have their own copyright and licenses, separate from this project. All third
|
|
party source code is open source in the OSI definition. Please check these
|
|
directories for their respective licenses.
|
|
|
|
|
|
Why yet another Posix (micro) kernel?
|
|
|
|
There are many open source Posix operating systems with advanced features such
|
|
as *BSD and Linux. However these were originally not designed for embedded
|
|
systems. Unix itself and all the tools built upon weren't meant for using on
|
|
small devices. Accordingly, these operating systems contain a lot of historical
|
|
code. Linux is well established, and targets a broad range of platforms and
|
|
uses, but consequently embedded platforms don't always get enough emphasis. Also
|
|
such well established, mature systems tend to oppose major design overhauls,
|
|
which limits innovation to a certain extent. In addition, their code base is so
|
|
big, that it gets more and more difficult to understand how the system works.
|
|
Usually much of the code is irrelevant to the problem, in case of embedded
|
|
systems. Codezero is written from scratch to solely target embedded systems and
|
|
as such the source code is %100 relevant. It is small and free from legacy code.
|
|
Finally monolithic kernels may have issues with dependability due to much of the
|
|
code sharing the same address space. Being a microkernel design, Codezero aims
|
|
to defeat this problem and increase dependability.
|
|
|
|
Other than these modern kernels, there is systems software targeting embedded
|
|
devices. Most of them are proprietary, with their own users. Some of the open
|
|
source ones are structurally too simplistic, and lack modern features such as
|
|
paging. There are existing well-designed embedded OS'es, but Codezero provides
|
|
an alternative that will follow the open source development principles more
|
|
closely. This will prove useful because many embedded systems still use older
|
|
development methods and the right open source methodology would prove favorable
|
|
in the fast-paced nature of development (Linux has already proven that).
|
|
|
|
Finally, there are new ideas in OS literature that would improve Unix but aren't
|
|
implemented either because they have no existing users or may break compatibility
|
|
somewhat (e.g. some are presented in Plan 9). As well as practising realistic
|
|
development methodologies, Codezero project aims to keep up with the latest OS
|
|
literature and provide the opportunity to incorporate the latest ideas in OS
|
|
technology.
|
|
|