Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

coder137/lowlevel_rust

Open more actions menu

Repository files navigation

lowlevel_rust

Rust on microcontrollers

Base Projects

  • Minimal blinky
    • Barebones blinky example i.e linker script to main
  • Minimal buildsystem
    • Initial cargo-make framework to have configurable build options i.e extending cargo
  • Minimal controller peripheral
    • Use bindgen to transform .c architecture and chip files to .rs
    • Create l0 and l5 workspace layers
    • Add architecture, controller and startup files in l0
  • Minimal Drivers
    • Write GPIO and USART drivers for high level application usage
    • Added l2, l3 and l4 workspace layers
    • Added bitflags utility library in l2 via crates.io
    • Added driver interfaces, gpio, usart drivers in l3
    • Added led and button modules in l4
  • Minimal Interrupt
    • Configure interrupts from high level application code
    • Updated l0 l2, l3 and l4 workspace layers
    • Updated l0 with user interrupt considerations
    • Added heapless library to l2
    • Added USART buffered traits to l3

Async Rust

  • Minimal Async Basic
    • Forked from Minimal Interrupt
    • Configure Interrupts and main loop with rust cooperative async/await
    • No executor/waker implementation. Just basic polling functionality

Roadmap

Supported Architecture

  • ARM Cortex M4

TODO, Add more eventually

Supported Chips

  • STM32L475xx
  • LPC4078xx

Supported Development platforms

See CI/CD

  • Windows
  • Linux
  • Mac

Async Rust

  • Basic Async Rust
    • Polling support
  • Efficient Async Rust
    • Waker support
    • Interrupt support

RTOS

C based

  • FreeRTOS
  • Zephyr RTOS

Rust based

  • RTIC

Debugging

  • OpenOCD
  • Semihosting

Mocking

  • Mockall

Buildsystem

  • Cargo
  • Cargo Make
  • Cargo features
    • Conditional compiling for additional platforms

Code coverage

  • Grcov
    • Rust based code coverage
  • Lcov
    • Stable code coverage tool
  • Codecov
    • Web based code coverage
  • Coveralls
    • Web based code coverage

FFI compat with C

  • Bindgen
    • Use C in Rust
  • CBindgen
    • Use Rust in C

Crates.io Libraries

  • Bitflags
    • Rust macros to generate bitflags
  • Heapless
    • Stack allocated data structures

Rust integrated tooling

  • Unit testing
  • Clippy
    • Linting
  • Cargofmt
    • Integrated in VSCode
  • Documentation

External tooling

  • Continuous Integration
    • Github Actions

About

Rust on microcontrollers

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published
Morty Proxy This is a proxified and sanitized view of the page, visit original site.