The kernel is the core of an operating system, indispensable and its most important part, having complete control over the whole system. Due to its critical nature, an OS has the kernel code in a protected memory area, the kernel space, while everything that the user does is in the user space.
There are two different approaches for this separation, the older one is the monolithic kernel, which has every basic system service in the kernel space. This approach comes with three big drawbacks: the kernel size, lack of extensibility and bad maintainability. As bug fixing or additions of new features need a time consuming recompilation of the whole kernel, furthermore, having many services in the kernel space makes the system more error prone, since if there is an error in any of them, like a device driver, the whole system will fail.
The microkernel approach, aims to overcome these limitations by reducing the kernel size to the smallest possible, having just basic process communication and I/O control, while the other system services are taken to the user space as normal processes, or "servers". [1]
The F9 microkernel is one of such microkernels, open source, based on the L4 microkernel, focused on deeply embedded devices for IoT. With the performance and low power consumption metrics in mind, as well as security, offering memory protection mechanisms. [2]
Porting this microkernel to an FPGA, like the Zybo Zynq-7000, aims for taking advantage of a hardware and software co-design approach. With possible offloading of OS components to hardware, to augment the sequential processing capability found in the processing sub-system, with parallel or pipeline techniques to increase throughput.
The Zybo SoC, powered by ARM Cortex-A9 cores, an application processor, more indicated for higher performance, middle-end applications than the low-end applications the ARM Cortex-M series, in which the F9 was implemented, focuses on. Which can be an attractive choice with the growing requirements for connectivity, related to IoT, while also offering advantages on software, protocols and security, like the Xilinx Trust Zone. In addition the need for interactive interfaces, with multi-touch, high resolution screens and elaborate graphical user interfaces
The primary objective of this dissertation is the porting of the F9 microkernel to the Zybo development board platform. Which will be only possible after studying the F9 code, with the intention of fully learning about its inner-workings, such as what are its components and mechanisms utilized, as well as what it still uses from the L4 microkernerl. While keeping in mind what will be relevant to change, considering the characteristics of the Zybo board and its Cortex-A processor.
Following a successful porting it will be done bench-marking of the OS components, to evaluate which are better suited to be accelerated by hardware.
Proceeding with the offloading of the identified components.