本書は、組込みシステムやOSのような低レイヤーシステムの開発経験がないプログラマーが、自作OSをはじめるため解説書です。C言語を用いることが多い低レイヤーシステム開発について、本書ではRustを使います。RustはC言語と比較して、様々なモダンな機能やツールがそろっているだけでなく、C言語の長所である直接のメモリ制御が可能なため、高パフォーマンスな組込みシステム開発での利用が注目されています。本書はRustそのもの解説も含みますが、低レイヤーシステム開発特有のテクニックを中心に解説します。
【目次】
第1章 環境構築
第2章 ベアメタルでHello World
第3章 割り込み制御
第4章 プロセス切り替え
第5章 スケジューラを実装する
第6章 排他制御・データ共有の実装
第7章 デバイスドライバを実装する
第8章 ヒープ領域を使う
第9章 システムコールをつくる
目次プレビュー
- はじめに
- 第1章 環境構築
- 第2章 ベアメタルでHello World
-
想定読者
-
自作組込みOSとは
-
本書でつくる組込みOS
-
フィードバック
-
1.1 Rust
-
1.2 ツール
-
1.3 使用ボード
-
1.4 仕様書・ドキュメント
-
2.1 プロジェクトのセットアップ
-
2.2 プログラムの実行
-
2.3 no_std環境下でのRust
-
2.4 Vector tableを定義する
-
2.5 プログラムをボードで実行する
-
4.1 ARMv7-MのCPUモードについて
-
4.2 CPUの状態を切り替える
-
5.1 連結リストを実装する
-
5.2 プロセスの状態を保存する
-
5.3 スケジューラ本体の実装
-
6.1 グローバル変数の共有
-
6.2 Atmoicな値を使う
-
6.3 割り込みを禁止する
-
6.4 Mutexを実装する
-
7.1 ペリフェラルを扱うには
-
7.2 LED・スイッチを操作しよう
-
7.3 さらなる抽象化
-
8.1 allocクレート
-
8.2 グローバルアロケータを定義する
-
8.3 シンプルなアロケータの実装
-
9.1 プロセス側から引数を受け取る
-
9.2 システムコールを定義する
-
9.3 システムコールを処理する
-
リアルタイムスケジューリング
-
プロセスの設計
-
テスト
-
外部クレートの活用