{
  "canonical_url": "https://crates.flyology.org/community/",
  "catalog": {
    "name": "community",
    "repository_url": "https://github.com/alire-project/alire-index",
    "revision": "cd12c6aa35b7d6483841517305d57ba167ec78d0"
  },
  "generated_at": "2026-08-23T04:55:42Z",
  "index": {
    "version": "1.4.0"
  },
  "package": {
    "catalog": "community",
    "description": "Phil's RP2040 Microcontroller Embedded Profile Firmware Template",
    "development_only": false,
    "latest_version": "2.24840.1",
    "name": "munts_rp2040_firmware_embedded",
    "selected_version": "2.24840.1",
    "versions": [
      {
        "dependants": [],
        "dependencies": [
          {
            "catalog": "community",
            "condition": null,
            "name": "embedded_rp2040",
            "package": "embedded_rp2040",
            "provided_version": "15.4.0",
            "requirement": "^15",
            "resolved": true,
            "version": "15.4.0"
          },
          {
            "catalog": "community",
            "condition": null,
            "name": "rp2040_hal",
            "package": "rp2040_hal",
            "provided_version": "2.7.1",
            "requirement": "^2",
            "resolved": true,
            "version": "2.7.1"
          }
        ],
        "development": false,
        "external": false,
        "manifest": {
          "actions": [
            {
              "command": [
                "sh",
                "-c",
                "./postbuild.sh"
              ],
              "type": "post-build"
            }
          ],
          "authors": [
            "Philip Munts"
          ],
          "configuration": {
            "values": {
              "embedded_rp2040": {
                "Board": "generic_board",
                "Max_CPUs": 2
              },
              "rp2040_hal": {
                "Interrupts": "bb_runtimes",
                "Use_Startup": false
              }
            }
          },
          "depends-on": [
            {
              "embedded_rp2040": "^15",
              "rp2040_hal": "^2"
            }
          ],
          "description": "Phil's RP2040 Microcontroller Embedded Profile Firmware Template",
          "executables": [
            "munts_rp2040_firmware_embedded"
          ],
          "licenses": "BSD-1-Clause",
          "long-description": "# Introduction\n\nThis crate provides a comprehensive template for developing Ada firmware\nfor the [RP2040 ARM 32-bit\nmicrocontroller](https://www.raspberrypi.com/products/rp2040), using the\n[GNAT Predefined Embedded\nRuntime](https://docs.adacore.com/gnat_ugx-docs/html/gnat_ugx/gnat_ugx/gnat_runtimes.html#embedded-run-time)\nimplemented by the\n[`embedded_rp2040`](https://alire.ada.dev/crates/embedded_rp2040.html)\nand [`rp2040_hal`](https://alire.ada.dev/crates/rp2040_hal.html) crates\nand their dependencies.\n\nAda firmware for a microcontroller is realized as a main program\nprocedure that is called by otherwise invisible runtime startup code,\nexactly as C firmware is realized by a function `main()` that is called\nby otherwise invisible runtime startup code.\n\n# Post-Build Script\n\nAn Alire project directory created by\n`alr get munts_rp2040_firmware_embedded` will include a post-build\nscript named `postbuild.sh`. This script will install the newly built\nfirmware to a mounted RP2040 ROM boot USB file system. The RP2040 ROM\nboot code implements USB mass storage emulation, in a fashion first\npopularized by the late and lamented [Mbed\nOS](https://os.mbed.com/mbed-os). To flash RP2040 firmware, you just\nassert `BOOTSEL` and `RESET` hardware signals to force the RP2040 into\nROM boot mode, mount the USB mass storage device (usually done\nautomatically by the development machine operating system), and then\ncopy a [UF2](https://github.com/microsoft/uf2) firmware image file it.\n`postbuild.sh` uses the [`elf2uf2`](https://github.com/rej696/elf2uf2)\nutility program to copy the firmware image to the RP2040.\n\nYou can explicitly specify the RP2040 mount point *aka* destination\ndirectory with the `RP2040_DESTDIR` environment variable before running\n`alr build`. Otherwise `postbuild.sh` will search for the RP2040 mount\npoint at expected locations for ChromeOS, Linux, macOS, and Microsoft\nWindows.\n\nIf an RP2040 mount point cannot be found, `postbuild.sh` does nothing.\n\n# Makefile\n\nAn Alire project directory created by\n`alr get munts_rp2040_firmware_embedded` will include an optional but\nuseful GNU `Makefile` (also available at\n<https://github.com/pmunts/alire-goodies>) containing the following\n*goals* or *targets*:\n\n- `build` -- Accomplished by the command `gmake build`. Runs `alr build`\n  to build the firmware image. Result (upon success) is a 32-bit ARM ELF\n  executable file in the `bin/` subdirectory.\n- `clean` -- Accomplished by the command `gmake clean`. Removes all\n  generated working files. What is left will be suitable for checking\n  into a source control system.\n- `distclean` -- Accomplished by the command `gmake distclean`. Removes\n  all generated working files *and* removes Alire's crate download and\n  build caches.\n\n*Note: `make` is often a synonym (symbolic link, shell alias, etc.) for\n`gmake` on Linux machines, meaning that `make build` behaves exactly the\nsame as `gmake build`.*\n\n# Visual Studio Code\n\nAn Alire project directory created by\n`alr get munts_rp2040_firmware_embedded` will include an optional but\nuseful `.vscode/tasks.json` (also available at\n<https://github.com/pmunts/alire-goodies>) which provides some build\ntasks for [Visual Studio Code](https://code.visualstudio.com).\n\nYou can invoke a Visual Studio build task from the application menu\n`Terminal => Run Task...` or `Terminal => Run Build Task...`\n\nThe most straightforward way to build *and* install RP2040 firmware from\nwithin Visual Studio Code is to simply press **CONTROL + SHIFT + B**.\nThis key code invokes the default build task which executes the command\n`make clean build` which executes the command `alr build` which executes\nscript `postbuild.sh`.\n\n# Examples\n\n## Command line\n\n    alr -n get munts_rp2040_firmware_embedded\n    alire-rename munts_rp2040_firmware_embedded_2.24820.1_45796fc8 myfirmware  # optional\n    cd myfirmware\n    alr -n with munts_rp2040_lib_embedded  # optional\n    alr build\n\n## Visual Studio Code\n\n    alr -n get munts_rp2040_firmware_embedded\n    alire-rename munts_rp2040_firmware_embedded_2.24820.1_45796fc8 myfirmware  # optional\n    cd myfirmware\n    alr -n with munts_rp2040_lib_embedded  # optional\n    code .\n\n*Note: The Alire project rename script `alire-rename` is available at\n<https://github.com/pmunts/alire-goodies>.*\n",
          "maintainers": [
            "Philip Munts <phil@munts.net>"
          ],
          "maintainers-logins": [
            "pmunts"
          ],
          "name": "munts_rp2040_firmware_embedded",
          "origin": {
            "hashes": [
              "sha256:3c19be3af0d8612068342d677e5b1f2565ec350bb7ff824a2a21382a194c2cf1",
              "sha512:80ac59a4e67a305108e296e4e6f420f3ccc3259fa905c90f840852f02984edb357e3e0faff3e8c579f3785544932bbc8f289db9040d16a022414bc7d86053705"
            ],
            "url": "https://raw.githubusercontent.com/pmunts/alire-crates/10e528130a5013f04155770fc2d94aa938928b0b/munts_rp2040_firmware_embedded/munts_rp2040_firmware_embedded-2.24840.1.tbz2"
          },
          "version": "2.24840.1",
          "website": "https://github.com/pmunts/arm-mcu"
        },
        "path": "index/mu/munts_rp2040_firmware_embedded/munts_rp2040_firmware_embedded-2.24840.1.toml",
        "version": "2.24840.1"
      },
      {
        "dependants": [],
        "dependencies": [
          {
            "catalog": "community",
            "condition": null,
            "name": "embedded_rp2040",
            "package": "embedded_rp2040",
            "provided_version": "15.4.0",
            "requirement": "^15",
            "resolved": true,
            "version": "15.4.0"
          },
          {
            "catalog": "community",
            "condition": null,
            "name": "rp2040_hal",
            "package": "rp2040_hal",
            "provided_version": "2.7.1",
            "requirement": "^2",
            "resolved": true,
            "version": "2.7.1"
          }
        ],
        "development": false,
        "external": false,
        "manifest": {
          "actions": [
            {
              "command": [
                "sh",
                "-c",
                "./postbuild.sh"
              ],
              "type": "post-build"
            }
          ],
          "authors": [
            "Philip Munts"
          ],
          "configuration": {
            "values": {
              "embedded_rp2040": {
                "Board": "generic_board",
                "Max_CPUs": 2
              },
              "rp2040_hal": {
                "Interrupts": "bb_runtimes",
                "Use_Startup": false
              }
            }
          },
          "depends-on": [
            {
              "embedded_rp2040": "^15",
              "rp2040_hal": "^2"
            }
          ],
          "description": "Phil's RP2040 Microcontroller Embedded Profile Firmware",
          "executables": [
            "munts_rp2040_firmware_embedded"
          ],
          "licenses": "BSD-1-Clause",
          "maintainers": [
            "Philip Munts <phil@munts.net>"
          ],
          "maintainers-logins": [
            "pmunts"
          ],
          "name": "munts_rp2040_firmware_embedded",
          "origin": {
            "hashes": [
              "sha256:45796fc84bc61b310ad3239fa85a7ea0c30d4f36ddf9283d7d295381b5cfd424",
              "sha512:12572c2990e5a6fc898a880965e36f9c55d8b400eaf0d90d461c191d19a62aa028fd15383d176ebc6eb4eca7d0dae8c135fee2e0a52c21f2b3ddd4b745278f1d"
            ],
            "url": "https://raw.githubusercontent.com/pmunts/alire-crates/898a3bcbf0abab303d6bc1a5e8d03729d4ba49e6/munts_rp2040_firmware_embedded/munts_rp2040_firmware_embedded-2.24820.1.tbz2"
          },
          "version": "2.24820.1"
        },
        "path": "index/mu/munts_rp2040_firmware_embedded/munts_rp2040_firmware_embedded-2.24820.1.toml",
        "version": "2.24820.1"
      }
    ]
  },
  "schema_version": 4
}
