{"id":34607010,"url":"https://github.com/derf/multipass","last_synced_at":"2026-05-27T17:31:51.567Z","repository":{"id":46214246,"uuid":"293506290","full_name":"derf/multipass","owner":"derf","description":"Embedded Library Operating System","archived":false,"fork":false,"pushed_at":"2026-05-08T05:34:35.000Z","size":3666,"stargazers_count":2,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-05-08T07:38:22.453Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://finalrewind.org/projects/multipass/","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-2-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/derf.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"COPYING","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2020-09-07T11:16:52.000Z","updated_at":"2026-05-08T05:34:39.000Z","dependencies_parsed_at":"2024-11-30T20:24:11.660Z","dependency_job_id":"fe3628d2-09fb-4465-86eb-5162c71ada32","html_url":"https://github.com/derf/multipass","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/derf/multipass","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/derf%2Fmultipass","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/derf%2Fmultipass/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/derf%2Fmultipass/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/derf%2Fmultipass/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/derf","download_url":"https://codeload.github.com/derf/multipass/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/derf%2Fmultipass/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33577633,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-05-27T02:00:06.184Z","response_time":53,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-12-24T13:57:45.046Z","updated_at":"2026-05-27T17:31:51.561Z","avatar_url":"https://github.com/derf.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# multipass - a multi-architecture library operating system\n\n**multipass** is a C++ Library Operating System for a few embedded\ntargets / architectures.  As such, it does not provide multi-threading support\nor similar conveniences.  Its objective is similar to the Arduino environment:\nprovide a simple framework for embedded application/driver development and\nevaluation with a `main()` and optional `loop()` function and a text output\nchannel, and then get out of the way as much as possible. It favors simplicity\nover performance and proper abstraction.  Re-using components outside of\nmultipass should be fairly easy.\n\nApplication, target / architecture, and drivers are configured using `make\nconfig` (X11, kconfig-qconf) or `make nconfig` (Terminal, kconfig-nconf). Each\napplication must implement `int main(void)` and do everything itself from that\npoint on.  If the loop or wakeup features are enabled, `void loop(void)` or\n`void wakeup(void)` must be implemented as well.\n\n## Getting Started\n\n* make config\n* make\n* make program\n* make monitor\n\nTwo helper scripts are provided:\n\n* `./mp` is a shortcut for `make info` and `make program` (build and flash)\n* `./mpm` is a shortcut for `make info`, `make program`, and `make monitor` (build, flash, and monitor output)\n\nFlags are passed to each `make` invocation.\n\nFor common applications, the `arch` and `app` compile switches can be used,\ne.g. `./mpm arch=posix app=ledblink`\n\nYou should see some data about the compilation process, \"Hello, world!\", and\nsome numbers. As POSIX is not a standalone target (it builds an ELF binary that\nis executed directly on Linux), you do not need a microcontroller to run it.\nTerminate execution using Ctrl+C.\n\n## Supported Targets\n\nSee `make config` for an up-to-date list. Unless noted otherwise, all targets\nsupport GPIO input/output, UART output (typically using the built-in USB-TTL\nchip of the respective development board), and an optional cycle counter.\nThe following table gives a quick overview over targets and additional\nfeatures; the remainder of this README covers details.\n\n| Target | Clock | Non-Volatile Memory | Volatile Memory | Supported Drivers / Features |\n| :--- | ---: | ---: | ---: | :--- |\n| ATMega168P | 16 MHz | 512 KiB Flash + 512 B EEPROM | 1 KiB SRAM | I²C, SPI, UART, WS2812B, ADC |\n| ATMega328P | 16 MHz | 32 KiB Flash + 1 KiB EEPROM | 2 KiB SRAM | I²C, SPI, UART, WS2812B, ADC |\n| ATMega2560 | 16 MHz | 256 KiB Flash + 4 KiB EEPROM | 8 KiB SRAM | I²C, UART, DMX, ADC |\n| LM4F120H5QR (Cortex-M4F) | 80 MHz | 48 KiB Flash | 4 KiB SRAM | |\n| MSP430FR5969 | 16 MHz | 48 (64) KiB FRAM | 2 KiB SRAM | I²C, SPI, UART, DMX, ADC |\n| MSP430FR5994 | 16 MHz | 48 (256) KiB FRAM | 4 (8) KiB SRAM | I²C, SPI, UART, DMX, ADC |\n| RM46L852 (Cortex-R4F) | 160 MHz | 1.25 MiB Flash | 192 KiB SRAM | |\n| STM32F446RE (Cortex-M4) | 168 MHz | 512 KiB Flash | 128 KiB SRAM | I²C |\n| STM32F746ZG (Cortex-M7) | 216 MHz | 1 MiB Flash | 320 KiB SRAM | I²C |\n| STM32H747XI (Cortex-M7) | 480 MHz | 2 MiB Flash + 128 MiB QSPI NOR Flash | 1 MiB SRAM + 32 MiB SDRAM | |\n| POSIX | – | – | – | I²C |\n\n### ATTiny88 (Blinkenrocket)\n\nPeripheral communication:\n\n* I²C controller\n\n### ATMega168P, ATMega328P (Arduino Nano, Arduino Uno)\n\nPeripheral communication:\n\n* I²C controller\n* SPI controller\n* UART input/output\n* WS2812B output via Adafruit NeoPixel driver\n\nHardware features:\n\n* ADC (partially)\n\n### ATMega2560\n\nPeripheral communication:\n\n* I²C controller\n* UART input/output on USART0 / USART1 / USART2 / USART3\n* DMX output on USART1 / USART2 / USART3\n\nHardware features:\n\n* ADC (partially)\n\n### LM4F120H5QR (Stellaris Launchpad)\n\nPeripheral communication:\n\n* UART output\n\n### MSP430FR5969 (MSP430FR5969 Launchpad)\n\nPeripheral communication:\n\n* I²C controller on eUSCI\\_B0\n* SPI controller on eUSCI\\_B0\n* UART input/output on eUSCI\\_A0 / eUSCI\\_A1\n* DMX output on eUSCI\\_A1\n\nHardware features:\n\n* ADC (partially)\n\n### MSP430FR5994 (MSP430FR5994 Launchpad)\n\nPeripheral communication:\n\n* I²C controller on eUSCI\\_B1\n* SPI controller on eUSCI\\_B1\n* UART input/output on eUSCI\\_A0\n* DMX output on eUSCI\\_A1 / eUSCI\\_A2 / eUSCI\\_A3\n\nHardware features:\n\n* 20bit mode (use up to 256 KiB FRAM for code and data)\n* ADC (partially)\n\n### RM46L8 (Hercules RM46L8 Launchpad)\n\nPeripheral communication:\n\n* UART output\n\n### STM32F446RE (NUCLEO-F446RE)\n\nPeripheral communication:\n\n* UART output on USART2\n* I²C on I2C1 muxed to PB8 / PB9\n\n### STM32F746ZG (NUCLEO-F746ZG)\n\nPeripheral communication:\n\n* UART output on USART3\n* I²C on I2C1 muxed to PB8 / PB9\n\n### POSIX\n\nRuns the selected application as POSIX thread, e.g. under Linux on a Raspberry Pi.\n\nPeripheral communication:\n\n* I²C controller via `/dev/i2c`\n* stdin/stdout\n\n## Supported Peripherals\n\nSee `make config` for an up-to-date list.\n\n### Sensors\n\n* AM2320 Temperature+Humidity (I²C)\n* BME280 Temperature+Humidity+Pressure via Bosch SensorTec driver (I²C)\n* BME280 Temperature+Humidity+Pressure+IAQ via Bosch SensorTec driver (I²C)\n* CCS811 VOC (I²C)\n* HDC1080 Temperature+Humidity (I²C)\n* LM75 Temperature (I²C)\n* MAX44006 R+G+B+Clear+IR irradiance (I²C)\n* MAX44009 illuminance (I²C)\n* MPU9250 accelerometer+gyroscope+magnetometer (I²C)\n* SCD4x CO₂+Temperature+Humidity (I²C)\n* SEN5x PM1.0+PM2.5+PM4.0+PM10+Temperature+Humidity+VOC (I²C)\n* VEML6075 UVA+UVB irradiance (I²C)\n\n\"VOC\" refers to volatile organic compounds; \"PM\" refers to particulate matter.\n\n### Displays\n\n* LS013B4DN04 / 430BOOST-SHARP96 96×96 transflective LCD (SPI)\n* Pervasive Aurora Mb V230/V231 4.2\" iTC E-Paper Display via EPD Extension Board Gen 2 (SPI)\n* SSD1306 128×64 / 128×32 OLED display controller (I²C)\n\n### Others\n\n* ADS111x ADC (I²C)\n* DS2482 1-Wire Bus Controller (I²C)\n\n## References\n\nMirrors of the multipass repository are available at:\n\n* [Codeberg](https://codeberg.org/derf/multipass)\n* [ESS](https://ess.cs.uos.de/git/bkf/multipass)\n* [Finalrewind](https://git.finalrewind.org/derf/multipass)\n* [GitHub](https://github.com/derf/multipass)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fderf%2Fmultipass","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fderf%2Fmultipass","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fderf%2Fmultipass/lists"}