Closed elfmimi closed 2 years ago
私はSWD(将来的にはJTAGも)のポートも変更したいです。 よりよい方法があればそちらに合わせます。
Cargo.toml に複数の [[bin]] を指定すると、それぞれビルドしてくれるようです。
[[bin]]
name = "rpi-pico"
path = "src/main.rs"
[[bin]]
name = "xiao-rp2040"
path = "src/main.rs"
しかし それぞれの [[bin]] に独立して feature の有無を指定することは今のところ出来ないようでした。
const BIN_NAME: &str = env!("CARGO_BIN_NAME");\ を使った判定であれば、事実上コンパイル時の評価として扱えそうです。
うーん、どうなんでしょうか。
基本的に embedded-hal を使ったBSPはボードごとに用意される前提だと思うので、単一バイナリで複数ボードというのはBSPの方針に合わないんじゃないかなと思ってます。
XIAO RP2040向けのポート設定のバイナリ→Raspberry Pi PicoはPicoのほうがボード外に出ているピンが多いので対応可能ですが、逆は不可能ですし、今後出てくるRP2040のボードがすべて同じピンが出ているとも限らないです。
Seeed以外が出しているRP2040ボードでよく似た形状のものもいくつかありますし。 (私自身は現状XIAOと別のボードを使う予定はないですが…)
なので、RP2040での共通事項を rust-dap-rp2040
クレートなどにくくりだしたうえで、RP2040ボードごとにピン定義や初期化をする構造にするのがいいかなと思います。
回答ありがとうございます。
リポジトリのオーナーとして\ ごった煮でとりあえず動作するものを作るよりも、\ Rust らしく再利用できるクレートとして整備されて行くのを見たい、ということで了解しました。
とりあえずくくりだすのは近いうちにやるとして、一旦 #13 マージしてしまおうかなと思います。
いい加減 Workspaceにして管理したほうがいい気がしてきた。
https://doc.rust-jp.rs/book-ja/ch14-03-cargo-workspaces.html
現状、 rust-dap
のツリーの中に他のクレート含んでるので、 rp-rs/rp-hal
みたいに rust-dapもディレクトリを作った方がよさそう。
うーん、 workspace にすると依存関係を共有するので、各ボードでのcortex-mクレートとかが同じバージョンに解決できる状態じゃないとダメになりそうか…
workspaceにするとmemory.xをみつけられなくなる?
= note: rust-lld: error: /home/kenta/repos/rust-dap/14-rp2040_boards/target/thumbv6m-none-eabi/debug/build/cortex-m-rt-7937df25112c458d/out/link.x:23: cannot find linker script memory.x
>>> INCLUDE memory.x
>>> ^
うーん、cargoにそれっぽいissueあるけど、workspaceだとダメそうな感じか
とりあえず共通箇所をくくりだそうとしているが、本体が RTICのappなので外に出すのが難しいな…
ほとんどRPi PicoとXIAO RP2040がコピペのままだけど、一旦仕方ないか…
line_codingとswdio_pinは共通化できた
https://github.com/ciniml/rust-dap/commit/5fd6a7aab4f6636a3a95322248b7fd6c85a8fdde
@tnishinaga @elfmimi ↑の変更内容で、この辺もうちょい何とかならんの?みたいなところがありましたら、ご指摘いただければと思います。
https://github.com/ciniml/rust-dap/pull/15 をマージしたので、一旦各RP2040ボードへの対応は
rust-dap-rp2040
にいれるboards/
にいれるという方針にする。
https://github.com/ciniml/rust-dap/pull/13 Add Raspberry Pi Pico というプル-リクエストが挙がっていますが\ 基本的に、一つのバイナリでほとんどのRP2040ボードに対応できるのではないかと思っています。\ LEDの接続方式だけ切り替えたいというのが実情ではないでしょうか?
例えば feature によってビルドし分けることが出来るのではないかと気になっています。\ こういう場合はどうするとスジが良いのでしょう?