Mikrobus

mikroBUS is a standard specification by MikroElektronika that can be freely used by anyone following the guidelines. It includes SPI, I2C, UART, PWM, ADC, reset, interrupt, and power (3.3V and 5V) connections to common embedded peripherals.

This page is meant to foster discussion within the embedded Linux community on usage of mikroBUS compatible add-on boards, adding mikroBUS sockets to embedded Linux systems, and ways to improve both Linux support for mikroBUS and the mikroBUS standard.

Device tree overlays loaded at boot time
Today, there is no mainline solution for enabling mikroBUS add-on boards at run-time, so they must all be configured at boot-time with device-tree.

Instructions for PocketBeagle: https://github.com/beagleboard/pocketbeagle/wiki/Click-boards%E2%84%A2

Example overlay: https://github.com/beagleboard/bb.org-overlays/blob/master/src/arm/PB-I2C2-MPU-9DOF-CLICK.dts

There are some out-of-tree mechanisms for loading device-tree overlay fragments. TODO: Need reference to DTBO configfs patch. This patch doesn't apply after 4.14 and is not likely to be accepted in mainline. Mainline doesn't want arbitrary device-tree fragments, but there is a chance that this could be considered a "development-only" patch if this is rebased. The solution would allow run-time loading, but would not be automatic and requires authoring of overlay fragments specific to every add-on board, every Linux platform and every mikroBUS socket.

Using Greybus simulator to enable software hotplug support
This requires running the Greybus simulator, gbsim.

This also requires additional platform data and this is the main thing I need to explain.

Proposal #1: Use Greybus Manifest binaries

 * Module vendor specified separately from driver usage
 * Possibility of using existing driver names for invocation

Proposal #2: Use simple string identifiers

 * Requires table to be kept in kernel
 * Fix-ups would be very direct and not "fix-ups" at all, since no driver specific information would be encoded

Specifics on power function
The direction and accommodations related to the power pins aren't as specific in the mikroBus standard as with Feather.

Comparisons to other popular embedded add-on form-factors
The purpose of this page is to advance the development of mikroBUS support in Linux. Some distractions may be introduced to either illustrate the effort cannot be sufficiently limited in scope to tackle or that focus should be elsewhere. I'm not assuming these would be introduced with any ill-will, they are just natural concerns that need to be addressed up-front.

Definitions

 * Platform data
 * Device driver
 * Bus driver
 * Probe
 * Identifier
 * Device tree