Skip to content

Latest commit

 

History

History
185 lines (144 loc) · 8.08 KB

CHANGELOG.md

File metadata and controls

185 lines (144 loc) · 8.08 KB

Change Log

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog and this project adheres to Semantic Versioning.

v0.4.0- 2022-09-11

Changed

  • Update msp430 crate from 0.3.0 to 0.4.0. This crate remains API-compatible with v0.3.1. Updating msp430 is transitively a breaking change due to previously always-enabled functionality now being gated behind the default-disabled critical-section-single-core feature.

Fixed

  • trybuild tests with outdated messages were updated or removed as appropriate.

v0.3.1- 2022-02-19

Added

  • The entry attribute macro for main can now take an interrupt_enable argument. The interrupt_enable argument will enable interrupts before calling the function with the entry attribute, possibly calling an an optional setup function before enabling interrupts.
    • Not using the interrupt_enable argument is backwards-compatible with v0.3.0.
  • Use trybuild to test error messages from the pre-init, entry, and interrupt macros.
    • Use GHA for these UI tests.

Changed

  • Nested functions generated by the entry and interrupt macros have the inline(always) attribute applied to them. This in fact saves space and execution time by removing a call/jump into the nested function body.

Fixed

  • docs.rs metadata added to Cargo.toml to fix documentation building failure.
  • Change instances of msp430_macros in docs to correct msp430_rt_macros import.

v0.3.0- 2022-01-25

Changed

  • [breaking-change] In preparation for bumping the version of bare-metal in msp430 to v1.0, the CriticalSection parameters to the main and ISR functions now have their lifetimes constrained to the body of their functions. Due to no_mangle, PACs using v0.2.x will not work properly with v0.3.0 of this crate.
  • [breaking-change] Bump msp430 to v0.3.0, which uses the new CriticalSection<'a> parameters generated for the main and ISR functions (via interrupt::free and interrupt::Mutex)
  • Remaining dependencies were bumped to the most recent versions available on Cargo at the time.
    • The RNG used to generate idents was changed from Pcg64Mcg (64-bit) and Pcg32 (32-bit) to Xoshiro128PlusPlus (32/64-bit) to avoid the need for the SmallRng feature (and consistency between 32/64-bit platforms).
    • No other functional changes intended by bumping dependencies.

v0.2.5- 2021-10-27

To replace r0, startup code is now written in assembly, optimized for size. The startup code provides the non-mangled function called Reset which:

  • Initializes the stack pointer.
  • Calls PreInit.
  • Initializes static data in the .bss and .data sections.
  • Calls main.

Because Reset is no longer written in Rust, a user's main function will no longer be inlined into Reset. Additionally, ResetTrampoline was removed, since its sole purpose was to set the stack pointer; Reset does this now.

Removed

  • Remove r0 dependency in light of potential unsoundness. This internal change should not affect user-facing applications.

v0.2.4- 2020-03-04

Fixed

  • msp430-rt now depends on the correct version of msp430-rt-macros.

v0.2.3- 2020-03-04 (YANKED)

This release was yanked because msp430-rt-macros was not updated accordingly before release.

Added

  • Modify #[entry] and #[interrupt] macros so that main() and interrupt handlers optionally accept a CriticalSection argument.

Changed

v0.2.2- 2020-01-07

Fixed

  • Fix entry point in linker script to be ResetTrampoline instead of Reset. This caused subtle breakage during debugging where invoking and exiting gdb without forcing a monitor reset (which you should be doing anyway). Specifically, gdb would reset the program counter to skip the stack initialization code in ResetTrampoline, which can leak stack memory.

v0.2.1- 2020-01-07

Fixed

  • Correct build.rs script so that msp430-rt is only recompiled if link.x.in changed, rather than link.x. The latter triggers unconditional rebuilds.

v0.2.0- 2020-01-01

  • [breaking-change] Interrupts are now implemented using an attribute macro called #[interrupt], provided by the msp430-rt-macros package.
  • [breaking-change] Old compilers using the Termination trait will no longer compile this crate.
  • [breaking-change] The INTERRUPTS array is now called __INTERRUPTS for parity with cortex-m-rt, and the linker script has been updated to accomodate. ^0.1.0 PACs will not work properly with this crate.
  • [breaking-change] If the device feature is enabled, the linker script expects a PAC, such as msp430g2553, to provide interrupt vector addresses via the device.x file. This should be transparent to the user due to build.rs.
  • [breaking-change] The default_handler macro was removed; a default interrupt handler is defined defining an function called DefaultHandler with the #[interrupt] attribute.
  • [breaking-change] An application's entry point is now defined using the #[entry] attribute macro, with function signature fn() -> !
  • Add #[pre_init] attribute macro, for parity with cortex-m-rt.
  • Removed instances of asm macros. Use a separate assembly file called asm.s and libmsp430.a for stable assembly when absolutely necessary (at the cost of some inlining). This should be transparent to the user thanks to build.rs.
  • Reset handler name changed from reset_handler to Reset; this is invisible to users.
  • All but one required feature have either stabilized (used) or are no longer used in the crate (asm, lang_items, linkage, naked_functions). The only remaining unstable feature is abi_msp430_interrupt.

v0.1.4 - 2019-11-01

  • Removed panic_implementation

v0.1.3 - 2018-06-18

  • Upgrade to panic_implementation

v0.1.2 - 2018-04-08

  • Fix version tags

  • Fix build with recent nightly-2018-04-08.

v0.1.1 - 2018-02-02

  • Import Termination trait code from cortex-m-rt to permit compiling with recent nightlies.

v0.1.0 - 2017-07-22

Initial release