Implement full SSD1306 OLED display support: - Splash screen on boot (1.5s) with project name, version, board - Dashboard showing radio state, config, counters, RSSI/SNR - RSSI history sparkline (64-sample ring buffer, 2px-wide bars) - DisplayOn/DisplayOff host commands routed via dedicated channel - Pure render functions against generic DrawTarget (no hardware coupling) - Display on/off control bypasses radio task entirely Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
6.7 KiB
6.7 KiB
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.
Unreleased
[v0.12.1] - 2024-10-20
Changed
- Update critical-section to 1.2.0
[v0.12.0] - 2024-10-19
Added
riscv-macroscrate forriscv-pacenums.- Bump MSRV to 1.61.
- Implementation of
riscv-pactraits forInterruptandExceptionenums. - Tests for the
riscv-pactrait implementations ofInterruptandExceptionenums. - Add
Mcause::from(usize)for use in unit tests - Add
Mstatus::from(usize)for use in unit tests - Add
Mstatus.bits() - Add
EqandPartialEqforpmpcfgx::{Range, Permission} - Add
Mstatus::update_*helpers to manipulate Mstatus values without touching the CSR - Export
riscv::register::macrosmodule macros for external use - Add
riscv::register::mcountinhibitmodule formcountinhibitCSR - Add
Mcounterenin-memory update functions - Add
Mstatusvector extension support - Add fallible counterparts to all functions that
panic - Add
riscv-pacas a dependency - Add CSR-defining macros to create in-memory types
Fixed
- Fixed
sip::set_ssoftandsip::clear_ssoftusing wrong address - Fixed assignment in
mstatusunit tests. - delay implementation does not use binary labels in inline assembly.
[v0.11.1] - 2024-02-15
Changed
- Made
asm::wfi,fence,fence_iandsfencesafe (ie, removedunsafefrom their definitions) - Made
cfgvariable selection more robust for custom targets
[v0.11.0] - 2024-01-14
Added
- Add
asm::ecall(), a wrapper for implementing anecallinstruction - Add
nestedfunction for nested ISRs ininterrupt::machineandinterrupt::supervisor s-modefeature for reexportinginterrupt::machineorinterrupt::supervisortointerrupt- Support for supervisor-level interrupts in
interrupt::supervisor - Add CI workflow to check that CHANGELOG.md file has been modified in PRs
- Add
read_csr_as_rv32,set_rv32, andclear_rv32macros - Add
mstatus::uxlandmstatus::sxl - Add
mstatus::ube,mstatus::sbe, andmstatus::mbeendianness bit fields - Add
mstatushregisters (RISCV-32 only) - Add
asm::fence(), a wrapper for implementing afenceinstruction - Add
asm::fence_i(), a wrapper for implementing afence.iinstruction - Add
TryFromimplementation formcause::{Interrupt, Exception}andscause::{Interrupt, Exception}
Changed
- Cargo workspace for riscv and riscv-rt
- Update
embedded-haldependency to v1.0.0 (bumps MSRV to 1.60) misa::MXLrenamed tomisa::XLEN- Removed
bit_fielddependency - CI actions updated. They now use
checkout@v3anddtolnay/rust-toolchain. mcause::{Interrupt, Exception}andscause::{Interrupt, Exception}now implementFromtrait forusize- Set safety of
asm::nopandasm::delayfunctions to safe.
Fixed
- Fix
scause::ExceptionmissingLoadMisaligned - Fix
scause::ExceptionmissingSupervisorEnvCall - Removed user-level interrupts from
mcause::Interruptandscause::Interrupt - Removed user-level interrupts from
mstatus - Removed machine environment call delegation from
medeleg - Removed user-level interrupts from machine and supervisor mode interrupt-related registers.
Removed
- User mode registers removed, as they are no longer supported in RISC-V
- FCSR register operations removed to avoid UB (#148)
v0.10.1 - 2023-01-18
Fixed
- Fix implementation for
SingleHartCriticalSection
v0.10.0 - 2022-11-09
Added
critical-section-single-hartfeature which provides an implementation for thecritical_sectioncrate for single-hart systems, based on disabling all interrupts.
v0.9.0 - 2022-10-06
Fixed
- Fix
asm::delay()to ensure count register is always reloaded - Fix reading marchid and mimpid (#107)
Removed
set_msoft,clear_msoft,set_mtimerandclear_mtimerremoved as part of fixing issue #62
v0.8.0 - 2022-04-20
Added
- Add
#[cfg(riscv32)]topmpcfg1andpmpcfg3modules - Add enums
Range,Permissionfor PMP configuration - Add
set_pmp()andclear_pmp()functions to pmpcfg(x) modules - Add struct
Pmpcsrand is returned frompmpcfgx::read() - Add
singleton!macro - Add delay structure and methods using embedded-hal traits and
mcycleregister - Add
asm::delay()function for assembly-based busy-loops - Add
asm::nop(), a wrapper for implementing anopinstruction - Add missing
#[inline]attribute to register reads, type conversations andinterrupt::free
Changed
- Use new
asm!instead ofllvm_asm! - Change
pmpcfgx::read()macro toread_csr_as!()fromread_csr_as_usize!() - Inline assembly is now always used
- Update Minimum Supported Rust Version to 1.59
Fixed
- Fix
sfence.vmaoperand order
Removed
- Remove
inline-asmfeature which is now always enabled
v0.7.0 - 2021-07-29
Added
- Add
medelegregister - Add
cycle[h],instret[h]andmcounteren - Add additional binaries for floating-point ABIs
- Add support for
mxr - Add support for
mprv
Changed
- Fix
scause::set - Various formatting and comment fixes
- Update
bare-metaltov1.0.0removingNrtrait - Build targets on
docs.rsare now RISC-V targets other than default ones
v0.6.0 - 2020-06-20
Changed
Mtvec::trap_mode(),Stvec::trap_mode()andUtvec::trap_mode()functions now returnOption<TrapMode>(breaking change)- Updated Minimum Supported Rust Version to 1.42.0
- Use
llvm_asm!instead ofasm!
Removed
- vexriscv-specific registers were moved to the
vexriscvcrate
v0.5.6 - 2020-03-14
Added
- Added vexriscv-specific registers
v0.5.5 - 2020-02-28
Added
- Added
riscv32i-unknown-none-elftarget support - Added user trap setup and handling registers
- Added write methods for the
mipandsatpregisters - Added
midelegregister - Added Changelog
Changed
- Fixed MSRV by restricting the upper bound of
bare-metalversion