34 Must Know Terms for Rust Newbies

braindead
Dev Genius
Published in
4 min readDec 13, 2022

--

Here it goes:

πŸ–Ό RTIC β€” Short for Real-Time Interrupt-driven Concurrency which is a framework (Not an Operating System) for building real-time systems. As a starter, you’d probably get introduced to this framework as an alternative for implementing interrupt-based applications. RTIC provides a less verbose and more structured way of dealing with interrupts in Rust.
πŸ–Ό RTFM β€” Short for Real-Time for the Masses, this was the older naming for the RTIC framework.
πŸ¦€ async β€” Used in the context of multi-threaded applications, async is a keyword used in Rust ahead of a function to make it return a Future or promise to resolve.
πŸ¦€ await β€” Also used in the context of multi-threaded applications, await is a keyword used inside an async block/function that makes the application wait until the Future or promise resolves.

πŸ“ Note:

async and await are commonly mentioned in conjunction with each other as async/await.

πŸ¦€ Future β€” Is used in asynchronous programming and is a trait representing a value that might not have finished computation yet. A Future makes it possible for a thread to continue doing useful work until a value becomes available.
πŸ–Ό Tokio β€” Tokio is a Rust runtime for writing multi-threaded asynchronous applications. Tokio builds on Rust’s asynchronous features to provide a runtime, APIs (networking, filesystem operations..etc.), and asynchronous task tools among others.
πŸ–Ό Embassy β€” Can be considered as the embedded version of Tokio albeit more compact and with fewer features. Embassy is a more encompassing HAL and also can serve as an alternative to the RTIC framework.
πŸ–Ό uAMP (microAMP) β€” A (micro) framework for building bare-metal AMP (Asymmetric Multi-Processing) applications. It’s the core foundation of the multi-core version of (RTIC).
πŸ¦€ Cow β€” This one is probably a bit out of context but I saw it way too often that I had to mention it. The naming is quite confusing obviously πŸ„. It turns out that Cow is a type of smart pointer similar to Cell, RefCell, or Arc, where it stands for clone-on-write.
πŸ— Knurling β€” The term is used in reference to the Knurling-rs project created by Ferrous Systems, a consulting firm specialized in Rust. The goal of the Knurling project is to enhance bare metal development using Rust by providing training material and tools.
πŸ›  Probe-run β€” is one of the Knurling tools introduced to easily flash and run embedded applications on baremetal devices. Probe-run also provides stack backtraces that mimic Rust panicking behavior to see where things go wrong. Additional detail here.
πŸ›  Defmt β€” is also part of the Knurling tools and is logging framework for microcontrollers. Sort of an efficient alternative for the traditional serial monitor using UART. defmt stands for β€œdeferred formatting”. Additional detail here.
πŸ›  Flip-Link β€” Another Kunrling tool that is a linker wrapper that adds stack overflow protection to embedded applications. Additional detail here.
πŸ¦€ FFI β€” Short for Foreign Function Interface which is a function interface that allows calls to C library functions from within Rust.
πŸ›  RTT β€” Short for Real-Time Transfer and refers to a protocol created by J-Link used in debugging microcontroller devices.
πŸ“¦ rtt_target β€” Crate that provides the target side implementation of the RTT protocol.
πŸ“¦ defmt-rtt β€” Crate that supports transmitting defmt log messages over the RTT (Real-Time Transfer) protocol.
πŸ“¦ PAC β€” Short for peripheral access crate and is a lower layer of abstraction that provides a wrapper around microcontroller peripherals memory mapped registers. Typically each microcontroller has its own PAC.
πŸ“¦ HAL β€” Short for Hardware Abstraction Layer which provides a higher level of abstraction and is the layer that sits on top of the PAC. Several microcontrollers can be bundled under one HAL.
πŸ“ SVD β€” Short for System View Description and is a file format that formalizes the description of the system contained in microcontrollers, in particular, the memory mapped registers of peripherals. The detail contained in system view descriptions is comparable to the data in device reference manuals.
πŸ›  SVD2Rust β€” Is a command line tool that transforms SVD files into crates that expose a type safe API to access the peripherals of the device.
πŸ›  cargo-embed β€” Part of probe-rs, cargo-embed is a cargo subcommand that supports flashing and debug logging of embedded targets.
πŸ›  cargo-flash β€” Also part probe-rs, and is a cargo subcommand for flashing embedded targets.
πŸ›  OpenOCD β€” Short for Open On-Chip Debugger and is a program that provides an interface between a debug adapter and a host computer. OpenOCD provides debug, test, and programming capabilities for microcontrollers.
πŸ›  GDB β€” Part of a debugging toolchain and short for GNU Debugger. GDB is a popular platform used in debugging applications. It provides a user interface to debug microcontroller applications. GDB typically connects to a microcontroller through OpenOCD.
πŸ›  ITM β€” Short for Instrumentation Trace Macrocell and is a debug feature/tool available in particular on ARM Cortex-M devices and is an application driven microcontroller trace source for debugging embedded applications. Also one of the possible options to replace traditional serial monitoring.
πŸ›  Semihosting β€” is another logging mechanism/framework for embedded systems application debugging. Also another alternative for traditional serial communication logging.

--

--

A passionate programmer, I am eager to challenge myself to do things I’ve never accomplished before and I strive to learn and improve on my skills every day