Tock Versions Save

A secure embedded operating system for microcontrollers

release-1.5-rc3

4 years ago

Third release candidate. Updates since 1.5-rc2:

  • Fixes/updates to networking tests
  • Update OpenTitan HW commit
  • Fix for riscv linker section names on mac
  • Updates to syscall.md doc
  • Updates to HiFive board and sifive PWM disable function
  • Mark STM32 GPIO function as unsafe
  • Avoid uart recv aborts in virtual_uart

release-1.5-rc2

4 years ago

Next 1.5 release candidate. Includes a couple bug fixes:

  • Adds "fault" to process console help.
  • Fixes pins for hail and opentitan.
  • Adds HiFive instructions.
  • Renames the RISC-V linker sections.

release-1.5-rc1

4 years ago

This is the first testing release for Tock 1.5.

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

    • #1430 Low level debug
    • #1580 Log storage
    • #1715 HD44780 LCD
    • #1723 l3gd20 3 axis gyro and temperature sensor
  • New Boards

    • #1460 OpenTitan
    • #1492 nRF52840 Dongle
    • #1674 STM32F3Discovery
  • New Documentation

    • #1632 Tock threat model
    • #1466 Tock design goals

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 to svd2regs.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

release-1.4.1

4 years ago

This fixes a small (in terms of lines of code) but substantial (in terms of GPIO usability) bug from the rewrite of the GPIO HIL.

release-1.4

4 years ago

For Tock 1.4 we had five milestones for the release:

  • #1230 (Docs: Add README.md to /libraries/enum_primitive)
  • #1215 (Tracking: Unified Course)
  • #1167 (UART HIL re-design)
  • #1233, #1297 (GPIO HIL re-design)
  • #1234 (Time HIL re-design)

The major changes are around updating HIL interfaces (UART, Time, and GPIO). Other changes include:

  • Initial support for RISC-V architectures.
  • Update to Userland-Kernel boundary interface.
  • Add nucleo-based boards.
  • Add ACD52832 board.

release-1.4-rc3

4 years ago

Updates:

  • Queued callbacks that haven't been issued when the callback is canceled or replaced are now removed.
  • PMP driver removed for arty-e21.
  • Several documentation updates.

release-1.4-rc2

4 years ago

Updates from RC1:

  • Hail: Button GPIO pin number was corrected.
  • Kernel: Clippy annotations were added.

release-1.4-rc1

4 years ago

This is a feature-based release based on updates to three HILs: GPIO, UART, and Time.

Other major changes:

  • Initial support for RISC-V architectures.
  • Update to Userland-Kernel boundary interface.
  • Add nucleo-based boards.
  • Add ACD52832 board.

release-1.3

5 years ago

This is a large milestone-based release of Tock that encompasses numerous changes made by many contributors over the last five months. We set two main goals for this release which were tracked in the following issues:

  • [#985] Make Tock Architecture Agnostic: The core Tock kernel should support running on non-Cortex-M platforms.
  • [#1154] Userland UDP: There is now an interface to send and receive UDP packets from userland.

We re-architected the core kernel to (hopefully!) remove all assumptions that Tock is running on a Cortex-M platform, and moved all of the architecture-specific code to the /arch crates. This will enable Tock to run on other architectures in the future, like Cortex-MF or RISC-V.

We also significantly improved the IPv6/6LoWPAN based networking stack in Tock (built on top of 802.15.4) to enable UDP packet send and receive from userland. This is a promising step towards a full networking stack in Tock.

While we waited to complete these two goals before doing a release, numerous other changes were also made along the way. To briefly summarize:

  • The debug module in the kernel now includes a generic panic!() routine used by many boards.
  • The kernel debug module is now a direct user of a UART object rather than a psuedo-process. This provides more flexibility and simplifies the kernel internals.
  • Capabilities are a new feature for controlling access to sensitive (but public) internal Tock APIs.
  • The ADC HIL changed to handle different resolution ADCs.
  • The UART HIL changed to include a configure() method.
  • The randomness HILs now support multiple widths and entropy and RNG versions.
  • Tock switched to the LLVM toolchain, removing the need for ARM gcc.

More details can be found in the CHANGELOG file.

Stability Guarantees

This release does not include any new API stability guarantees.

Testing and Board Support

This release was tested on these platforms:

  • nRF51DK
  • nRF52DK
  • Hail
  • imix
  • LaunchXL CC26x2

release-1.3-rc5

5 years ago

More little fixes:

  • Fix version handling when Tock is used from a .zip rather than git.
  • Imix supports 4 processes.
  • Few doc fixes.
  • make in root lists boards properly.