Tock 2.2
Tock 2.2 represents two years of Tock development since v2.1.1. This release contains almost 3900 commits made across 840 PRs by 90 contributors (of which 48 are new contributors!). It is the first Tock release that can compile on a stable Rust toolchain, and contains many other important fixes, new subsystems, new platforms, new drivers, and major refactors.
Backwards Compatibility
Tock 2.2 extends its system call interface through one new system call (Yield-WaitFor
), but retains backwards compatibility with Tock 2.1.1 for its core system call interface and all stabilized drivers.
In this release, we revised Tock's alarm system call driver implementation to predictably wrap its ticks
values at (2**32 - 1)
ticks, across all platforms. Before this change, hardware alarm implementations that were less than 32 bit wide would wrap before reaching (2**32 - 1)
ticks, which complicated correct alarm handling in userspace. In Tock 2.2, these alarm implementations are scaled to 32 bit, while also scaling their advertised frequency appropriately. While this change is non-breaking and compatible with the previous alarm implementation, it can expose such scaled alarms to userspace at significantly higher advertised frequency
values. Userspace alarm implementations that did not correctly handle such high frequencies may need to be fixed to support this new driver implementation.
Relevant PRs:
- [RFC] Yield-WaitFor syscall by @ppannuto in #3577
- kernel/hil/time,capsules/alarm: pad Ticks to 32 bit for predictable wrapping by @lschuermann in #3973
- capsules/alarm: left-justify 32 bit ticks, re-architect alarm, add unit tests by @lschuermann in #3975
Security and arch
-crate Fixes
Tock 2.2 includes important and security-relevant fixes for its Cortex-M and RISC-V architecture support.
-
When switching between applications, the RISC-V PMP implementation did not correctly invalidate any additional memory protection regions that are not overwritten by the target app's PMP configuration. Under certain conditions this can allow an application to access private memory regions belonging to a different applications (such as when using IPC).
-
The Cortex-M (Armv7-M) and Cortex-M0/M0+ (Armv6-M) hard fault, interrupt and
svc
handlers contained a bug that could allow an application to execute inprivileged
mode after returning from the handler. This allows an application to execute code at kernel privileges and read / write arbitrary memory.
Relevant PRs:
- [RFC] Yield-WaitFor syscall by @ppannuto in #3577
- kernel/hil/time,capsules/alarm: pad Ticks to 32 bit for predictable wrapping by @lschuermann in #3973
- capsules/alarm: left-justify 32 bit ticks, re-architect alarm, add unit tests by @lschuermann in #3975
Stable Rust Support
This release removes all nightly Rust features from all of Tock's core kernel crates (such as kernel
, arch/*
, and chips/*
). This allows Tock to be built on the Rust stable toolchain for the first time!
We demonstrate this by switching the hail
board to a stable toolchain in this release. We continue to compile other boards on the Rust nightly toolchain, as this enables some important code-size optimizations (such as by compiling our own, size-optimized core library).
Relevant PRs:
- [RFC] Yield-WaitFor syscall by @ppannuto in #3577
- kernel/hil/time,capsules/alarm: pad Ticks to 32 bit for predictable wrapping by @lschuermann in #3973
- capsules/alarm: left-justify 32 bit ticks, re-architect alarm, add unit tests by @lschuermann in #3975
AppID
, Credentials and Storage Permissions
This Tock release revisits how applications are identified in the kernel, and introduces a set of mechanisms that allow developers to identify, verify, and restrict applications that are running on a Tock kernel. AppIDs are the core mechanism to enable this and identify an application contained in a userspace binary. AppIDs allow the kernel to apply security policies to applications as their code evolves and their binaries change. We specify AppIDs, Credentials and their interactions with process loading in a draft TRD.
Additionally, we introduce a mechanism to assign applications permissions to access some persistent storage (e.g., keys in a key value store). This mechanism interacts with AppIDs (ShortIDs) and is also specified in a a draft TRD.
Relevant PRs:
- Adding App IDs and userspace binary integrity to the Tock kernel by @phil-levis in #2809
- AppID/TBF: Add
ShortId
header by @bradjc in #4026 - HIL: Add Signature::verify with
const L:usize
and process checker for signatures by @bradjc in #3878 - TRD: Tock Storage Permissions by @bradjc in #4021
- Add support for ECDSA NIST P256 signature credentials by @alistair23 in #4165
- Storage Permissions: Implement to match TRD by @bradjc in #4031
Major Refactors and Interface Changes
We implement a number of kernel-internal refactors and interface changes:
-
System call drivers are now mandated to either return
Success
orFailure(ErrorCode::NODEVICE)
for acommand
system call with command number0
. Previously, some drivers used this command number to also convey additional information to userspace. This release does not change the interface of any stabilized drivers, which will be updated as part of Tock 3.0.Relevant PRs:
- Syscall Spec: Allow Command 0 to return Success with value or lock it down by @ppannuto in #3626
- Update command 0 comments on stabilized userspace drivers by @hudson-ayers in #3402
- capsules: ensure driver existence check by @Samir-Rashid in #3613
-
Tock 2.2 introduces [a new policy to support external dependencies][external-deps] in the upstream Tock codebase. As part of this effort, we split up the existing, single
capsules
crate into multipe crates (such ascapsules-core
,capsules-extra
, andcapsules-system
) with different guarantees concerning stability and use of external dependencies. Thecore
capsules crate contains capsules deemed essential to most Tock systems, as well as virtualizers which enable a given single peripheral to be used by multiple clients. Other capsules have been moved to theextra
capsules crate. Thesystem
capsules crate contains components that extend the functionality of the Tock core kernel, while not requiringunsafe
.Relevant PRs:
- doc: Add Ex 8000 ternalDependencies.md by @alistair23 in #3312
- capsules: split into
core/
andextra/
(implementing #3346) by @lschuermann in #3396 - Create system capsules crate, move kernel implementations, update boards by @bradjc in #3992
-
Furthermore, the
DeferredCall
andDynamicDeferredCall
subsystems have been replaced with a more lightweight and unified deferred call infrastructure. This new approach has a smaller code size overhead and requires less setup boilerplate code thanDynamicDeferredCall
.Relevant PR:
- Replace
DeferredCall
andDynamicDeferredCall
with a more general-purpose implementation by @hudson-ayers in #3382
- Replace
-
LeasableBuffer
has been renamed toSubSlice
and features a significantly improved API. Multiple subsystems have been ported to this new type.Relevant PRs:
- kernel: LeasableBuffer: fix double slice end value by @bradjc in #3511
- kernel: leasablebuffer: add APIs by @bradjc in #3505
- Rename
LeasableBuffer
toSubSlice
by @bradjc in #3519 - Switch SPI master HIL to leasable buffers instead of raw slices by @alevy in #4173
- ot: tests: switch to subslice by @bradjc in #3570
- ot: tests: LB->SS by @bradjc in #3573
- Screen: update HIL to simplify, format, and use SubSlice by @bradjc in #3792
- kernel: SubSlice: fix slice calculation by @bradjc in #3791
-
Tock 2.2 introduces "configuration boards": variants of in-tree board definition showcasing certain subsystems or peripherals. These boards (under
boards/configurations
) are implemented by converting some Tock boards into combined "lib + bin" crates and extending these boards.Relevant PRs:
- boards: remove nrf52840dk demo by @bradjc in #3580
- Add Configuration Boards by @bradjc in #3873
- Add nRF52840DK-based Thread tutorial board definition by @lschuermann in #3979
- boards/nrf52840dk: split into lib+bin crates for configuration/tutorial boards by @lschuermann in #3981
- boards: add tutorial board for HOTP tutorial by @bradjc in #4027
-
Tock can now be built entirely using
cargo
and without its Makefiles. This change also simplifies downstream board definitions:Relevant PR:
-
A new
StreamingProcessSlice
helper provides a reusable data structure to convey a "stream" of data from capsures to userspace. This is used in Tock's new CAN driver, and is useful for ADC, networking, etc.Relevant PR:
-
Tock introduces a new interface for custom implementations of the userspace-syscall boundary to hook into the RISC-V trap handler, by specifying which registers are clobbered and providing a generic trampoline to jump to custom code on a trap.
Relevant PR:
- arch/rv32i: separate kernel and app trap handlers by @lschuermann in #4009
New Boards
This release features support for 7 new boards in the upstream Tock codebase:
- sma_q3 by @dcz-self in #3182
- particle_boron by @twilfredo in #3196
- BBC HiFive Inventor by @mateibarbu19 in #3225
- SparkFun LoRa Thing Plus by @alistair23 in #3273
- makepython-nrf52840 by @bradjc in #3817
- Nano33BLE Sense Rev2 by @TheButterMineCutter in #3717
- VeeR EL2 simulation target by @wsipak in #4118
New HILs, Drivers and Features
Tock 2.2 features 6 new HILs:
- CAN bus by @teonaseverin in #3301
Buzzer
by @TeodoraMiu in #3084DateTime
by @Remus7 in #3559CycleCounter
by @codingHahn and @hudson-ayers in #3934public_key_crypto/SignatureVerify
by @bradjc in #3878Servo
by @inesmaria08 in #4126
An additional 40 PRs added support for various hardware peripherals, subsystems and other features:
- Add makepython-nrf52840 board, SSD1306 OLED driver, and SharedScreen SyscallDriver by @bradjc in #3817
- Apollo3 Add support for SPI by @alistair23 in #3243
- Sifive uart receive by @mateibarbu19 in #3240
- Sifive uart abort by @mateibarbu19 in #3253
- opentitan: add watchdog/aon_timer by @twilfredo in #3208
- Initial VirtIO support for VirtIO Net & RNG on
qemu_rv32_virt
target by @lschuermann in #3110 - PWM Syscall Driver by @TeodoraMiu in #3367
- chips/qemu_rv32_virt_chip: implement basic UART RX and add process console to board by @lschuermann in #3365
- capsules: Add support for AES GCM by @alistair23 in #3092
- Add hmac-sha256 software capsule by @bradjc in #3502
- capsules: kv_store: implement virtualization by @bradjc in #3490
- Full KV stack update PR by @bradjc in #3508
- nrf52: adc: Add highspeed implementation. by @bradjc in #3453
- HMAC sha256: replace buffer and add verify support by @bradjc in #3561
- Add
capsules/tutorials
crate and add encryption oracle capsule by @lschuermann in #3562 - KV: Separate virtualization from KV implementation, New KV trait 8000 , Set/Add/Update by @bradjc in #3551
- Basic system clock management for the STM32F4 family by @Ioan-Cristian in #3528
- Component and Capsule for BMM150 Sensor by @TheButterMineCutter in #3713
- Extend feature support for lowrisc UART by @jon-flatley in #3729
- stm32f4xx: Add DAC Driver by @asbarnes in #3741
- chips/apollo3: uart: Add UART receive support by @alistair23 in #3763
- arch/rv32i: re-design PMP architecture & implement OpenTitan EarlGrey-specific ePMP by @lschuermann in #3597
- Segger RTT Receive by @alevy in #4130
- Screen driver for SMA Q3 by @alevy in #4132
- chips: apollo3: Support the flash controller by @alistair23 in #4123
- HC_SR04 Distance Sensor Driver by @cristianaprecup in #4138
- Soil Moisture Sensor Support by @alistair23 in #4144
- USB implementation for Raspberry Pi Pico by @TeodoraMiu in #3310
- Capsule: AT24C32/64 support by @j-kk in #3547
- Added Driver and Component for Hs3003 Sensor by @TheButterMineCutter in #3666
- Component and Capsule for LPS22HB Sensor by @TheButterMineCutter in #3699
- Add stm32f4xx HSE (high-speed external) clock support by @asbarnes in #3750
- apollo3: Add support for the I2C slave hardware by @alistair23 in #3781
- tock-registers: added
debug()
method in registers for better human readable debug output by @Amjad50 in #3771 - capsules: add sh1106 OLED screen driver by @bradjc in #3944
- Raw Receive by @tyler-potyondy in #3919
- boards/apollo3: redboard_artemis_atp: Enable SPI controller by @alistair23 in #3994
- Initial support for the ATECC508A by @alistair23 in #3696
- PIO support for RP2040 by @mateir-7 in #4179
- Temporally order userspace print statements with kernel debug statements by @phil-levis in #3327
IEEE 802.15.4 and 6LoWPAN Stack
We can now join a Thread network by running OpenThread as a libtock-c userspace implementation, thanks to a major refactor and redesign of Tock's IEEE 802.15.4 and 6LoWPAN stack.
Known issue: UDP transmit functionality is currently broken with a bug / inconsistency between the kernel and libtock-c implementation. When executing the transmit syscall, the libtock-c application fails to provide the src address and fails the error check that occurs for the transmit syscall. For more information, see the Tock 2.2 release testing issue: #4272 (comment)
Relevant PRs:
- Rewritten nRF52840 802.15.4 driver adding software ACK on receive by @tyler-potyondy in #3615
- 15.4 link layer security - encryption/decryption by @tyler-potyondy in #3652
- 6LoWPAN Packet Filtering by @tyler-potyondy in #3660
- Thread Network Child Device by @tyler-potyondy in #3683
- 802.15.4 Send Raw Syscall by @tyler-potyondy in #3851
- 15.4 Radio channel Enum by @tyler-potyondy in #3904
- 15.4 Receive Ring Buffer by @tyler-potyondy in #3899
- EUI-64 Capsule by @tyler-potyondy in #3947
- nrf52840 802.15.4 LQI by @tyler-potyondy in #3972
- 802.15.4 HIL updates; nRF52840 IEEE 802.15.4 Driver Updates by @bradjc in #3995
- 802.15.4: Add raw userspace driver by @bradjc in #4016
- 802.15.4: Revert raw/encrypted receive by @bradjc in #4014
- 802.15.4: Revert raw TX in 15.4 stack by @bradjc in #4015
- boards: nrf52840dk: Make 15.4 stack optional; add raw 15.4 stack to tutorial board by @bradjc in #4018
- 802.15.4: Add 15.4 Stack Readme by @bradjc in #4022
- Add 802154 support to the nrf52833 and microbit v2 by @alevy in #4225
- IEEE802.15.4 RxClient Encrypted Receive by @tyler-potyondy in #3940
- nrf52840 IEEE802.15.4 driver drop corrupted packets by @tyler-potyondy in #3985
Fixes, Improvements and Refactors
Another 482 pull requests implement various fixes, improvements and refactors.
Pull Request List:
- LEDs array in LED Driver does not need to be mut by @brghena in #3135
- Refresh the process console list command output by @bradjc in #3167
- capsules: sha256: impl sha256 trait by @bradjc in #3172
- arm/cortex-m/syscall: replace volatile userspace RAM accesses with regular pointer reads/writes by @lschuermann in #3095
- Process Console New(ish) Commands by @bradjc in #3171
- HIL: Make TemperatureClient receive Result<i32, ErrorCode> values by @dcz-self in #2967
- Screen HIL: Fix set_brightness by @dcz-self in #3177
- litex-sim-ci: update Tockloader & libtock-c rev, change to rv32imc by @lschuermann in #3210
- boards/opentitan: fixup flash_ctrl test by @twilfredo in #3213
- Revert "boards/redboard_artemis: Workaround Hard Fault Exception" by @bradjc in #3211
- Added missing base frequency config for e310x by @mateibarbu19 in #3215
- ESP32-c3 Build Fixes, add docs for flashing apps by @TheConner in #3218
- microbit_v2: fixed openocd flashing script by @mateibarbu19 in #3226
- cortex-m: mpu: simplify error check by @bradjc in #3201
- tock-register-interface: don't encapsulate test_fields! tests in mod by @lschuermann in #3230
- stm32f412g: make user/kernel code boundary fall on flash sector boundary by @hudson-ayers in #3181
- imix: fix driver num for humidity used for component by @bradjc in #3236
- boards: linker: remove MPU alignment by @bradjc in #3198
- cortex-m: mpu: do not give all memory to process in certain case by @bradjc in #3200
static_buf!()
: RemoveStaticUninitializedBuffer
andUninitializedBuffer
in favor ofMaybeUninit
, update component conventions to match by @hudson-ayers in #3239- RFC: Cortex-M: Use two MPU regions for app memory rather than one by @bradjc in #3202
- OpenTitan: Bump to the latest RTL SHA by @alistair23 in #3056
- Fix UartMux to be able to use multiple muxes by @alexandruradovici in #3216
- AppID: Remove OptionalCell by @bradjc in #3241
- boards/opentitan: fixup tickv & flash: add safegaurds by @twilfredo in #3248
- chips/earlgrey/aes: Fixup AES for Verilator by @twilfredo in #3214
- Update components to use _static and static_buf!(): straightforward components by @bradjc in #3255
- boards/opentitan: App loading for Verilator by @twilfredo in #3269
- components: fxo: update to new _static by @bradjc in #3237
- component: update process console by @bradjc in #3259
- component: update udp to new static by @bradjc in #3260
- component: update ft6x06 to new static by @bradjc in #3261
- Component: Update bmX280 components by @bradjc in #3232
- boards/opentitan/Makefile: add OT version check by @twilfredo in #3271
- sifive: fix RX interrupt disable clobbering TX by @gemarcano in #3272
- hifive1: reduce main() stack frame size by @gemarcano in #3265
- boards/opentitan: add entrypoint override by @twilfredo in #3251
- component: update ambient light by @bradjc in #3234
- components: several updated components with complex macros by @bradjc in #3274
- components: Update components used by OpenTitan by @bradjc in #3280
- component: update alarm by @bradjc in #3281
- component: update ieee802154 by @bradjc in #3284
- component: update remaining sensors by @bradjc in #3285
- Rename appid and app_id to processid by @alexandruradovici in #3291
- components: update scheduler components by @bradjc in #3275
- component: update debug_* to new static by @bradjc in #3282
- component: update various bus components by @bradjc in #3286
- component: update gpio to new static name by @bradjc in #3292
- ADC: Add set_client() to AdcHighSpeed trait (take #2) by @bradjc in #3290
- replace rf233 and usb imix components with generic components + update mock_udp component by @hudson-ayers in #3293
- Component: Move ADC components to new _static macro by @bradjc in #3231
- component: add a variety of new components to remove some
static mut
by @bradjc in #3288 - kernel: remove static_init_half!() macro by @bradjc in #3287
- kernel: don't use
static mut
whenconst
would suffice by @hudson-ayers in #3298 - Make generic BLE component by @hudson-ayers in #3296
- virtual_alarm: add unit test for quick alarm case and fix by @jettr in #3277
- RFC: remove kernel work counting optimization by @hudson-ayers in #3158
- Make
Component::finalize()
a safe trait method by @hudson-ayers in #3297 - esp32-c3-devkit-m1 GPIO Fixes by @TheConner in #3294
- boards/opentitan: bump to latest master RTL SHA by @twilfredo in #3249
- Decrease kernel size and return NODEVICE error by @alexandruradovici in #3276
- kernel: hil: rsa_math: Fixup the mutable Client by @alistair23 in #3309
- Increase the kernel flash space for Raspberry Pi Pico by @alexandruradovici in #3314
- kernel: fixup typo for struct ProcessCustomGrantIdentifier | capsule: typo for TickFSFlashCtrl by @twilfredo in #3323
- Apollo3: A collection of fixes and improvements by @alistair23 in #3324
- chips/lowrisc/spi_host: refactor and rustify. by @twilfredo in #3329
- boards/opentitan: fix verilator app support by @twilfredo in #3320
- libraries/tock-cells/OptionalCell: remove
T: Default
constraint by @lschuermann in #3334 - Increased the stack memory for the microbit board because of stack overflow by @JADarius in #3339
- kernel/hil/flash: add memory protection, impl/connect/test for OpenTitan by @twilfredo in #3250
- chips/sifive/clint: make generic over timebase
Frequency
by @lschuermann in #3333 - chips/lowrisc: small refactor / reduce some bloat by @twilfredo in #3335
- Only suggest make lst for libtock-c by @hudson-ayers in #3351
- boards/apollo3: lora_things_plus: Expose SPI to userspace for SX1262 by @alistair23 in #3330
- Update
VolatileCell
using thevcell
crate'sVolatileCell
. by @jrvanwhy in #3344 - Fix nano33 panic by incrementing number of deferred call clients by @hudson-ayers in #3362
- Enable virtual function elimination by default for OpenTitan by @jwnrt in #3358
- boards/opentitan: bump to latest rtl sha by @twilfredo in #3359
- Re-add OpenTitan's VFUNC_ELIM flag by @jwnrt in #3374
- Fix Imix to not require process credential checking by default by @hudson-ayers in #3376
- Make the set_clocks functions of the RP2040 drivers public to crates only by @JADarius in #3373
- debug_writer_component: make debug buffer size configurable; double default debug buffer size by @hudson-ayers in #3369
- rv32i: force semihosting insn sequence to be contained in single page by @lschuermann in #3364
- ADC pending command functionality by @TeodoraMiu in #3368
- fixed i2c buffer len by @teonaseverin in #3384
- sifive and hifive1: support 344MHz system clock by @gemarcano in #3283
- MLFQSched: fixed invalid logic in redeem_all_procs by @D0x45 in #3390
- kernel: sched: mlfq by @bradjc in #3391
- multiple boards: refactored GET_PERIPHERALS by @RaresCon in #3385
- Process console command history by @CosminGGeorgescu in #3381
- boards/qemu_rv32_virt: set minimum reqd QEMU version to 7.2.0, fix Makefile rules, add documentation by @lschuermann in #3370
- Update pinned Tockloader revision in shell.nix by @lschuermann in #3395
- Update rp2040 boards by @alexandruradovici in #3399
- Add reset to process console by @alexandruradovici in #3398
- Fix temperature value by @alexandruradovici in #3400
- Add correct handling of Userspace Binary version numbers to boot sequence by @phil-levis in #3307
- kernel: util: static ref deref return type by @bradjc in #3392
- Fix process console by @alexandruradovici in #3403
- boards/opentitan: Enable SPI tests for QEMU by @twilfredo in #3295
- Rename
matches_any()
toany_matching_bits_set()
, implement newmatches_any()
by @hudson-ayers in #3336 - Fixed svd2regs.py by @Ioan-Cristian in #3406
- boards/opentitan: bump opentitan commit sha by @twilfredo in #3408
- arch: cortex-m: format and comment assembly by @bradjc in #3306
- arch/rv32i: clobber kernel registers instead of manual (un)stacking by @lschuermann in #3407
- Update OpenTitan Makefile and build examples by @jwnrt in #3411
- rust: update nightly apr 2023 by @bradjc in #3421
- lora-phy: Add support for a LoRa capsule by @alistair23 in #3360
- chips: apollo3: Set a second timer for alarms by @alistair23 in #3426
- nrf52: support new access port protection mechanism on new nRF52 chips by @bradjc in #3422
- shell.nix: change pytoml Tockloader dependency to toml by @lschuermann in #3436
- Change the I2C implementation to use generics by @JADarius in #3431
- UDPHeader Visibility by @tyler-potyondy in #3447
- Implementing Escape State Machine for process console and command navigations by @mihai-negru in #3414
- process: print: display credential, if available by @bradjc in #3451
- hil: screen: make client 'a by @bradjc in #3461
- Remove 'static from ADC HIL client by @bradjc in #3455
- hil: remove 'static for client in radio by @bradjc in #3459
- Update PWM components names by @bradjc in #3454
- hil: i2c: remove 'static from client by @lschuermann in #3467
- nRF52: update usb with new variant by @bradjc in #3438
- TicKV: Use const parameter rather than assume 2048 byte pages by @bradjc in #3458
- boards: nrf52840dk: fix ctap example code by @bradjc in #3439
- make: llvm-tools no longer preview by @bradjc in #3443
- kernel: minor updates to platform.rs by @bradjc in #3444
- Fixes RNG capsule re-enter by @kaczmarczyck in #3475
- capsules: remove lingering pub static mut by @bradjc in #3464
- capsules: tickv: do operation after init on already init by @bradjc in #3456
- siphash24: add test by @bradjc in #3473
- hil: spi: remove 'static from client by @bradjc in #3460
- hil: dac: remove init by @bradjc in #3463
- chips: nrf52: spi: auto disable when unused by @bradjc in #3466
- capsules: change ctap to usb hid by @bradjc in #3440
- usb: add USB HID keyboard support by @bradjc in #3441
- capsules: tickv: hashed keys big endian by @bradjc in #3474
- kernel: hil: kv: clarify append semantics by @bradjc in #3487
- tickv: return value buffer on append fail by @bradjc in #3488
- capsules: kv driver: need to clear buffers by @bradjc in #3493
- nrf52840dk board: comment and organize main.rs file by @bradjc in #3465
- Fix single APP panic in kernel scheduler by @qazwsxedcrfvtg14 in #3498
- makefile: bump qemu version by @twilfredo in #3501
- kernel: StoragePermissions: add "kerneluser" storage access by @bradjc in #3470
- Fix global pointer setup code by @nbdd0121 in #3516
- increase stack size for microbit by @hudson-ayers in #3510
- nRF52 AES Improvements by @bradjc in #3448
- Ensure Rust code generated is eligible for linker relaxation by @nbdd0121 in #3517
- Fix rustfmt errors by @bradjc in #3512
- kernel: hil: Various spelling fixes by @bradjc in #3513
- tools: run_cargo_fmt.sh: Don't run format on QEMU Rust code by @alistair23 in #3525
- Fix errors when running QEMU tests for OpenTitan by @nbdd0121 in #3530
- chips: apollo3: Remove invalid interrupt config by @alistair23 in #3526
- kernel: HIL: digest: add set_client() for
ClientDataHash
andClientDataVerify
by @bradjc in #3479 - boards: apollo3: README: Update LoRa examples by @alistair23 in #3527
- Redefine TBF
protected_size
field to aprotected_trailer_size
by @lschuermann in #3515 - Fix negative padding reports in print_tock_memory_usage.py by @nbdd0121 in #3534
- chips/earlgrey: convert CONFIG to trait, make board-configurable by @lschuermann in #3640
- capsules: rename KVSystem to Kv by @bradjc in #3649
- make: add libraries/tickv to cargo test by @bradjc in #3638
- make: check for shasum (exists on mac) by @bradjc in #3655
- capsules: BUGFIX: backspace/delete would send an extra EOL char by @george-cosma in #3654
- components: hmac: use correct set_client by @bradjc in #3668
- tickv: handle additional read by @bradjc in #3667
- Fix Commented HID Initialization Code by @ethanzhouyc in #3669
- OpenTitan: Switch the I2C driver to generated registers. by @jrvanwhy in #3689
- derive Debug on Value by @andreeaflorescu in #3687
- Capsules: temp/humidity: better handling of busy flag by @bradjc in #3679
- Earlgrey: Update cw310 FPGA clock frequencies by @jrvanwhy in #3703
- boards: opentitan: Fixup existing test cases by @alistair23 in #3685
- HIL, Capsule, and Component for Pressure Sensors by @TheButterMineCutter in #3690
- Flash error improvement by @Ioan-Cristian in #3697
- HS3003: Removed Unnecessary Code by @TheButterMineCutter in #3708
- OpenTitan Earlgrey pinmux implementations by @mazurek-michal in #3707
- Add
pub type
to components by @bradjc in #3657 - TicKV: Zeroizing a key to remove data by @AndrewImwalle in #3715
- virtual_alarm: Do not disarm when setting client. by @jettr in #3712
- Process trait improvements by @Ioan-Cristian in #3716
- boards/opentitan: README: Fixup bitstream version by @alistair23 in #3718
- libraries/tickv: Implement key Zeroise by @alistair23 in #3721
- Make UART registers for Nrf52840 configurable by @Niederb in #3722
- chips/lowrisc: spi_host: Enable interrupts before operation by @alistair23 in #3730
- shell.nix: use fenix overlay by @Samir-Rashid in #3727
- scheduler/round_robin: Allow timeslice to be configured. by @granaghan in #3734
- boards: particle_boron: collection of improvements by @twilfredo in #3733
- arch/cortex-m: fix typo in asm comment of switch_to_user_arm_v7m by @lschuermann in #3742
- Only write the no-wait flag in yield-no-wait. by @jrvanwhy in #3740
- Fix RX race condition in lowrisc UART by @jon-flatley in #3743
- cortex-m: cleanup linker constants by @ppannuto in #3150
- Refactoring of Earlgrey GPIO driver by @mazurek-michal in #3710
- nrf52: i2c: fixup buffer usage by @twilfredo in #3747
- lowrisc: usb: change while to if by @bradjc in #3749
- Temperature Stack: Use templated capsules by @bradjc in #3681
- nrf5x: gpio: add i2c pin config | particle_boron: fixup i2c pin cfg by @twilfredo in #3746
- Modified LPS22HB Capsule by @TheButterMineCutter in #3751
- chips: nrf52: i2c: fixup register bitfield by @twilfredo in #3761
- boards: hifive*: use start() by @bradjc in #3768
- boards: clue-nrf52840: use start() by @bradjc in #3767
- boards: acd52832: use start() by @bradjc in #3766
- boards: arty: use start() by @bradjc in #3765
- hil: digest: fix comment by @bradjc in #3773
- capsules: i2c_master: Relay Nak to userspace by @alistair23 in #3764
- chips/apollo: iom: Report Nacks to the caller by @alistair23 in #3762
- boards: add wm1110-dev board by @bradjc in #3653
- trd: legal: fix spdx url by @bradjc in #3784
- Minor kernel doc improvements and updates by @bradjc in #3783
- chips: apollo3: uart: Support recieve and transmit at the same time by @alistair23 in #3789
- Update rust january 2024 by @bradjc in #3748
- Component type keyboard hid by @bradjc in #3774
- components: hmac: add component types by @bradjc in #3775
- capsules: tickv: not ready cases need flash loop by @bradjc in #3776
- capsules: i2c_master_slave_combo: Initial commit by @alistair23 in #3786
- OpenTitan: Fix broken UART and missing test cases by @alistair23 in #3754
- Update pinned tock-litex release to 2024011101 by @lschuermann in #3790
- capsules: console/virtual_uart: Report receive errors to userspace by @alistair23 in #3787
- components: console: support configurable buffers by @twilfredo in #3801
- Disconnect debug-related pins from GPIO by default in OpenTitan by @jwnrt in #3809
- Bus component bug fix by @CristianSLazar in #3810
- boards: particle_boron: collection of updates/drop pconsole by @twilfredo in #3800
- kernel: appchecker: compress: pass &Process by @bradjc in #3796
- kernel: process: add get_short_id() to ProcessId by @bradjc in #3795
- Common build.rs script by @jwnrt in #3782
- doc: syscall: add K-V syscall doc by @bradjc in #3785
- boards/apollo3: redboard_artemis_atp: Initial commit by @alistair23 in #3804
- tock-tbf: fix footer parsing error type by @bradjc in #3793
- humidity: Match temperature and use templated sensor by @bradjc in #3807
- board: earlgrey: Fix number of IRQ in PLIC by @mazurek-michal in #3819
- Add toml extension to .cargo/config files by @jwnrt in #3823
- kernel: appchecker: add shortid based on names by @bradjc in #3818
- opentitan: Rearrange UARTs and I2Cs. by @jrvanwhy in #3827
- Boards: wm1110dev updates: remove build.rs, update readme by @bradjc in #3837
- arch: cortex-v7m: use the same asm! format by @bradjc in #3832
- kernel: utilities: add crc32_posix by @bradjc in #3829
- chips/apollo3: A collection of I2C fixes by @alistair23 in #3840
- litex-sim-ci: update pinned libtock-c, remove custom riscv toolchain by @lschuermann in #3848
- Unbreak CI on master by @lschuermann in #3857
- libraries: tock-tbf: fix footer parse error by @bradjc in #3846
- boards: nordic: use start() by @bradjc in #3836
- kernel: syscall: add driver_num helper functions by @bradjc in #3856
- stm32f4xx: handle usart overrun error by @mattmart3 in #3844
- components: Add types for several basic components by @bradjc in #3853
- kernel: process_std: easy copy
make debug
by @bradjc in #3863 - kernel: sched: round-robin: handle empty process array by @bradjc in #3870
- Avoid creating intermediate Rust references when taking pointers of memory / extern statics by @lschuermann in #3824
- process_console: display completion code as isize by @bradjc in #3862
- process_console: fix char deletion handlers by @mattmart3 in #3868
- boards: nucleo: use start() by @bradjc in #3860
- Remove Redundant Imports by @bradjc in #3875
- hmac test: fix set_client by @bradjc in #3869
- Fix conditional compilation #[cfg( matches for arch & target_os by @lschuermann in https://github.com//pull/3865
- IEEE802.15.4: Remove dyn, change to template by @bradjc in #3859
- Resolve "unused import:
core::arch::global_asm
" warnings. by @jrvanwhy in #3887 - Capsules: AES test: make decryption optional by @bradjc in #3872
- Add a
CapsuleTest
trait by @bradjc in #3871 - RNG: template and add
RngComponentType
by @bradjc in #3855 - arch/cortex-m3: re-export
unhandled_interrupt()
by @wprzytula in #3889 - stm32f4xx: expose clock frequency to peripherals by @mattmart3 in #3888
- Fix panic printing by @Ioan-Cristian in #3896
- print-tock-memory-usage.py: fix regex warnings by @hudson-ayers in #3893
- capsules: test: sha256 implement CapsuleTest by @bradjc in #3897
- test_fields!: stringify offset and size in error messages by @yuriishutkin in #3901
- Arch: Cortex: Fix stack addresses for kernel hardfault debug message by @bradjc in #3900
- Get Process Buffer API by @tyler-potyondy in #3861
- arch/cortex-m3: re-export
initialize_ram_jump_to_main
by @wprzytula in #3917 - TBF Header: Store slices instead of parsed objects by @bradjc in #3902
- Doc: update boards readme with new boards and add script by @bradjc in #3908
- tock-registers: Fix a
cargo miri test
memory leak error. by @jrvanwhy in #3918 - boards: rpi: use start() by @bradjc in #3914
- kernel: deferred call: better error panic by @bradjc in #3916
- stm32f429zi: rtc deferred call by @bradjc in #3915
- Code updates from new nightly by @bradjc in #3921
- kernel: process loading: update comments & remove capabilities by @bradjc in #3509
- tock-cells: change
OptionalCell::map
to pass a copy into the closure by @lschuermann in #3535 - boards: microbitv2: use helper function in main by @bradjc in #3514
- capsules: remove virtual_[digest|flash|sha].rs which do not virtualize by @bradjc in #3503
- capsules: tickv: call error cb on append error by @bradjc in #3489
- Switch to v0 mangling scheme and port print_tock_memory_usage.py by @nbdd0121 in #3539
- tickv: remove get_buffer functions by @bradjc in #3491
- kernel/platform/mpu: don't provide default impls for methods by @lschuermann in #3550
- pconsole: display ShortID by @bradjc in #3548
- tock-cells/OptionalCell: rename extract-method to get by @lschuermann in #3536
- usb: keyboard: do not retry send on ctrl finish by @bradjc in #3545
- Add reset function to cortexm::support by @alexandruradovici in #3404
- Make StaticRef NonNull by @kupiakos in #3552
- boards: apollo3: Use helper function in main by @alistair23 in #3520
- Fix MapCell safety 2.0 by @kupiakos in #3537
- boards: nrf52840: increase kernel space by @bradjc in #3565
- storage permissions: clarify naming by @bradjc in #3554
- usb_hid: disambiguate RESERVE/BUSY by @ppannuto in #3553
- Fix NRF52 nvmc register offset and use by @bradjc in #3564
- pconsole: support a "hibernation" mode by @bradjc in #3557
- capsules/extra/tutorials/encryption_oracle: add DRIVER_NUM by @lschuermann in #3567
- Add openocd to shell.nix by @alevy in #3571
- kernel/process_standard: ensure kernel_memory_break align & cleanup by @lschuermann in #3556
- capsules: virtual_uart: ensure inflight is None on error by @bradjc in #3584
- kernel/platform/mpu: remove dependence on ProcessID and assumptions by @lschuermann in #3540
- components: add SW SHA256 and HMAC-SHA256 by @bradjc in #3579
- Update rust-toolchain to nightly of 2023-07-30 by @lschuermann in #3582
- infra: upgrade to rust-toolchain.toml by @ppannuto in #3593
- rustup: need version 1.23.0 by @bradjc in #3594
- Update OpenTitan to
Earlgrey-M2.5.2-RC0
by @cfrantz in #3586 - Use autogenerated register constants for OpenTitan by @cfrantz in #3587
- Fix linker script calculations by @cfrantz in #3601
- Update OpenTitan to use auto-generated base address constants by @cfrantz in #3598
- boards: nano33ble: use start function by @bradjc in #3602
- kernel_layout: remove eh_frame_hdr by @robyale in #3603
- Update thiserror to 1.0.44. by @jrvanwhy in #3609
- opentitan: tests: fix test order for flash/aes by @twilfredo in #3616
- workflows/litex_sim: add mirror for the pre-compiled RISC-V toolchain by @lschuermann in #3621
- New approach for kernel attributes by @bradjc in #3588
- boards: nrf52840dk: increase RTT wait by @bradjc in #3625
- litex_sim CI: fix RISC-V precompiled GCC toolchain URL by @lschuermann in #3630
- shell.nix: update to Tockloader v1.10.0 with optional unfree pkgs by @lschuermann in #3629
- Add TicKV to nrf52840dk by @bradjc in #3522
- clippy: -D ptr_eq by @bradjc in #3636
- clippy: -D unused_unit by @bradjc in #3634
- TicKV: Fix garabage collect for async and update tests by @bradjc in #3619
- Split out (almost) all remaining clippy lints by @bradjc in #3632
- chips/lowrisc/uart: fix spurious RX buffer underrun error condition by @lschuermann in #3641
- clippy: -D clippy::enum_glob_use by @bradjc in #3644
- TicKV: Add a search test by @bradjc in #3623
- rv32i: use la instruction, pass in linker vars by @bradjc in #3624
- clippy: -D unnecessary_cast by @bradjc in #3633
- clippy: -D needless_borrow by @bradjc in #3635
- Update deprecated VSCode settings by @CosminGGeorgescu in #3628
- kernel: export
StoppedExecutingReason
by @bradjc in #3648 - boards/pico_explorer_base: add buzzer driver by @irina-nita in #3646
- libraries: tickv: Fixup the broken region search by @alistair23 in #3618
- Clippy: -D question_mark by @bradjc in #3645
- clippy: -D clippy::manual-memcpy by @bradjc in #3656
- clippy: Address several complexity lints by @bradjc in #3637
- Clippy: Enable many style lints by @bradjc in #3643
- clippy: fix some pedantic lints by @bradjc in #3664
- clippy: now disallow everything by @bradjc in #3665
- clippy: -D clippy::needless_lifetimes by @bradjc in #3674
- clippy: -D clippy::bool_comparison by @bradjc in #3676
- boards: fix clippy ==true by @bradjc in #3680
- clippy: -D clippy::explicit_counter_loop by @bradjc in #3675
clippy::unnecessary-cast
lint fixes by @lschuermann in #3726- Document Code Review Principles by @bradjc in #3596
- capsules: remove doc leftovers on
SyscallDriver
impls by @elenaf9 in #3532 - Clippy: Move configuration to Cargo.toml by @bradjc in #4082
- clippy: deny
unnecessary_unwrap
by @bradjc in #4090 - clippy: deny
needless_match
by @bradjc in #4091 - clippy: deny
type_repetition_in_bounds
by @bradjc in #4092 - clippy: deny
needless-if
by @bradjc in #4095 - clippy: deny
explicit_auto_deref
by @bradjc in #4096 - clippy: deny
borrow_deref_ref
by @bradjc in #4093 - clippy: deny
from-over-into
by @bradjc in #4097 - wm1110: add nonvolatile storage by @bradjc in #3920
- makefile: add readme check target for CI by @bradjc in #3913
- use
usize::checked_next_multiple_of
by @folkertdev in #3924 - Add Asynchronous Process Loader, Split Credential Traits, Make Process Checking pre-Kernel Loop by @bradjc in #3849
- Console: notify app if transmit fails by @bradjc in #3585
- stm32f429idiscovery: make and openocd updates by @bradjc in #3925
- Pin hail stable to 1.76 until static mut fixed by @alevy in #3930
- boards: stm32: use std openocd config by @bradjc in #3926
- Move MacOS build from regular CI to nightly by @alevy in #3932
- arch/cortex-m3: re-export interrupt mask by @wprzytula in #3935
- [opentitan] Fix spurious
0
byte reads on the LowRISC UART driver. by @jrvanwhy in #3927 - capsules: ssd1306: fix column command fmt by @bradjc in #3943
- IEEE802.15.4 Framer PSDU Offset Fix by @tyler-potyondy in #3933
- boards: make: fix -Z build-std by @bradjc in #3950
- make: check for semver and support mac and linux by @bradjc in #3953
- boards: esp32-c3: fix test by @bradjc in #3951
- make TakeCell::empty() const, and make nrf52840 GPIO pin initialization a const fn by @folkertdev in #3937
- boards: opentitan: tests: fix flash warnings by @bradjc in #3952
- boards: acd52832: simplify struct by @bradjc in #3968
- boards: config: nrf52840dk kernel test: fix import by @bradjc in #3969
- libraries: remove unused imports by @bradjc in #3966
- kernel: process_checker: basic: make assigner pub by @bradjc in #3967
- Stopgap changes to treatment of
static mut
to get around compiler warnings. by @alevy in #3965 - rust: update nightly April 2024 by @bradjc in #3842
- Remove Thread Capsule Debug Statements by @tyler-potyondy in #3976
- Update pinned Tockloader rev to v1.12.0 by @lschuermann in #3982
- boards: makepython: loader: register deferred call by @bradjc in #3984
- kernel: add RestartWithDebugFaultPolicy by @lschuermann in #3986
- Update nrf5x temperature calculation by @tyler-potyondy in #3988
- chips/nrf5x: disallow registering multiple interrupts for a single GPIO by @lschuermann in #3989
- capsules: tickv: invalidate may need another read by @bradjc in #3983
- chips: apollo3: iom: Support SPI operations larger then 32 bytes by @alistair23 in #3964
- kernel: hil: radio: use standard rx client by @bradjc in #3997
- ieee802154: Remove buffers from
initialize()
functions by @bradjc in #3993 - boards/apollo3: Fixup the GPIO configurations by @alistair23 in #3990
- capsules: spi_controller: Support read only and inline operations by @alistair23 in #3991
- components/console: use snake case for variables by @wprzytula in #4007
- stm32f4xx: clocks rework by @mattmart3 in #4008
- Remove dead code by @alistair23 in #4013
- bump Rust nightly to nightly-2024-05-23 and set optimize_for_size by @alistair23 in #4002
- appid: add null checker by @bradjc in #4019
- boards: nrf52840dk: remove thread capsule by @bradjc in #4017
- boards/apollo3: Update the flash layout by @alistair23 in #4030
- Fix temperature sign in bme280 and bmp280 drivers by @brghena in #3112
- build(deps): bump urllib3 from 2.1.0 to 2.2.2 in /tools/tockbot by @dependabot in #4035
- opentitan: Add ROM_EXT-compatible ePMP setup. by @jrvanwhy in #4034
- kernel: processstd: remove unsafe in version by @bradjc in #4038
- Components: Add component for sequential process loader by @bradjc in #4036
- kernel/collections/queue: rename
remove_first
toremove_first_matching
by @lschuermann in #4033 - kernel: process standard: stop in YieldedFor by @bradjc in #4039
- boards: HOTP Tutorial: Enable screen by @bradjc in #4040
- capsules: appid: names: simplify implementation by @bradjc in #4041
- nrf52: Expose SPI0 and TWI1 (and not TWI0 and SPI1) by @bradjc in #4042
- nrf52840: IEEE802154 TX Buf Length Fix by @tyler-potyondy in #4047
- IPC: Avoid double grant entry by @bradjc in #4053
- Fix module name for TextScreen by @U-alb in #4056
- boards: teensy: use start() by @bradjc in #4060
- kernel: process standard: do not store reference to process name by @bradjc in #4061
- kernel crate: Improve comments and generated docs by @bradjc in #4080
- kernel: syscall: fix missing comments by @bradjc in #4105
- chips: apollo3: Handle the errata for clock double increments by @alistair23 in #4063
- libraries: tock-cells and enum_primitive: specify edition by @bradjc in #4067
- chips/{litex/liteeth,lowrisc/usbdev}: remove dead code by @lschuermann in #4073
- Update Rust nightly toolchain to nightly-2024-07-08 by @lschuermann in #4071
- lib: tbf: parse header lengths without 'static by @bradjc in #4079
- boards: use start() by @bradjc in #4085
- Stm32 Boards: use start() by @bradjc in #4083
- boards: litex: use start() by @bradjc in #4084
- Fixing deferred calls registering for rp2040 rtc by @inesmaria08 in #4098
- clippy: deny
wrong-self-convention
by @bradjc in #4089 - chips: apollo3: stimer: Ensure alarm occurs if set in the past by @alistair23 in #4078
- clippy: deny
redundant_field_names
by @bradjc in #4101 - clippy: deny
overflow_check_conditional
by @bradjc in #4094 - tickv: Remove the offset from read_region() by @alistair23 in #4069
- AppID: Restore
AppIdPolicy
implementations' ability to use the accepted credential, and allow credential checkers to pass data with accepted credentials by @bradjc in #4028 - Fix something that was not the root cause of relocation bug from #2219 at the time, the root cause was a bug in LLD, and now that bug is fixed, so we can use the canonical way of ensuring the relocation section has a predictable LMA by @alevy in #4108
- loops: use .iter() rather than c loops by @bradjc in #4116
- clippy: deny
unnecessary_struct_initialization
by @bradjc in #4115 - arch: fix clippy warnings by @bradjc in #4117
- clippy: deny
match-single-binding
by @bradjc in #4114 - segger_rtt: mark allocated struct as
_SEGGER_RTT
in ELF by @alevy in #4124 - Fix the GPIO pins of the Pico Explorer Base by @U-alb in #4131
- Move Segger RTT to own chip crate and fix soundness issues with externally shared memory by @alevy in #4129
- boards/apollo3: Fixup broken tests by @alistair23 in #4143
- Add well-formedness check to CortexMRegion::new() by @enjhnsn2 in #4135
- kernel: process loading: improve debug prints by @bradjc in #4149
- Fix cooperative scheduler panic by @Ioan-Cristian in #4151
- spi: add support for variable chip-select polarity by @alevy in #4136
- Moving microbit_v2 away from openocd to probe-rs by @NegrilaRares in #4074
- chips: apollo3: iom: Add delay when reading I2C by @alistair23 in #4155
- chips: apollo3: iom: Support non 4-byte alligned SPI writes by @alistair23 in #4156
- Fix deferred calls by @Ioan-Cristian in #4161
- fmt: make
panic!
error messages greppable by @Samir-Rashid in #4163 - boards: linker: do not load .apps section by default by @bradjc in #4169
- LPM013m126 Screen: Support RGB color formats by @alevy in #4180
- boards: fixed STM systick frequency by @GabrielPavaloiu in #4182
- Boards: Add a build_scripts crate by @bradjc in #4172
- ot/earlgrey-cw310: custom build.rs that supports alternative linker script for tests by @hudson-ayers in #4190
- Update .apps section by @alexandruradovici in #4191
- Remove
.unwrap()
inimpl From
by @bradjc in #4195 - kernel: debug: remove
Debug
trait by @bradjc in #4196 - kernel/processbuffer: accept arbitrary Ranges in ProcessSlice::get by @lschuermann in #4192
- Fix the bus library to support all the possible address widths by @inesmaria08 in #4099
- Alarm Syscall: fix computed
dt
when both unshiftedreference
anddt
from userspace have low-order bits. by @alevy in #4201 - st7xx: flip 16-bit endianness of buffer before txn by @alevy in #4206
- ProcessStandard: Make debugging data optional by @bradjc in #4188
- boards/pico_explorer_base/src/main.rs: remove unused imports to fix clippy checks by @lschuermann in #4210
- Bump QEMU version to 9.1.1 by @jwnrt in #4214
- Pio last update by @mateir-7 in #4212
- atecc508a: Support SHA256 Digests by @alistair23 in #4154
- Small updates for better performance in screen driver by @alevy in #4215
- rp2040: pio: replace unnecessary OptionalCell by @alevy in #4219
- atecc508a: Support the SignatureVerify HIL by @alistair23 in #4159
- arch: add cortex-m4f crate by @ppannuto in #4224
- bme280: A collection of fixes by @alistair23 in #4223
- capsules: spi_controller: Fix userspace operations by @alistair23 in #4234
- chips: apollo3: iom: Work with new SPI HIL by @alistair23 in #4235
- capsules: spi_controller: Fixup read operations by @alistair23 in #4236
- kernel: split out encode_syscall_return to utilities module by @lschuermann in #4229
- boards: apollo3: Support loading signed applications by @alistair23 in #4232
- arch: cortex-m: register name is psr by @bradjc in #4239
- Add
CapbilityPtr
and AddSuccessAddr
andSuccessPtr
syscall variants by @LawrenceEsswood in #4174 - Enable RISC-V bitmanip extensions for OpenTitan by @jwnrt in #4145
- capsules: chirp_i2c_moisture: Improve reliability and accuracy by @alistair23 in #4244
- Enhance SiFive PLIC support by @ZhekaS in #4241
- Update Rust Nightly to November 16 2024 by @bradjc in #4193
- kernel: scheduler: Use NonZeroU32 instead of u32 for
start()
andget_remaining_us()
by @Ioan-Cristian in #4254 - USB HID/CTAP: General cleanup by @bradjc in #4251
- kernel: kernel: Trace exit syscalls by @Ioan-Cristian in #4261
- capsules: kv: Support 512 byte KV values by @alistair23 in #4248
- nordic: components: startup: fix uicr pin check by @alevy in #4262
- pconsole: increase command buffer size to 64 by @bradjc in #4265
- pconsole: change
boot
cmd to use process.start() by @bradjc in #4264 - Improv(docs): Fixed doc errors by @siddharthkumarjha in #4268
- grant: added remove_pending_upcalls function by @GabrielPavaloiu in #4267
- chips: apollo3: stimer: Reset the timer at startup by @alistair23 in #4270
- boards: make: sleep on mac no units by @bradjc in #4276
Documentation and Tests
In this release, we moved a significant part of our documentation out of the Tock kernel repository, and into the Tock book itself. Nonetheless, this release includes 43 PRs to in-kernel documentation, in addition to the documentation changes included in all other PRs.
Pull Request List:
- static_init: add note about generic parameters by @ppannuto in #3146
- boards/opentitan: add flash_ctl utests by @twilfredo in #3163
- boards/opentitan/tests: fixup macro syntax by @twilfredo in #3245
- boards/opentitan: Improve README for OT bump by @twilfredo in #3220
- boards/qemu_rv32_virt: document known issue around app support by @lschuermann in #3331
- Document the datacenter security model by @cfrantz in #3328
- Document the Process Console by @JADarius in #3338
- Doc: Update DRIVER_CHECK system call for alarm capsule by @L0g4n in #3353
- fix: broken links on core capsules README by @cyril-marpaud in #3415
- kernel: process: freshen comments by @bradjc in #3452
- boards: apollo3: lora_things_plus: Fixup README by @alistair23 in #3538
- boards: make: document objcopy flag by @bradjc in #3555
- capsules: update spelling by @bradjc in #3566
- doc: small grammar / style fixes in comments by @ppannuto in #3568
- make: spelling fixes by @bradjc in #3595
- doc: Update compilation document with information about fixed-address apps by @bradjc in #3611
- Update Syscalls.md documentation by @bradjc in #3777
- doc: remove courses by @bradjc in #3778
- doc: move main docs to book by @bradjc in #3779
- doc: syscall: reorg driver numbers by @bradjc in #3843
- readme: add blurb on TockWorld7 by @bradjc in #3806
- Capsules: update readme with new capsules by @bradjc in #3910
- Tools: add readmes by @bradjc in #3911
- chips: virtio: add readme by @bradjc in #3906
- Update chips readme with chip support by @bradjc in #3907
- tools: update check boards readme by @bradjc in #3949
- capsules: readme: add eui64 by @bradjc in #3958
- Fix alarm syscall driver command comments by @hudson-ayers in #3970
- doc: Getting Started updates by @bradjc in #3978
- boards: nrf52840dk: update readme by @bradjc in #3980
- kernel: hil: 802.15.4: document the HIL by @bradjc in #3998
- doc: scheduling: moved to book by @bradjc in #4043
- readme: TockWorld 7 has completed by @bradjc in #4055
- arch: cortex-m: fix docs by @bradjc in #4057
- arch: rv32i: fix comments by @bradjc in #4059
- docs: fix various links by @bradjc in #4087
- main readme: Simplify and get right to the point with links by @bradjc in #4088
- doc: kernel: improve comments in debug.rs and process.rs by @bradjc in #4113
- kernel: improve deferred_call doc by @bradjc in #4128
- kernel: hil: uart: improve rustdoc by @bradjc in #4148
- kernel: hil: spi: improve rustdoc by @bradjc in #4170
- kernel: Update documentation to utilities and debug by @bradjc in #4197
- doc: Add example expansion for register_bitfields! macro by @Dragosh-C in #4230
Internal Changes
Last but n 10000 ot least, this release includes 206 contributions to internal documentation, tooling and CI.
Pull Request List:
- Add core working group notes of 2022-08-19 by @lschuermann in #3178
- Update kernel version to 2.1+ after release by @bradjc in #3176
- Update CHANGELOG for Tock 2.1 release by @brghena in #3199
- litex-sim-ci: pin elf2tab to v0.9.0 to unbreak CI by @lschuermann in #3206
- doc: lay out board 'tiers' by @ppannuto in #3191
- OpenTitan: Prepare to bump to the latest RTL SHA by @alistair23 in #3205
- Add Core Team Call Notes of 2022-09-02 by @lschuermann in #3192
- Notes from Core Working Group call, Sep 09 by @brghena in #3207
- doc: porting: note about HW fit by @bradjc in #3227
- tock-registers: release v0.8.1 by @ppannuto in #3242
- ci: add component label by @bradjc in #3262
- Add notes for core WG discussion on 9-16-22. by @phil-levis in #3254
- Add core WG notes for
2022-09-30
. by @jrvanwhy in #3264 - Update nightly
SeptemberOctober 2022 by @bradjc in #3168 - Add core WG notes for 2022-10-07 by @jrvanwhy in #3289
- doc: update porting guide with component updates by @bradjc in #3299
- Add Core Team Call Notes of 2022-09-23 by @lschuermann in #3302
- cargo: workspace: use package table by @bradjc in #3263
- Add core WG notes for
2022-11-11
. by @jrvanwhy in #3326 - Make
tools/
a cargo workspace. by @jrvanwhy in #3341 - Add AmbiqSuite SDK license header to vendored files by @lschuermann in #3337
- Add notes for core working group meeting on November 18, 2022 by @hudson-ayers in #3332
- Core working group notes, December 9th by @brghena in #3352
- Core notes of 2022-{10-14,11-04,12-02} by @lschuermann in #3363
- License policy 2023-01-23 core call updates by @jrvanwhy in #3377
- trd: license and copyright policy by @ppannuto in #3318
- Add a license checking tool. by @jrvanwhy in #3345
- Add the required
.
at the end of copyright lines. by @jrvanwhy in #3379 - Add core WG notes for 2022-12-16. by @jrvanwhy in #3366
- Core Working Group call notes, January 20th 2023 by @brghena in #3380
- Add core WG notes for
2023-01-27
. by @jrvanwhy in #3386 licensecheck
: Allow an empty comment line after the header. by @jrvanwhy in #3387- Add core team call notes of 2023-01-13 by @lschuermann in #3388
- Add core notes from February 3rd 2023 by @hudson-ayers in #3394
- add march 10 2023 core notes by @hudson-ayers in #3413
- Core WG call notes, February 17th 2023 by @brghena in #3401
- Notes from 03/03/2023 call. by @phil-levis in #3416
- Add default license notice to all Rust files by @alevy in #3317
- Core Working Group call notes, March 31st by @brghena in #3418
- doc: notes: update dates and format by @bradjc in #3424
- Add license headers to every file the license checker supports. by @jrvanwhy in #3420
- Core working group call notes, April 14th by @brghena in #3425
- notes: 2023-02-24 by @bradjc in #3423
- add core wg notes 2023-04-21 by @hudson-ayers in #3427
- Add core notes of 2023-04-28 by @lschuermann in #3429
- Use a fallback syntect syntax rather than a custom Rust parser in the license checker. by @jrvanwhy in #3434
- Core working group call notes, May 5th by @brghena in #3430
- Create core-notes-2023-05-19.md by @ppannuto in #3437
- Add support for block comments to the license checker. by @jrvanwhy in #3449
- Add core team call notes of 2023-05-12 by @lschuermann in #3462
- Improve the license checker's documentation. by @jrvanwhy in #3450
- Convert all CRLF files to Unix line endings. by @jrvanwhy in #3469
- Add license headers to the
.jlink
files. by @jrvanwhy in #3471 - Add license headers to
.ld
files. by @jrvanwhy in #3472 licensecheck
: document a block comment style that works. by @jrvanwhy in #3481- Prepare switch to GitHub merge queue by @lschuermann in #3483
- Core Working Group call notes, June 9th 2023 by @brghena in #3476
- Add license headers to
*.xml
files. by @jrvanwhy in #3482 - Add docs-ci workflow to build docs through GitHub actions by @lschuermann in #3485
- Avoid building PRs twice through the push and merge_group triggers by @lschuermann in #3486
- Core WG notes for
2023-06-16
. by @jrvanwhy in #3492 make stack-analysis
: demangle names by @bradjc in #3500- Add core team call notes of 2023-06-02 by @lschuermann in #3496
- Notes from Core working group call, June 30 by @brghena in #3531
- Small licence checker enhancements by @Ioan-Cristian in #3533
- Core working group call notes, July 14th by @brghena in #3542
- doc: add notes from short-lived repo by @ppannuto in #3560
- Update EOL GitHub Actions dependencies by @jwnrt in #3591
- doc: core-wg: update Leon's affiliation by @bradjc in #3592
- doc: core-wg notes 2023-07-21 by @ppannuto in #3558
- Networking Working Group by @alexandruradovici in #3578
- doc: remove dangling reference to IRC by @ppannuto in #3620
- Notes from Network working group call, August 10 by @brghena in #3604
- tools: clippy: list all complexity and style lints by @bradjc in #3607
- Notes from the 08-11-2023 call by @phil-levis in #3608
- Core working group call notes, August 4th by @brghena in #3605
- docs: wg-core: add notes for 2023-08-18 by @bradjc in #3642
- Networking group notes from 2023.08.24 by @alexandruradovici in #3647
- Add core WG notes for 2023-09-08 by @jrvanwhy in #3662
- Labeler updates by @brghena in #3663
- labeler.yml: add missing : by @bradjc in #3673
- Network working group notes, September 7th 2023 by @brghena in #3661
- Notes from Core Working Group call, September 15 by @brghena in #3672
- Bug Fixes for Hs3003 sensor by @TheButterMineCutter in #3682
- hail: use start() function by @bradjc in #3678
- doc: 2023-09-22 core team notes by @ppannuto in #3688
- Added networking groupm notes from September 21, 2023 by @alexandruradovici in #3686
- Tock registers v0.9 by @ppannuto in #3693
- Core team notes 2023-09-29 by @tyler-potyondy in #3698
- Network working group meeting notes, October 5th by @brghena in #3705
- Core working group call notes, October 13th by @brghena in #3711
- doc: Core WG notes for 2023-10-27 by @ppannuto in #3725
- Network Working Group call notes, October 19 by @brghena in #3723
- Network working group call notes, November 2 2023 by @brghena in #3731
- Add core WG notes for 2023-11-03 by @jrvanwhy in #3732
- Core WG notes for 2023-10-06 by @jrvanwhy in #3736
- Core working group call notes, Nov 10 2023 by @brghena in #3739
- Network working group call notes, November 16 2023 by @brghena in #3744
- core wg meeting notes 2023-11-17 by @hudson-ayers in #3745
- Pin labeler action to v4.3.0 by @alevy in #3755
- Core team notes 2023-12-08 by @tyler-potyondy in #3759
- doc: core wg: add notes 2023-12-01 by @bradjc in #3753
- Tock Core Working Group call notes: December 15 by @brghena in #3769
- Network Working Group call notes: December 14 2023 by @brghena in #3770
- Network working group call notes, Nov 30 2023 by @brghena in #3760
- Network Working Group call notes, Jan 11th 2024 by @brghena in #3788
- Add notes from January 12, 2024 meeting by @hudson-ayers in #3799
- Core team notes 1-19-24 by @tyler-potyondy in #3814
- Core Working Group call notes, January 26 2024 by @brghena in #3820
- Doc: TRD: Finalize Legal TRD (TRD4) by @bradjc in #3821
- wg: Add DOC Working Group by @bradjc in #3815
- doc: wg: DOC: add date by @bradjc in #3831
- doc: wg: core: add notes 2024-02-02 by @bradjc in #3830
- Network Working Group call notes February 05 2024 by @brghena in #3834
- doc: minor TRD102 fixes by @bradjc in #3838
- Add notes of Networking Working Group call of 2024-01-22 by @lschuermann in #3835
- doc: trd103: fix link by @bradjc in #3852
- Core Working Group call notes, Feb 9 and 16 2024 by @brghena in #3858
- Add @alexandruradovici to Core WG by @alevy in #3882
- Add Tockbot, automatically assigning core team members to stale PRs by @lschuermann in #3822
- build(deps): bump cryptography from 42.0.1 to 42.0.4 in /tools/tockbot by @dependabot in #3885
- License checker: Use the fallback syntax for
.txt
files. by @jrvanwhy in #3884 - Tockbot improvements by @lschuermann in #3886
- Network working group call notes, Feb 19 2024 by @brghena in #3883
- Add notes of core WG call from 2024-01-05 by @lschuermann in #3877
- tools/tockbot: fix logic for ignoring PRs by labels by @lschuermann in #3891
- Add notes from the March 01, 2024 meeting. by @phil-levis in #3892
- New provisions for what Core WG vs other WGs do by @alevy in #3894
- Network working group notes, March 04 2024 by @brghena in #3898
- Core WG notes for 2024-03-08 by @jrvanwhy in #3909
- core team notes 3-15-24 by @tyler-potyondy in #3929
- Core working group notes, March 22nd 2024 by @brghena in #3931
- Network working group notes, March 18 2024 by @brghena in #3936
- doc: core: add notes from 2024-03-29 by @bradjc in #3942
- tockbot: assign immediately by @bradjc in #3955
- CI: synchronize with makefile by @bradjc in #3948
- build(deps): bump idna from 3.6 to 3.7 in /tools/tockbot by @dependabot in #3959
- Core working group call notes: April 12, 2024 by @brghena in #3960
- Network working group call notes: April 15, 2024 by @brghena in #3963
- Notes from Core working group call: April 19, 2024 by @brghena in #3971
- Network working group call notes: April 01, 2024 by @brghena in #3961
- Core working group call notes: May 3, 2024 by @brghena in #3977
- Notes from Core working group call: May 10, 2024 by @brghena in #3987
- Network working group call notes: April 29, 2024 by @brghena in #3974
- build(deps): bump requests from 2.31.0 to 2.32.0 in /tools/tockbot by @dependabot in #4000
- doc: add core wg notes 2024-05-17 by @bradjc in #3996
- Notes from Core working group call: May 24, 2024 by @brghena in #4003
- capsules: ignore broken doctests, enable doctests for ci-job-capsules by @lschuermann in #4010
- Network working group call notes: June 10, 2024 by @brghena in #4024
- Core Team Notes 6-7-24 by @tyler-potyondy in #4025
- Add Core Team Call Notes of 2024-05-31 by @lschuermann in #4029
- doc/reference/trd104: bump draft version and date modified by @lschuermann in #4032
- ci: nightly: change syntax by @bradjc in #4045
- Add notes from core wg meeting June 14, 2024 by @hudson-ayers in #4046
- ci-nightly action: fix YAML workflow spec indentation by @lschuermann in #4049
- Include Network WG in list of working groups by @brghena in #4050
- Email group changed by @brghena in #4048
- ci-nightly action: fix assignees attribute by @lschuermann in #4051
- doc: wg: core: update Hudson's affiliation by @bradjc in #4052
- makefile: run miri on all capsules by @bradjc in #4058
- Makefile: remove
format
command in favor of simplerformat-check
by @lschuermann in #4037 - build(deps): bump certifi from 2023.11.17 to 2024.7.4 in /tools/tockbot by @dependabot in #4065
- Use
cargo doc --document-private-items
by @bradjc in #4068 - make: simplify cargo doc rule by @bradjc in #4077
- Notes from Core working group call: July 12, 2024 by @brghena in #4102
- make: clippy error on warnings by @bradjc in #4106
- Network working group call notes: July 15, 2024 by @brghena in #4107
- Notes from 07/19/2024 core WG meeting. by @phil-levis in #4119
- Add Core Notes July 26, 2024 by @hudson-ayers in #4120
- Fix ci-job-rustdoc by building docs for host target by @lschuermann in #4121
- Add rust-analyzer to rust-toolchain by @alevy in #4125
- doc: wg: add notes from 2024-08-02 by @bradjc in #4127
- Build docs for target-specific code independent of platform by @lschuermann in #4122
- Notes from Core Working Group call: August 9, 2024 by @brghena in #4137
- Network working group call notes: August 12, 2024 by @brghena in #4139
- Core working group meeting notes: August 16, 2024 by @brghena in #4142
- Assign all PRs nightly, even if reviews exist by @brghena in #4147
- Core working group call notes: August 30, 2024 by @brghena in #4160
- build(deps): bump cryptography from 42.0.4 to 43.0.1 in /tools/tockbot by @dependabot in #4162
- doc: wg: core: notes 2024-09-06 by @bradjc in #4166
- doc/wg/core: add notes from call of 2024-08-23 by @lschuermann in #4167
- Network working group call notes: Sep. 23, 2024 by @brghena in #4178
- Core WG notes for 2024-09-20. by @jrvanwhy in #4175
- Add initial Treadmill Hardware CI workflow scaffold by @lschuermann in #4177
- doc: add some found legacy notes by @ppannuto in #4186
- ci: do not run nightly on forks by @Samir-Rashid in #4184
- treadmill-ci: do not run on forks and PRs from other repositories by @lschuermann in #4187
- Notes from Core working group call: Oct. 4, 2024 by @brghena in #4189
- ci: update github action versions by @alevy in #4202
- treadmill-ci: pin CLI client revision, switch to ARM64 Raspberry Pi hosts by @lschuermann in #4200
- Core Working Group call notes: October 11, 2024 by @brghena in #4198
- tools/license-checker: update syntect rev to accelerate tests by @lschuermann in #4211
- Add Hardware Continuous Integration (HWCI) Framework for Writing Tests for Treadmill by @charles37 in #4205
- Network working group call notes: October 21, 2024 by @brghena in #4213
- doc: Fix
make doc
exiting with errors by @siddharthkumarjha in #4217 - Core working group call notes: November 1st, 2024 by @charles37 in #4221
- Core working group call notes: November 8, 2024 by @brghena in #4226
- doc: core wg: add 2024-11-15 notes by @bradjc in #4238
- Network working group call notes: November 18, 2024 by @brghena in #4240
- Update
treadmill-ci
Workflow to Dynamically Select Hardware CI Tests by @charles37 in #4252 - Core working group call notes: December 6, 2024 by @brghena in #4263
- Add core wg 2024-12-13 notes by @hudson-ayers in #4269