Skip to content
This repository has been archived by the owner on Mar 26, 2024. It is now read-only.

Firmware Architecture

Dorian Cauwe edited this page Oct 21, 2023 · 2 revisions

There are several components:

Services, which contain only Business Logic. Anything that can be siloed into its own thread without requiring too much intra-thread communication can be a service.

Modules, which bridge the gap between drivers and BL. Must be able to serve multiple services if necessary. They control their own inner behavior without being directed by the service. For example, if no devices are requesting location, then the location module should shut down to save power. This can be KConfiged. // e.g: Cloud Module, GPS Module,

Modules should not communicate with each other, should use "third-party" to negotiate hardware use.

Modules try to find all available drivers to fulfill their purpose, then select one and provide a good interface to fulfill their functionality (without business logic).

Modules can also interface with external library. E.g. Crypto Module.

firmware-orecart drawio (1)

Clone this wiki locally