Book:Main

Not logged in

Genode Book

Introduction

Contents is ordered by configuration topics (".run" files for various things) or C++ development topics:

When reading through code from the Genode project, you'll notice recurring idioms and best practices; read more over at Genode's Conscious C++ dialect .

Why an "API hand book" ? Not everybody works the same. Some prefer to "UTSL" ("use the source, luke!") as their favorite way to get familiar with a new system. Some prefer to be mentored, even textually. The narrative format used by the "Be Book" of old works best for the latter, thanks to a balanced mix of all methods: it includes raw/formal API listing (bool is_computer_on_fire() const..), some paragraphs of "orientation" text (here's what this chapter deals with, so you are in the right place if you intend to program such and such...), and links to compilable sample code or tutorials.

Development environment

For both application developers and system integrators/developers, cross compiling from Linux using the Genode tool chain compiled for Linux is the recommended (and officially supported) way.

Additionally, for application development, you'll want to take a look at Goa - streamlining the development of Genode applications : Goa streamlines application integration, allowing to focus on application programming and be more productive.

C++ API

This is divided in API families (or "kits" in BeBook parlance) of Genode:

Special topics

Drivers:

Hardware notes:

The author uses Genode on x86 hardware, but likes to keep an eye on the ARM world. To that end, reading The ARM SoC landscape from Genode's perspective is enlightening : outstanding intro for those not really familiar with system-on-chip's, beyond having heard about Raspberry Pi's. I wonder if NXP i.MX boards are expensive, compared to a "Pi".

Debugging tips

Here's a few hints and tips that should (at least in my experience) be kept in mind for trouble-shooting development problems in Genode:

Configuration sections

Should this be a separate section, or rather include the .run files inline above?

TODO