mirror of
https://gitlab.cern.ch/wotsubo/endcap-sl-software-ri-generator.git
synced 2025-02-23 09:07:07 +09:00
79 lines
3.1 KiB
Markdown
79 lines
3.1 KiB
Markdown
# Endcap SL Software RI Generator
|
|
|
|
これはXMLのレジスタマップからMPSoCソフトで使う用のコードを生成するソフトです。
|
|
|
|
XMLおよびそのスキーマは[L0 Muon Endcap/Endcap Sl CSR XML](https://gitlab.cern.ch/l0muon-endcap/endcap-sl-csr-xml)にあります。
|
|
生成されたコードは[MPSoC Software](https://gitlab.cern.ch/wotsubo/mpsoc-software)で使うことが想定されています。
|
|
そこに`RegisterSpec`などのレジスタ向けのトレイトが定義されてます。
|
|
|
|
## 使い方
|
|
|
|
このプロジェクトでは、バイナリとライブラリの両方のクレートを提供しています。
|
|
バイナリクレートはシェルから使うことができ、ライブラリクレートは他のプログラムから使うためのものです。
|
|
|
|
### ビルド環境の構築
|
|
|
|
このコードは[Rust](https://www.rust-lang.org/ja/)で書かれているので、[rustup](https://www.rust-lang.org/ja/tools/install)をインストールする必要があります。
|
|
rustupのインストールには公式サイトにある`curl`スクリプトを使うか、あるいはシステムのパッケージマネージャを使うことができます。
|
|
`cargo`を実行してみることでインストールのチェックができます。
|
|
|
|
`cargo`はlxplusにインストールされているみたいなので、それも使えるかもしれません(ただし、バージョンは最新ではありません)。
|
|
|
|
### バイナリクレートの使い方
|
|
|
|
```bash
|
|
cargo build --bins --release
|
|
```
|
|
を実行します。
|
|
`--release`はオプションです。
|
|
|
|
`target/release`に入ってるバイナリファイルを実行するか、`cargo run -- <XML> <OUT>`で実行できます。
|
|
|
|
詳しくは`--help`を見てください。
|
|
|
|
### ライブラリクレートの使い方
|
|
|
|
```bash
|
|
cargo doc --open
|
|
```
|
|
|
|
で閲覧できるドキュメントを見てください。
|
|
|
|
## 開発
|
|
|
|
```bash
|
|
cargo doc --document-private-items --open
|
|
```
|
|
|
|
でみれるプライベートアイテムを含んだドキュメントを見てください。
|
|
|
|
テストなどは以下のコマンドで実行できます
|
|
```bash
|
|
$ cargo test # テスト
|
|
$ cargo fmt # フォーマット
|
|
$ cargo clippy # リント (`rustup component add clippy`でインストールできます)
|
|
```
|
|
|
|
### rust-analyzer
|
|
|
|
開発には[rust-analyzer](https://rust-analyzer.github.io)を使用することを __強く推奨__ します。
|
|
推論された型の表示や補完に関して必要不可欠な上、フォーマットやclippyを実行することができます。
|
|
|
|
### CIについて
|
|
|
|
ビルドとフォーマットとclippyのテストが走ります。
|
|
フォーマットやclippyのチェックをしてpushしてください。
|
|
|
|
### Rustについて
|
|
|
|
以下のウェブサイトでRustを良く学べます。
|
|
|
|
- [The Book](https://doc.rust-jp.rs/book-ja/)
|
|
|
|
もしくはターミナルで
|
|
```bash
|
|
rustup doc
|
|
```
|
|
を実行してみてください。
|
|
様々な有益なドキュメントへのリンクが載っています(自分はThe Bookとstandard libraryのドキュメントとRust By Exampleが役に立ちました)。
|
|
|