alarmo 0.0.1

Provides a convenient API to bootstrap firmware and access peripherals on the Nintendo Alarmo
docs.rs failed to build alarmo-0.0.1
Please check the build logs for more information.
See Builds for ideas on how to fix a failed build, or Metadata for how to configure docs.rs builds.
If you believe this is docs.rs' fault, open an issue.
Visit the last successful build: alarmo-0.0.5

Rust on Alarmo!

This project provides a convenient API to bootstrap firmware and access peripherals on the Nintendo Alarmo, using Rust.

Status

This started as a Rust port of GaryOderNichts's MIT-licensed alarmo repository, which uses the official hardware abstraction layer. As a proof-of-concept, I first made a Rust loader that would just call GaryOderNicht's implementation, then I incrementally rewrote each part in the Rust module.

Consider this list of goals tentative:

  • It works!
  • LCD frontend using the display_interface crate
  • Better build environment (automate objcopy and firmware signing)
  • Button inputs
  • Dial input
  • Dial LED
  • Allocator with extended RAM

As a general goal, I'd like to use Rust-native HALs (e.g. stm32h7xx-hal) whenever possible. In its current state, the project still depends on the official HAL, for which it generates bindings using bindgen.

Usage

Running an example

  1. Compile the example, for example lcd:
cargo build --example lcd
  1. Convert the example ELF into BINF:
arm-none-eabi-objcopy target/thumbv7em-none-eabihf/debug/examples/lcd lcd.bin
  1. Sign the firmware to get the a.bin.

Creating a project

  1. After you've created the Cargo project, copy the link.ld file and .cargo/ directory from this repository to the root of your crate.
  2. Add the library as a dependency:
# With LCD support
cargo add alarmo -F display

# No LCD support
cargo add alarmo

# Optionally, add some other dependencies for peripherals, see examples for details
# cargo add mipidsi
# cargo add embedded-graphics
  1. Build the project:
cargo build
  1. Convert the result ELF into BINF (change debug to release for --release):
arm-none-eabi-objcopy target/thumbv7em-none-eabihf/debug/your_crate your_crate.bin
  1. Sign the firmware to get the a.bin.

License

The library and its examples are dual-licensed under both Apache-2.0 and MIT. Please also refer to the license documentation for the official HAL.

Credits