10. Ports

A “port” is the board‑/hardware‑specific implementation layer that adapts the generic plumCore framework to run on a particular microcontroller board or hardware platform.

It contains, among others:

  • clock initialization happening in the early stage of the boot process

  • configuration of GPIO ports

  • instantiation of services which are run on the target hardware and injecting the required dependencies

  • advertising interfaces of the instantiated services

  • interrupt to service glue for interrupts

  • hardware revision detecting logic for cases when a single firmware runs on hardware of multiple (semi-)compatible revisions

  • linker script for the target MCU

  • FreeRTOS configuration specific for the target MCU

  • SConscript to build the port code

  • documentation of the port in the doxygen form (for the code) and reST (well, for the rest and high-level documents)