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
- Update
msp430
crate from0.3.0
to0.4.0
. This crate remains API-compatible with v0.3.1. Updatingmsp430
is transitively a breaking change due to previously always-enabled functionality now being gated behind the default-disabledcritical-section-single-core
feature.
trybuild
tests with outdated messages were updated or removed as appropriate.
v0.3.1- 2022-02-19
- The
entry
attribute macro for main can now take aninterrupt_enable
argument. Theinterrupt_enable
argument will enable interrupts before calling the function with theentry
attribute, possibly calling an an optional setup function before enabling interrupts.- Not using the
interrupt_enable
argument is backwards-compatible with v0.3.0.
- Not using the
- Use
trybuild
to test error messages from thepre-init
,entry
, andinterrupt
macros.- Use GHA for these UI tests.
- Nested functions generated by the
entry
andinterrupt
macros have theinline(always)
attribute applied to them. This in fact saves space and execution time by removing a call/jump into the nested function body.
- docs.rs metadata added
to
Cargo.toml
to fix documentation building failure. - Change instances of
msp430_macros
in docs to correctmsp430_rt_macros
import.
v0.3.0- 2022-01-25
- [breaking-change] In preparation for bumping the version of
bare-metal
inmsp430
tov1.0
, theCriticalSection
parameters to themain
and ISR functions now have their lifetimes constrained to the body of their functions. Due tono_mangle
, PACs using v0.2.x will not work properly withv0.3.0
of this crate. - [breaking-change] Bump
msp430
tov0.3.0
, which uses the newCriticalSection<'a>
parameters generated for themain
and ISR functions (viainterrupt::free
andinterrupt::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) andPcg32
(32-bit) toXoshiro128PlusPlus
(32/64-bit) to avoid the need for theSmallRng
feature (and consistency between 32/64-bit platforms). - No other functional changes intended by bumping dependencies.
- The RNG used to generate idents was changed from
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.
- Remove
r0
dependency in light of potential unsoundness. This internal change should not affect user-facing applications.
v0.2.4- 2020-03-04
msp430-rt
now depends on the correct version ofmsp430-rt-macros
.
v0.2.3- 2020-03-04 (YANKED)
This release was yanked because msp430-rt-macros
was not updated accordingly
before release.
- Modify
#[entry]
and#[interrupt]
macros so thatmain()
and interrupt handlers optionally accept aCriticalSection
argument.
- Proactively update
r0
to 1.0.0, the first crate of WG Issue #383.
v0.2.2- 2020-01-07
- Fix entry point in linker script to be
ResetTrampoline
instead ofReset
. This caused subtle breakage during debugging where invoking and exitinggdb
without forcing amonitor reset
(which you should be doing anyway). Specifically,gdb
would reset the program counter to skip the stack initialization code inResetTrampoline
, which can leak stack memory.
v0.2.1- 2020-01-07
- Correct build.rs script so that msp430-rt is only recompiled if
link.x.in
changed, rather thanlink.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 themsp430-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 withcortex-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 asmsp430g2553
, to provide interrupt vector addresses via thedevice.x
file. This should be transparent to the user due tobuild.rs
. - [breaking-change] The
default_handler
macro was removed; a default interrupt handler is defined defining an function calledDefaultHandler
with the#[interrupt]
attribute. - [breaking-change] An application's entry point is now defined using the
#[entry]
attribute macro, with function signaturefn() -> !
- Add
#[pre_init]
attribute macro, for parity withcortex-m-rt
. - Removed instances of
asm
macros. Use a separate assembly file calledasm.s
andlibmsp430.a
for stable assembly when absolutely necessary (at the cost of some inlining). This should be transparent to the user thanks tobuild.rs
. - Reset handler name changed from
reset_handler
toReset
; 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 isabi_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 fromcortex-m-rt
to permit compiling with recent nightlies.
Initial release