Skip to content

v0.7.0

Compare
Choose a tag to compare
@adamgreig adamgreig released this 25 Jan 03:03
· 985 commits to master since this release
bc8c562

Added

  • New InterruptNumber trait is now required on interrupt arguments to the
    various NVIC functions, replacing the previous use of Nr from bare-metal.
    For backwards compatibility, InterruptNumber is implemented for types
    which are Nr + Copy, but this will be removed in a future version.
  • Associated const PTR is introduced to Core Peripherals to
    eventually replace the existing ptr() API.
  • A delay driver based on SysTick.
  • You can now use LTO to inline assembly calls, even on stable Rust.
    See the asm/lib.rs documentation for more details.
  • Initial ARMv8-M MPU support
  • ICTR and ACTLR registers added
  • Support for the Security Attribution Unit on ARMv8-M

Changed

  • Previously, asm calls without the inline-asm feature enabled used pre-built
    objects which were built by a GCC compiler, while inline-asm enabled the
    use of llvm_asm! calls. The asm system has been replaced with a new
    technique which generates Rust static libs for stable calling, and uses the
    new asm! macro with inline-asm. See the asm/lib.rs documentation for
    more details.
  • Cache enabling now uses an assembly sequence to ensure correctness.
  • ptr() methods are now const.

Breaking Changes

  • SCB::invalidate_dcache and related methods are now unsafe, see #188
  • Peripherals struct is now non-exhaustive, so fields may be added in future
    non-breaking changes
  • Removed aligned dependency
  • Removed const-fn feature
  • Removed previously deprecated APIs
    • NVIC::clear_pending
    • NVIC::disable
    • NVIC::enable
    • NVIC::set_pending
    • SCB::system_reset
  • Removed basepri, basepri_max, and faultmask registers from thumbv8m.base