Crate ariel_os

Source
Expand description

Ariel OS is an operating system for secure, memory-safe, low-power Internet of Things (IoT).

See the README for more details.

§Examples

Application examples can be found in the examples directory.

§Cargo features

§System functionality

  • external-interrupts — Enables GPIO interrupt support.
  • storage — Enables storage support.
  • threading — Enables threading support, see the thread attribute macro.
  • time — Enables the internal executor’s timer queue, required for timer support.
  • random — Enables the random module.
  • csprng — Enables a cryptographically secure random number generator in the random module.
  • hwrng — Enables seeding the random number generator from hardware.

§Network protocols and configuration

  • tcp — Enables support for TCP.
  • udp — Enables support for UDP.
  • dns — Enables support for DNS.
  • mdns — Enables support for mDNS.
  • coap — Enables support for CoAP.
  • network-config-static — Selects static IP configuration.

§Serial communication

  • i2c — Enables I2C support.
  • spi — Enables SPI support.
  • usb — Enables USB support.
  • usb-hid — Enables USB HID support.

§System configuration

The config attribute macro allows to provide configuration for specific system functionality. The features below need to be enabled so that the provided custom configuration is taken into account.

  • network-config-override — Enables custom network configuration.
  • override-usb-config — Enables custom USB configuration.

§Multicore functionality

  • core-affinity — Enables support for core affinities (restricting threads to specific cores).

Exactly one of the features below must be enabled at once. Selection of these should be done through laze configuration.

  • single-core — Enables one single core, even if the hardware provides multiple cores.
  • multi-core — Enables support for SMP.

§Network type selection

At most one of the features below can be enabled at once. These features are normally automatically selected by laze based on what the board supports, and don’t need to be selected manually.

  • usb-ethernet — Selects Ethernet over USB (USB CDC-NCM).
  • wifi-cyw43 — Selects Wi-Fi (with the CYW43 chip).
  • wifi-esp — Selects Wi-Fi (on ESP chips).

§Development and debugging

  • debug-console — Enables the debug console, required to use println!.
  • defmt — Enables logging support through defmt, see debug::log..
  • log — Enables logging support through log, see debug::log.
  • bench — Enables benchmarking facilities.
  • silent-panic — Prints nothing in case of panics (may help reduce binary size).
  • no-boards — Allows to have no boards selected, useful to run target-independent tooling.

§Executor type selection for the (autostarted) main executor

Exactly one of the features below must be enabled at once.

  • executor-interrupt — Enables the interrupt executor.
  • executor-single-thread — Enables the single thread-mode executor.
  • executor-thread — Enables the ariel-os-threading thread executor.

Modules§

  • Provides async functionality.
  • benchbench
    Provides on-board benchmarking facilities.
  • Exposes information about the build.
  • Shareable containers.
  • coapcoap
    A CoAP stack preconfigured for Ariel OS.
  • Provides configuration to the system and the application.
  • Provides debug interface facilities.
  • Delegate or lend an object to another task
  • Provides consistent GPIO access.
  • Provides MCU-specific items.
  • i2ci2c
    Provides support for the I2C communication bus.
  • Access to unique identifiers provided by the device.
  • netnet
    Provides network access.
  • randomrandom
    Provides a seeded random number generator depending on Ariel OS’s configuration.
  • This module contains all third party crates as used by Ariel OS.
  • spispi
    Provides support for the SPI communication bus.
  • storagestorage
    Provides key-value pair persistent storage on flash.
  • threadthreading
    Multi-threading for Ariel OS.
  • timetime
    Provides time-related facilities.
  • usbusb
    Provides USB-related items.

Attribute Macros§

  • Allows to provide configuration for the associated driver during initial system configuration.
  • Registers a non-async function for autostart.
  • Defines an async task and optionally registers it for autostart.
  • threadthreading
    Runs the function decorated with this attribute macro as a separate thread.