Tockのツリー外
このガイドでは、Tockマスターリポジトリ以外でサブシステムを維持するための ベストプラクティスを説明します。
このガイドは作業中です。コメントやプルリクエストをお待ちしています。
概要
Tock は安定したシステムコールABIの維持を目的としていますが、カーネルインター フェースの安定性を保証するものではありません。Tockの開発状況を把握するには、 主に次の2 つのチャンネルがあります。
- tock-devメーリングリスト: Tockの大きな変更はすべてこのメーリングリストで報告されます。 このメーリングリストは一般的なTockの開発もサポートしていますが、比較的 トラフィックは少ないです(1日平均で1通未満のメール)。
- Tock GitHub: Tockの変更はすべて Pull Requestsを通じて行われます。些細でない変更は一般にフィードバックを得る ためにマージまで少なくとも一週間はかかります。
最後に、遠慮なく助けを求めてください。
構造
通常、プロジェクトの中にTockをsubmoduleとして入れておくのが一番簡単です。
一般に次のようにTock のディレクトリ構造に倣うことを勧めます。
$ tree .
.
├── boards
│ └── my_board
│ ├── Cargo.toml
│ ├── Makefile
│ └── src
│ └── main.rs
├── my_drivers
│ ├── Cargo.toml
│ └── src
│ ├── my_radio.rs
│ └── my_sensor.rs
└── tock # Where this is a git submodule
│ ├── ...
ボード
ボードのMakefileにPLATFORM変数を設定し、このプラットフォームの名前を指定し、
最上位のTock Makefileを含める必要があります。また、カーネルをボードにロードする
方法を指定するprogramターゲットとflashターゲットを定義することを強く
勧めます。
PLATFORM = my_board
# Tockビルド規則を取り込む
include ../../tock/boards/Makefile.common
# bootloaderまたは簡単で直接的な接続経由でロードする規則
program:
...
# JTAGまたはその他の外部プログラマ経由でロードする規則
flash:
...
ボードのCargo.tomlにはボードが使用するすべてのコンポーネントを見つける方法を 記述する必要があります。これらのほとんどはTockの要素への参照になるでしょう。
[package]
name = "my_board"
version = "0.1.0"
authors = ["Example Developer <developer@example.com>"]
[profile.dev]
panic = "abort"
lto = true
opt-level = 0
debug = true
[profile.release]
panic = "abort"
lto = true
[dependencies]
cortexm4 = { path = "../../tock/arch/cortex-m4" }
capsules = { path = "../../tock/capsules" }
sam4l = { path = "../../tock/chips/sam4l" }
kernel = { path = "../../tock/kernel" }
my_drivers = { path = "../../my_drivers" }
その他すべてのこと
カスタムチップ、ドライバ、その他のコンポーネントはCargo.tomlを必要とするだけの はずです。
[package]
name = "my_drivers"
version = "0.1.0"
authors = ["Example Developer <developer@example.com>"]
[dependencies]
kernel = { path = "../tock/kernel" }
例
- Tockの中心的開発者の中には道標となるプロジェクトを開発している者もいます。 このプロジェクトはTockを実行する7つのボード(増加中!)を 含みます。
- 新たなチップやボードはツリー外で開発が始められることが多いです。現在の 作業にSTM32ポートがあります。