組み込みのRTOS事情2026〜Zephyr・FreeRTOS・組み込みLinux、いつどれを選ぶ?〜
RTOSとは何か、ベアメタルや組み込みLinuxと何が違うのか。Zephyr 4.4.0とFreeRTOS 11.3.0をQEMUで動かし、同じ仕事を3通りで書いて比べました。焼かれるサイズは31倍に増えるのに、手で書く行数は180→207→46と山になります。「重い処理に周期を壊される」のはRTOSの有無ではなく置き場所の問題で、ベアメタルでも12バイトで直りました。
プログラミングや3DCGで何か作りたいと思っているエンジニアがいます
RTOSとは何か、ベアメタルや組み込みLinuxと何が違うのか。Zephyr 4.4.0とFreeRTOS 11.3.0をQEMUで動かし、同じ仕事を3通りで書いて比べました。焼かれるサイズは31倍に増えるのに、手で書く行数は180→207→46と山になります。「重い処理に周期を壊される」のはRTOSの有無ではなく置き場所の問題で、ベアメタルでも12バイトで直りました。
DLLファイルとは何か、中身はどうなっているのかを実際に作って確かめた記録。DLLの中身は外から呼べる関数の名簿で、C・C++・Rust・C#で作って両OSで覗きました。C++とRustの同居も可能ですが、公開する関数を明示しないときの壊れ方はOSで正反対です。作り方4通り・使い方3通り・DLLが無いときのエラー処理まで
.dylib とは何か、.so や .dll と何が違うのかを実際に作って確かめた記録。違いの軸は「いつ名前が解決されるか」の1つだけで、拡張子そのものは何も決めていません。静的リンクはオブジェクトファイル単位で取り込むため、呼んでいない関数まで付いてきます
FlutterからネイティブへC++で架けた橋を、そのままRustで架け替えて比べました。生のC ABIならRust 0.0089µs・C++ 0.0091µsで一致し、橋の材質は速度に関係ないと分かります。一方 flutter_rust_bridge は既定で1,442倍。さらにWindowsでは「渡った先が支配的」という前提が崩れ、Smart App Controlに阻まれてビルドすらできませんでした。
組み込み開発でRustはどこまで実用になったのかを、①書けるか ②安全認証を通せるか ③現場が乗り換えるか の3層に分けて整理しました。Cortex-M3向けに「素のベアメタル」「cortex-m-rt」「Embassy」の3つの書き方で同じプログラムを作り、QEMUで動かして実測。短く書けるほど焼かれるサイズが大きくなる関係や、Ferroceneの認証、AUTOSAR互換RTOSが無い問題まで、目的別の判断表にまとめています。
ボードを1枚も買わずに、OSの無い世界のプログラムをMacで動かしました。QEMUとクロスコンパイラをHomebrewで入れて、スタートアップ・リンカスクリプト・UARTだけの最小構成でARMを起動(text 1,242バイト)。同じものをRISC-V(886バイト)とRustのno_std(870バイト)でも書いて比較。GDBでレジスタとメモリを覗く手順、そして「QEMUでは動くのに実機では一文字も出ない」UART未初期化のつまずきまで、全コードと実測ログ付きで記録します。
組み込み系エンジニアがRustに入門!AndroidカーネルやWindowsへの採用で注目のRustを、C言語使いの目線で解説。所有権・借用・ライフタイムの概念からC言語との文法比較まで。
C言語の開発環境の用意からHello World、変数・条件分岐・繰り返し・関数・配列、そして最大の関門であるポインタ、文字列操作、ファイル入出力、関数マクロ、ビット演算、動的メモリ確保、構造体までを1本にまとめました。ポインタは図で仕組みから説明し、配列の範囲外アクセスやmalloc/freeの対応など、つまずきやすい点も添えています。