Available through Tindie
Hardware files are in Eagle, there is also some testing, evaluation, and schooling notes for referance.
A Pi Zero host computer interfaces with several microcontrollers through its serial (UART) interface in this simplified diagram.
Both the Pi and microcontroller(s) can run simple UART based serial communication software. I prefer textual commands, so my examples generally use a textual command processor which echoes back the command like an interactive terminal, the commands are used by the firmware command processor to run routines or configure state machines on the bare metal microcontrollers. The Pi host the toolchain needed to compile the firmware from the source which can be version managed as I do on GitHub, it can also use the toolchains uploader to push a firmware image to the targets serial bootloader. The result is one or more bare metal machine(s) that can place complete attention on a task (e.g. no half-baked network stack to timeshare), and a separate networking machine that is doing the many activities that are needed for modern networking with a heavily tested and well-known networking stack. This is not an IoT system, it is a computer hosting an operating system connected to controllers, instruments or peripherals. IoT is the home of bootloaders with built-in half-baked network stacks that update from the cloud or expose undesired ports that present a serious security risk.
To bootload the AVR from the Pi's serial port, first it needs to be disabled as a debug port and then enabled for serial for Linux to use, also the RTS and CTS pin functions should be enabled (since nRTS is used to start the bootloader).
The Pi Zero also needs a way to initiate a halt from a push button. When the RPUpi shield is mounted on an RPUno the VIN pin can be powered off with a somewhat involved power management firmware technique. This allows a manual shutdown, or the RPUno can request a halt with an I2C command, or the Pi can request the RPUno to request a halt over its serial interface (or perhaps a heartbeat to keep it active).
The core files for this boards bus manager are in the /lib folder. Each example has its files and a Makefile in its own folder. The toolchain packages that I use are available on Ubuntu and Raspbian.
sudo apt-get install git gcc-avr binutils-avr gdb-avr avr-libc avrdude git clone https://github.com/epccs/RPUpi