{"id":28241048,"url":"https://github.com/sandbox-science/astrakernel","last_synced_at":"2026-06-29T11:31:24.717Z","repository":{"id":293590079,"uuid":"984518054","full_name":"sandbox-science/AstraKernel","owner":"sandbox-science","description":"Experimental micro ARM kernel implementation for QEMU.","archived":false,"fork":false,"pushed_at":"2026-01-13T04:41:18.000Z","size":5103,"stargazers_count":3,"open_issues_count":1,"forks_count":2,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-01-13T07:49:49.770Z","etag":null,"topics":["arm","assembly","c","kernel"],"latest_commit_sha":null,"homepage":"https://sandbox-science.github.io/AstraKernel/","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sandbox-science.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","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":"2025-05-16T04:14:01.000Z","updated_at":"2026-01-13T04:41:23.000Z","dependencies_parsed_at":"2025-05-16T05:31:03.617Z","dependency_job_id":"10f16dec-f592-4ba2-a985-1f8c7d19b463","html_url":"https://github.com/sandbox-science/AstraKernel","commit_stats":null,"previous_names":["sandbox-science/astrakernel"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/sandbox-science/AstraKernel","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sandbox-science%2FAstraKernel","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sandbox-science%2FAstraKernel/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sandbox-science%2FAstraKernel/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sandbox-science%2FAstraKernel/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sandbox-science","download_url":"https://codeload.github.com/sandbox-science/AstraKernel/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sandbox-science%2FAstraKernel/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34925718,"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-29T02:00:05.398Z","response_time":58,"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":["arm","assembly","c","kernel"],"created_at":"2025-05-19T04:12:55.995Z","updated_at":"2026-06-29T11:31:24.712Z","avatar_url":"https://github.com/sandbox-science.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# AstraKernel ~ A minimal ARM kernel for QEMU\n\n[![GitHub release (including pre-releases)](https://img.shields.io/github/v/release/sandbox-science/AstraKernel?include_prereleases)](https://github.com/sandbox-science/AstraKernel/releases)\n[![Doxygen Docs](https://github.com/sandbox-science/AstraKernel/actions/workflows/static.yml/badge.svg?branch=main)](https://github.com/sandbox-science/AstraKernel/actions/workflows/static.yml)\n\nAstraKernel is a minimal experimental kernel written in modern C and ARM assembly, designed to run on\n**QEMU’s Versatile AB/PB board with a Cortex‑A8 CPU override (-cpu cortex-a8)**. This setup keeps the\nsimple Versatile peripheral map while enabling **ARMv7‑A** features for experimentation. \nThe purpose is educational, showing the fundamental steps of bringing up a bare-metal system, from \nlow-level bootstrapping to higher-level interactive features to explore kernel development concepts.\n\n```bash\n========================================\n  AstraKernel  v0.1.0\n  Built Aug 27 2025 at 12:56:35\n========================================\n\n  CPU: Cortex-A8 @ 200MHz (simulated)\n  RAM: 128MB SDRAM at 0x00000000\n\nWelcome to your own little Astra world!\nType away, explore, have fun.\n\nAstraKernel is running...\nPress Ctrl-A and then X to exit QEMU.\n\nAstraKernel \u003e\n```\n\n## Target platform and configuration\n\n- Machine (board): `versatilepb` (or `versatileab`)\n- CPU model: `cortex-a8` (via `-cpu cortex-a8`)\n- Key peripherals (Versatile map):\n  - UART0 (PL011): 0x101F1000\n  - Timers (SP804): 0x101E2000\n  - Interrupt controller: VIC at 0x10140000\n  - SDRAM base: 0x00000000\n- Exception vectors: initially at 0x00000000 (32-byte aligned).\n  \nLater, the kernel may relocate vectors using VBAR once the MMU is enabled.\n\n## Features so far\n\n- [x] **Bootstrapping**: stack setup, BSS clearing, entry into the kernel main.\n- [x] **UART I/O**: putc/puts, getc/getline, basic shell loop.\n- [x] **Vector Table**: Define vector table for exceptions/interrupts.\n- [x] **Basic Timer Interrupt**: Configure one hardware timer, hook its interrupt to increment a \"tick\" counter.\n\n## Building\n\n### Native Build\n\nMake sure you have an ARM cross-compiler installed (e.g., `arm-none-eabi-gcc`) and `qemu-system-arm`.\n\n```sh\nmake\n```\n\nDevelopers also have the option to run the kernel in debug mode:\n```sh\nmake debug\n```\n\n\u003e [!IMPORTANT]\n\u003e \n\u003e `make` will clean, build, and run the kernel in QEMU. You can also run \n`make qemu` to run the kernel without cleaning or building it again.\n\n### Docker Build\n\nIf you have Docker installed, you can also run AstraKernel through a Docker container:\n\n```sh\nmake docker\n```\n\n\u003e [!IMPORTANT]\n\u003e \n\u003e `make docker` will pull from the most recent `main` commit from the upstream repository\n\u003e `https://github.com/sandbox-science/AstraKernel.git`.\n\u003e If you wish to use a local copy, you can run `make docker-dev`, which will copy all\n\u003e local build files into the repository.\n\n## Documentation\n\nFor more details about this kernel, refer to the [AstraKernel Documentation](https://github.com/sandbox-science/AstraKernel/blob/main/doc/AstraKernelManual.pdf).\n\n\u003e [!NOTE]\n\u003e \n\u003e The manual is a work in progress and may not cover all features yet.\n\n## Disclaimer\n\nAstraKernel is an **educational project** created to demonstrate operating system concepts.\nIt is currently in version ![GitHub release (latest by date including pre-releases)](https://img.shields.io/github/v/release/sandbox-science/AstraKernel?include_prereleases\u0026label=\u0026style=flat) and should be considered experimental software.\n\n- **Not Production-Ready**: AstraKernel is not stable, secure, or suitable for production environments.\n- **Educational Use Only**: The project is provided for learning, research, and experimentation purposes.\n- **No Warranty**: AstraKernel is distributed on an “as is” basis, without warranties or conditions of any kind, express or implied.\n- **Limitation of Liability**: The authors and contributors assume no responsibility or liability for any damages, data loss, or issues arising from the use of AstraKernel.\n\nBy using AstraKernel, you acknowledge that you understand these limitations.\n\n## License\n\nThis project is licensed under the GNU General Public License. See the [LICENSE](LICENSE) file for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsandbox-science%2Fastrakernel","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsandbox-science%2Fastrakernel","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsandbox-science%2Fastrakernel/lists"}