組み込み Rust 用語集
no_std
Section titled “no_std”Rust の標準ライブラリ(std)を使わず、core ライブラリのみで動作するモード。組み込みなどOSがない環境で必須。#![no_std] アトリビュートで有効化。
標準ライブラリを使用しない場合は println! などのマクロは使用できない。
代わりに defmt などの組み込みに対応したログライブラリを使用する。
PAC (Peripheral Access Crate)
Section titled “PAC (Peripheral Access Crate)”マイコンのレジスタを直接操作するための低レベル crate。 マイコンメーカーから提供される SVD (System View Description) ファイルから自動生成される。通常は HAL を経由して使う。
たとえば、STM32 であれば公式の stm32-rs リポジトリにて SVD を管理・提供している。
embassy 開発コミュニティではこの SVD を元に、 stm32-metapac クレートを自動生成している。
embassy ではこの PAC の上に embassy-stm32 を構築している。
詳細は stm32-data を参照。
HAL (Hardware Abstraction Layer)
Section titled “HAL (Hardware Abstraction Layer)”PAC の上に構築される抽象化レイヤー。embedded-hal トレイトを実装し、ペリフェラルを安全に操作できるようにする。
STM32 であれば stm32f7xx-hal などのようにマイコンのファミリーごとに管理されたクレートが用意されている。 ベアメタル実装をする場合はこれらの HAL レイヤーを直接利用するか、あるいは PAC を直接利用してレジスタ操作を行う。
embedded-hal
Section titled “embedded-hal”組み込みハードウェア抽象化のトレイト集。GPIO、SPI、I2C、UART、ADC などの共通インターフェースを定義。これに準拠した HAL 実装やドライバは相互に組み合わせ可能。
embedded-hal 参照。
RTIC (Real-Time Interrupt-driven Concurrency)
Section titled “RTIC (Real-Time Interrupt-driven Concurrency)”Cortex-M 向けのリアルタイムフレームワーク。割り込み優先度をベースにしたタスクスケジューリングと、安全なリソース共有を提供する。
日本語版の記事は RTIC (Real-Time Interrupt-driven Concurrency) 参照。
Embassy
Section titled “Embassy”Embassy は Rust の async/await を組み込みで活用するためのフレームワーク。非同期ランタイム(executor)、HAL(embassy-stm32 等)、通信スタック(embassy-net 等)を統合的に提供。
現在最も活発に開発されている組み込み Rust フレームワークであり、パフォーマンス面でも優れている。
defmt は組み込み向けの軽量ログフォーマット。 文字列をホスト側に転送せず、フォーマット情報のみを送信することで帯域を節約。
RTT (Real-Time Transfer)
Section titled “RTT (Real-Time Transfer)”SEGGER が開発したデバッグプローブ経由の高速データ転送方式。defmt やロギングで広く使われる。
RTT(Real Time Transfer) RTT Knowledge Base
probe-rs
Section titled “probe-rs”Rust 製のデバッグプローブ操作ライブラリ兼ツール。SWD/JTAG 経由でフラッシュ書き込み、デバッグ、RTT を統一的に扱える。 本サイトの probe-rs book 参照。
memory.x
Section titled “memory.x”リンカスクリプト。フラッシュと RAM の開始アドレスとサイズを定義する。Cortex-M プロジェクトで必須。 memory.x については Embedded Rust Book にて 解説 あり。
entry マクロ
Section titled “entry マクロ”cortex-m-rt が提供する #[entry] マクロ。main 関数を組み込み用のエントリポイントとしてマークする。戻り値は !(決して返らない)。
cortex-m 参照。
cross-compilation
Section titled “cross-compilation”ホスト(PC)とは異なるターゲット(マイコン)向けにコンパイルすること。例: thumbv7em-none-eabihf ターゲットで STM32 用バイナリをビルド。
DMA (Direct Memory Access)
Section titled “DMA (Direct Memory Access)”CPU を介さずにメモリとペリフェラル間でデータを転送する仕組み。UART や SPI の大量データ転送でCPU負荷を下げる。
JTAG / SWD
Section titled “JTAG / SWD”マイコンのデバッグや書き込みを行うためのインターフェース規格。
JTAG (Joint Test Action Group) は古い規格で、4 線(TCK, TMS, TDI, TDO)を必要とする。 SWD (Serial Wire Debug) は JTAG の簡易版で、2 線(SWDIO, SWCLK)で済む。
最近の組み込み Rust 開発では SWD が一般的。