Tock 1.5 is a periodic release so that there is at least one tested 1.x release before Tock 2.0. It includes updated components, more RISC-V development, new supported boards, improved process handling, and a host of other changes.
Highlights of this Release
-
New Features and Development
- #1338 Added generic components
- #1428 Add MPU configuration to panic print message
- #1443 Add strace feature to kernel
- #1480 Remove unsafe from TBF parsing in kernel
- #1505 Add
InterruptService
abstraction - #1511 Complete transition to register interface
- #1082 Processes are fully restartable
- #1581 Capabilities in networking stack
- #1589 RISC-V PMP implementation
- #1590 Refactor panic!() printing implementation
- #1680 Add hook for syscall filtering
- #1748 Update in-kernel grant interface
-
New capsules
-
New Boards
-
New Documentation
All Merged PRs:
- #1338 Add generic components that any board can use
- #1368 Tock Register Interface: help ensure correct use
- #1392 Add functional unit tests for the kernel ring buffer.
- #1393 Add cargo test for chips and archs on ci-travis.
- #1394 Make process::alloc() take the alignment into account.
- #1396 Fix typo in net::ipv6::ip_utils documentation.
- #1397 Imix pin mapping documentation
- #1398 hifive1: Increase stack size to 0x1000
- #1399 Add Clippy Script + implement some clippy recommendations
- #1401 arch/rv32i: Fixup MIE bit fields
- #1403 put something useful in boards/README.md
- #1404 turn the "getting started" guide into more of a tutorial
- #1405 nrf52: add nRF52840 support to ficr.rs
- #1406 allow GPIOs to be switched on
- #1407 fix TOCK_KERNEL_VERSION
- #1410 Add macro to generate register structs, and apply it to nrf52/clock (Fix #1400)
- #1411 replace env! with option_env!
- #1412 HiFive1: Add support for Machine Mode Interrupts
- #1414 doc: fix various links and formatting
- #1415 tools: add link checking script
- #1417 Update rust and add update script
- #1418 Fix path for kernel_layout.ld in nordic boards' build.rs.
- #1420 SAM4L: create GLOC peripheral driver
- #1421 make: freshen up board Makefile
- #1422 Add support for multiple GPIO ports in chips/nrf5x.
- #1425 RISCV addition for cycle and instruction counting
- #1426 Add more variants to chips/nrf52/src/ficr.rs and keep them ordered in alphanumerical order
- #1427 Add USB register mapping (for nRF52840-DK) to chips/nrf52.
- #1428 Add MPU information to panic!() print
- #1430 Implement the low-level-debug capsule.
- #1431 fix slack invite link
- #1432 Remove duplicate app register saving on context switch
- #1434 Move USB control transaction handling to a separate module and add more descriptors.
- #1435 Extend nrf52's UICR (NFC) and only erase its memory when needed
- #1436 Remove impossible if-condition in cortex-m3 MPU
- #1437 Add hifive1 support for user application
- #1438 Add MIT to list of contributors
- #1440 Make process_detail_fmt work with unknown app heap/stack pointers.
- #1443 Add strace feature to trace syscalls in the kernel.
- #1445 SiFive: PWM: Slight MMIO address correction
- #1446 Use MaybeUninit in static_init instead of transmuting an option.
- #1448 Drop messages instead of panicking when the debug buffer is full (Fix #1442).
- #1450 Add comments to kernel/platform
- #1451 rust2018: do not need macro_use
- #1452 components: add generic spi, add to hail
- #1453 components: make si7021 generic, add to hail
- #1454 board: arty: use components
- #1455 libraries: release tock-register-interface v0.4
- #1456 Add DebugWriter component, use console component
- #1458 register_structs!: Make output type public
- #1460 Add the Ibex CPU and the OpenTitan Board
- #1461 Add support for explicit visibility in register_structs.
- #1463 Remove cargo.lock
- #1466 doc/Design.md: Add 'Some in-kernel design principles` section
- #1468 Update Nordic nrf52 chip model and variant
- #1469 Fixed a typo.
- #1471 RISC-V: OpenTitan Preparation
- #1473 Replace IRC badge with Slack badge on README
- #1474 Disable adc for deep sleep
- #1476 UDP port binding + virtualization between apps and capsules
- #1478 Add transmit_sync for sifive UART for use in panic
- #1479 boards/hifive1: Remove duplicate PLIC enable
- #1480 Rewrite TBF parsing logic
- #1481 regs: Add Copy and Clone to InMemoryRegister
- #1483 Remove dead code that double-checks the checksum
- #1484 tools: Add
setuptools
tosvd2regs.nix
generated environment - #1486 Ensure the create_capability! macro cannot be called from capsules
- #1487 Add missing panic! documentation in Porting Guide
- #1488 boards/Makefile.common: Minor cleanup
- #1489 register_structs!: Fix breakage of custom_test_frameworks
- #1490 map the NRF52840-DK GPIOs correctly
- #1492 Add support for the nrf52840_dongle board.
- #1493 Remove direct dependency on nrf5x from nrf52dk_base.
- #1494 Add support for power management in nrf52 chips.
- #1495 Fix memory overuse in HiFive1 board
- #1497 Mechanically align static_init_half with updated static_init macro.
- #1498 Use the gpio::Pin enum in nRF52-based boards instead of raw numbers.
- #1499 Add tests to capsules/alarm.rs
- #1502 nRF52 UART updates - CTS/RTS optional, support PORT1 pins
- #1503 Components: add GPIO, LED, AlarmMux, UartMux
- #1504 nrf52: gpio: make disable_input a no-op
- #1505 Add an InterruptService for chips of the nRF5x family.
- #1506 doc: add style doc
- #1507 doc: Add missing table of contents to docs
- #1508 doc/policy: Core Team Information
- #1509 doc: updating porting guide
- #1510 RFC: Register visibility granularity
- #1511 Migrate the last of the old arch stuff to the new registers interface
- #1514 Add debug statements to show how and where process are loaded from flash to sram.
- #1516 Fix nrf5x's counter register to use 24 bits instead of 32 (fix #1515).
- #1519 doc: Add explicit Code of Conduct to top-level README
- #1520 Fix in-kernel storage allocation macro and section.
- #1522 Transitions virtual UART to use a deferred callback
- #1523 Add a notice about QEMU support
- #1525 update adc capsule to use grant
- #1527 Improve display of MPU layout in Cortex-M panic handler
- #1528 libraries/tock-cells: remove unsafe from TakeCell
- #1529 Fix restarting apps
- #1530 capsules: show process restarts in process console
- #1531 Fix counting the number of syscalls a process has called.
- #1533 libraries: cells: add more to numeric cell
- #1535 Fix formatting bug in markdown
- #1536 kernel: lib: make process::Error public
- #1537 tock-registers: release v0.5
- #1539 Update nrf52840dk README
- #1540 Add a simple alarm test. It fires the first alarm in about 10 seconds.
- #1541 use new components for nrf52 boards
- #1543 Add support for USB bulk/interrupt on the nrf52 chip.
- #1546 Update Rust nightly version
- #1547 Use static_init in the DebugWriter component to create debug buffers.
- #1548 Add kernel::debug::IoWrite trait and remove unsound str::from_utf8_unchecked (fix #1449)
- #1550 readme: add link to docs.tockos.org
- #1551 Add Analog_Comparator for nrf52840
- #1553 doc: restore documentation for hidden items
- #1554 Add support for structs with a lifetime parameter in register_structs.
- #1556 Refactor Segger RTT and add a usb_debugging mode on the nRF52840-DK board
- #1558 Fixing GPIO component and missing FloatingState
- #1561 Add make audit command based on Cargo audit.
- #1562 arch/rv32i: Implement proper atomic helper
- #1564 chips: doc: update supported HIL table
- #1565 kernel: Add trait for process restart policies
- #1566 kernel: Add an "identifier" to AppId
- #1567 libraries/riscv-csr: Fix warning under cargo test
- #1570 CI: build the rust tools during CI
- #1571 Update booting information with some details about RISC-V
- #1574 arch/rv32i: Simplify mcause CSR parsing
- #1578 boards/opentitan: Add support for the LED HIL
- #1579 add set_vector_table_offset()
- #1580 Create a log storage capsule
- #1581 Layered networking capabilities
- #1582 doc: fix syntax highlighting tag
- #1587 arch/rv32i: Rework switch_to_userspace handler
- #1588 kernel: give processes unique identifiers
- #1589 Add support for RISC-V PMP
- #1590 Printing system state refactoring between Chip and Process
- #1592 chips/ibex: update for register layout changes
- #1593 Removed useless allow(dead_code) in components.
- #1594 Add OpenTitan Working Group
- #1595 arch/rv32i: Fix up the PMP CFG offsets
- #1596 Fix broken link to JTAG instructions
- #1598 chips/ibex: Normalize timer interrupt handler
- #1599 nrf52: remove duplicate radio reference
- #1600 boards/opentitan: Hookup Low Level Debug (lldb)
- #1601 Print out syscall return value as a format instead of a number
- #1603 rv32i: pmp: use TOR in disable_mpu
- #1604 arty-e21: enable PMP
- #1605 opentitan: Increase the App memory
- #1606 boards/opentitan: Fix bad pointer dereference
- #1608 Correct Name Spelling
- #1609 ADC Capsule: More work on supporting restarts.
- #1610 boards/opentitan: Connect the GPIO capsule
- #1611 Enable AES hardware block for OpenTitan
- #1612 nRF51 Serialization: Support restarting apps
- #1613 kernel: don't cache the process appid in main loop
- #1614 CRC: Add set_client to HIL
- #1615 opentitan: notes 2020-02-14
- #1617 Update nrf52dk README
- #1620 Notes from 2/21 call.
- #1621 doc: wg: Add Silvestrs to the OpenTitan WG
- #1622 doc: OpenTitan: add 2020-02-21 notes
- #1623 Flash HIL: return buffers if errors
- #1627 [libraries enum primitive]: fix failing tests
- #1631 Update rust Feb, 2020
- #1632 Add a threat model to Tock's documentation.
- #1633 Updated the number of User LEDs for Nucleo_F429ZI
- #1636 Fix race condition between DynamicDeferredCall and interrupts.
- #1637 doc: notes from 2/28 core call
- #1638 doc: ot: add 2020-02-28 notes
- #1642 kernel: Fix recording last syscall
- #1643 rust: remove all unused feature pragmas
- #1644 chips/e310x: Fix spelling of suppress_all
- #1645 doc: Update architecture diagram
- #1647 chips/e310x: Remove unstable pragma
- #1648 kernel: use NonNull, iterate on grant and appslice interfaces
- #1649 chips/saml4: remove unstable pragma
- #1653 kernel: stdize process_each and process_each_cap
- #1655 Add new restart policy and configure hail to restart failed apps
- #1656 kernel+process console: add grant usage
- #1658 Add panic_button component and update the GPIO HIL accordingly.
- #1659 Make UART control flow pin optional on Nordic boards.
- #1660 DRAFT rust: disable frame pointers in the Tock kernel
- #1661 Handle device register aliases explicitly
- #1664 Generalize chip_layout.ld to Nordic boards and increase ROM size on nrf52840.
- #1667 Implement a debug_enqueue! macro that writes to a ring buffer flushed only upon panicking.
- #1668 Add --remap-path-prefix to make builds more deterministic and smaller.
- #1669 Print a SHA-256 sum of built binaries, to check for reproducibility.
- #1670 update rust to 2020-03-06
- #1671 doc: ot: add notes 2020-03-06
- #1672 Notes from Core-WG call 03/06
- #1674 Porting to STM32F303 and STM32F3Discovery kit
- #1677 [USB] Split each endpoint's state into independent IN and OUT sides.
- #1678 Update I2cMaster driver number according to doc/syscalls/README.md
- #1680 kernel: Add syscall filter to platform trait
- #1681 Make nrf52* based boards compatible with bootloader.
- #1683 Add @jrvanwhy to core team list
- #1684 Updated nucleo to use components for led and alarm
- #1686 Removed loop from io.rs panic_fmt for nucleo
- #1687 Notes from core-WG call 03/13/20
- #1688 Revert PR #1660
- #1689 doc: ot: add notes from 2020-03-13
- #1693 Fix remove_pending_callbacks formatting.
- #1699 SAM4L: Update DMA peripheral driver
- #1700 doc: wg: add core working group charter
- #1704 opentitan: Disable aes_test
- #1705 OpenTitan WG Roadmap
- #1706 doc: ot: add notes 2020-03-19
- #1708 Create core-notes-2020-03-20
- #1709 added system call to set alarm to a relative tics
- #1710 Add tock-on-titan's print_memory_usage.py script to the tools/ directory.
- #1711 Updates size tool to have fixes requested in #1673
- #1714 Use a Cargo workspace to make builds reproducible and speed up CI.
- #1715 Capsule for HD44780 LCD
- #1716 doc: ot: add 03-26-2020 notes
- #1717 rv32i: pmp: Fix the app allocation calculator
- #1719 tools: remove fixed bash interpreter path
- #1722 stop running size reporting script in travis
- #1723 capsule for l3gd20 3 axis gyro and temperature sensor
- #1724 Remove option encapsulation in Kernel get_process_iter
- #1725 added i2c component
- #1729 added riscv toolchain to shell.nix
- #1731 doc: ot: add notes 04-02-2020
- #1732 doc: wg: opentitan: Move notes into right path
- #1733 Cleanup core files in working group folder
- #1734 move imix kernel tests into subdirectory
- #1737 rust: Disable frame pointers on RISC-V targets only
- #1738 rust: Turn on aggressive identical code folding
- #1740 Core WG notes 04/03/2020
- #1742 stm32f{3,4}xx: remove unused deferred calls code
- #1743 Update stm32 boards makefiles
- #1746 Fixed USART number for panic of stm32f3 boards
- #1747 Notes from core-WG call 03/27/20
- #1748 kernel: grant: fix allocation
- #1749 add core-wg call notes from 4-10-2020
- #1750 nRF52: Fix dynamic deferred calls
- #1753 Bring back Travis memory reporting
- #1755 capsules: remove block comment, rustfmt
- #1757 capsules: virtual_uart: avoid double receive, check rx len, support custom buffer
- #1759 doc: Update GPIO syscall for pseudo-stabilization
- #1763 small grammar fixes + fix broken link
- #1768 Notes from Core WG 04/17/2020 call
- #1772 small fixes to docs
- #1774 minor fixes to docs
- #1778 rv32i,ibex: use ',' as sections specifier
- #1779 capsules: process console: add fault to help msg
- #1781 boards: hail: fix gpio pin assignments
- #1782 OpenTitan fixes for 1.5
- #1783 Updated instructions on running HiFive under qemu
- #1785 fix imix in-kernel networking tests
- #1786 rv32i: try a different section identifier
- #1788 OpenTitan: README: Update the OpenTitan SHA
- #1789 doc: Add syscall filter to syscall documentation
- #1792 fix capability check error
- #1793 Hifive updates
- #1796 mark get_pin_mut() as unsafe
- #1798 Add core WG talk notes for 2020-04-24.
- #1804 doc: fix stack/data position on arch diagram
- #1809 arty-e21 updates