You can find more about the Pip protokernel at its website.
The source code is covered by CeCILL-A licence.
The Pip Development Team:
- Damien Amara
- Nicolas Dejon
- Gilles Grimaud
- Michaël Hauspie
- Samuel Hym
- David Nowak
- Claire Soyez-Martin
- Florian Vanhems
Past members of the Pip Development Team:
- Quentin Bergougnoux
- Julien Cartigny
- Étienne Helluy Lafont
- Narjes Jomaa
- Paolo Torrini
- Mahieddine Yaker
You can generate the "Getting Started" tutorial by invoking make gettingstarted. The full documentation is generated by invoking make doc.
Pip is known to build correctly with this toolchain:
- COQ Proof Assistant version 8.13.1
- Doxygen version 1.8.13 and above (for documentation generation)
- GCC version 8.3.0 and above
- GDB version 8.2.1 and above
- GNU Make version 4.3 and above
- grub-mkrescue (for ISO image generation; unnecessary for i386 target though)
- haskell-stack version 1.7.1 and above (is a cross-platform program for developing Haskell projects)
- NASM version 2.14 and above
- QEMU i386 version 3.1.0 and above
- Texlive any version or another latex tools
You can pass several arguments to make to compile the Pip.
all: Build targetproofs: Proofs targetqemu-elf|qemu-iso: QEMU targetsdoc|doc-c|doc-coq|gettingstarted: Documentation targetstoolchain.mk: Configure script targetclean|realclean: Clean targets
Each partition is located into src/arch/{architecture}/partitions/{partition}
- Configure the toolchain by copying
src/partitions/{architecture}/toolchain.mk.templatetosrc/partitions/{architecture}/toolchain.mk, then edit the latter to your needs. - You can use the
minimalpartition as a base to develop more elaborated software. - You can compile the partition by invoking
makein the partition's directory.
The kernel is divided into three parts.
- MAL: The Memory Abstraction Layer is used to provide small functions to manipulate the MMU
- Core: The logic of Pip
- Boot: The bootstrap code that initializes required hardware and then boots Pip
_CoqProjectis a mandatory configuration file for Coq.src/contains the source base directory.src/corecontains the Pip source folder.src/extractioncontains the code to extract Coq services.src/interfacecontains the interface between Coq and C.src/modelcontains the Coq code.src/arch/x86_multiboot/MALcontains the Memory Abstraction Layer source.src/arch/x86_multiboot/bootcontains the "cbits", i.e the required C and assembly code required to boot the coq kernel.src/arch/x86_multiboot/partitionscontains the top-level partitions.tools/contains some scripts and tools that may be useful.proof/contains the Coq proof.
Pip can already boot on real hardware. If available, the first serial output (COM1) should be used for debugging output.
The required configuration is 38400 bauds, 8 bits, no parity, one stop bit. You can also enable automatic line feed and carriage return in Minicom (2.7+) for user-friendly output.
The compilation on Linux should be as easy as to install the i386-elf toolchain as well as the other requirements, and use the Makefile to generate a binary image.
Use your favourite package manager to install Coq, Doxygen, GCC, GDB, GNU Make, GRUB, haskell-stack, NASM, QEMU and Texlive.