You’re hired at the latest startup as a hardware engineer and required to build the firmware which will run on “The Greatest Next Generation Appliance” (GNA). The GNA boots, prints a message and interacts with a device (in this case an LED).
In this workshop we cover how a person with an interest and a focus on hardware can make progress with the software side by using the NetBSD operating system and the features it offers to save considerable time and effort.
- NetBSD supports a wide & diverse range of systems & CPU architectures.
- Support for cross compilation is offered by default and works out of the box.
- There is a high level language interface to interact with the system internals.
- File integrity verification support to detect tampering of binaries and preventing execution is builtin.
- An instance of the kernel can be run as a user process on different operating systems where rapid development can take place.
Things we will cover:
- An introduction to cross-compilation with build.sh and constructing an image to boot on your hardware.
- Interacting with the system using Lua (which is embedded in the kernel, avoiding having to write C or have knowledge of OS internals) to e.g. access GPIO.
- Preventing the execution of tampered or unauthorised binaries with veriexec.
- Using rump kernel for rapid development away from a potentially slow dev board.