{"id":20174442,"url":"https://github.com/aitorvs/ercos","last_synced_at":"2026-06-08T12:01:33.336Z","repository":{"id":91409113,"uuid":"46920784","full_name":"aitorvs/ercos","owner":"aitorvs","description":"Embedded Operating System (no longer updated)","archived":false,"fork":false,"pushed_at":"2015-11-26T13:10:21.000Z","size":370,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-11-30T20:32:55.219Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/aitorvs.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2015-11-26T10:45:11.000Z","updated_at":"2016-11-03T03:14:44.000Z","dependencies_parsed_at":"2023-03-13T17:44:44.328Z","dependency_job_id":null,"html_url":"https://github.com/aitorvs/ercos","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/aitorvs/ercos","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aitorvs%2Fercos","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aitorvs%2Fercos/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aitorvs%2Fercos/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aitorvs%2Fercos/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/aitorvs","download_url":"https://codeload.github.com/aitorvs/ercos/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aitorvs%2Fercos/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34061123,"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-06-08T02:00:07.615Z","response_time":111,"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":"2024-11-14T01:42:39.756Z","updated_at":"2026-06-08T12:01:33.331Z","avatar_url":"https://github.com/aitorvs.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ERCOS\n\nERCOS is a small real-time operating system for embedded platforms. It was\noriginally developed for the SPARC architecture — specifically the ERC-32\nprocessor used in radiation-hardened spacecraft computers — at the University\nof Alcalá, with support for the Motorola 68332 added later.\n\nThe project is being modernised: the kernel now has a native macOS port\n(`arch/HOST/POSIX/`), an in-tree SPARC V7 instruction simulator\n(`tools/ercsim/`), a Docker recipe for cross-compiling to real SPARC with\nBCC2, and an in-progress browser-based mission control companion under `web/`.\nSee `CLAUDE.md` for a detailed snapshot of current state and active work.\n\nIf you're here because you want to understand real flight-style RTOS\ninternals — the original ERCOS source was made public for exactly that — most\nof the kernel is platform-independent C under `kernel/` and is the right place\nto start reading.\n\n## Quick start (macOS)\n\n```bash\n./scripts/setup-macos.sh        # install build prerequisites (idempotent)\n./scripts/check.sh              # build + run the full test suite (15 steps)\n./scripts/demo-satellite-host.sh   # multi-task satellite mission demo, native Mac\n```\n\n## Configuration\n\nERCOS still uses a Linux Tk-based configuration system (`make xconfig`)\ninherited from the kernel's earlier life. On macOS the configuration is\nbootstrapped from a defconfig (`config/POSIX/defconfig`) by the test\nharness automatically — see `arch/HOST/POSIX/tests/test-e2e.sh` for the\nrecipe.\n\nCross-compiling for SPARC on macOS uses the Docker recipe in\n`scripts/docker/Dockerfile`, since Gaisler does not ship BCC2 binaries\nfor macOS:\n\n```bash\n./scripts/docker-build.sh        # produce image/image.elf for real SPARC\n```\n\n## Source code layout\n\n- `arch/` — architecture- and platform-specific code (SPARC ERC-32, LEON,\n  M68K 68332, and the new HOST/POSIX native port)\n- `config/` — kernel configuration files and per-platform defconfigs\n- `gdb/` — gdb stub implementations (unused in the macOS port)\n- `include/` — kernel header files\n- `kernel/` — platform-independent kernel implementation\n- `init/` — kernel initialisation, also platform-independent\n- `posix/` — POSIX interface implementation, built on top of the native syscalls\n- `bpl/` — BPL / EDROOM application framework (C++)\n- `sys_tracer/` — offline parser for the kernel trace stream feeding the\n  [kiwi trace viewer](http://www.gti-ia.upv.es/sma/tools/kiwi/index.php)\n- `tools/` — host-side tools, including the SPARC simulator `ercsim/` and the\n  kiwi viewer binary\n- `test_new/` — application-level test programs\n- `scripts/` — macOS bootstrap, Docker recipe, demo runners, CI runner\n- `web/` — Svelte + Vite + TypeScript browser mission control SPA (work in progress)\n\n## Porting ERCOS to a new platform\n\nThe macOS HOST/POSIX port is a recent and reasonably faithful template for\nhow to add a new platform — see `arch/HOST/POSIX/` and the matching\n`config/POSIX/` files. The original porting notes from 2015 are also still\nbroadly applicable:\n\n1. Edit `config.in` and inside `choice Vendor/Product` add a line of the form\n   `YOURPLATFORM CONFIG_DEFAULTS_PLATFORM_NEWARCHNAME_NEWPLATFORMNAME \\ `,\n   substituting the architecture and platform names appropriately.\n2. Add a `config/\u003cplatformName\u003e/` directory with `config.in`, `defconfig`,\n   and `link_\u003cplatformName\u003e.ld`. Use `config/DUMMY/` as a template.\n3. Create `arch/\u003cnewArch\u003e/\u003cnewPlatform\u003e/` with a `Makefile`. Use\n   `arch/NOARCH/` or `arch/HOST/POSIX/` as templates.\n\n## Developed by\n\nAitor Viana Sánchez — `aitor.viana.sanchez@gmail.com`\n\n- [Twitter / X](https://twitter.com/aitorvs)\n- [LinkedIn](https://www.linkedin.com/in/aitorvs)\n\n## License\n\nERCOS is released under the **GNU General Public License v2** — see the\n`COPYING` file at the repo root for the full licence text. Each source\nfile carries a short GPL v2 notice in its header.\n\nSome third-party components are included under compatible licences:\n\n- `bpl/edroomsl.{cpp,h}` — © 2005 Oscar Rodríguez Polo, GPL v2-or-later\n- `include/M68K/cpu/cputypes.h`, `include/M68K/68332/platform.h` —\n  © 2004–2005 Óscar García Población, GPL v2\n- `test_new/Test53.cpp`, `test_new/Test10.cpp` (with Aitor) —\n  © 2004–2005 César Rodríguez Ortega, GPL v2\n- `gdb/setjmp.h` — contains m68k `jmp_buf` definitions from the\n  GNU C Library, LGPL v2.1\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faitorvs%2Fercos","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faitorvs%2Fercos","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faitorvs%2Fercos/lists"}