0.11.0 Released! 🎉
著者: Yatekii, Tiwalun |
本日、probe-rs 0.11.0 の大規模リリースを発表できることを嬉しく思います。これ は長い時間をかけて準備してきたもので、2020 年 11 月の前回リリース以来 7 か月 以上にわたる開発を経た、これまでで最大のリリースかもしれません!
このリリースには、多数の内部改善、バグ修正、そして使い勝手の向上が含まれてい ます。
probe-rs
probe-rs で特に注目すべき点は次のとおりです。
- フラッシュレイアウトアルゴリズムを大幅に刷新し、ihex ファイルや小さなデータチャンクに関するいくつかの問題を修正しました。
- J-Link がより良く、より高速に動作するための SWD 改善を多数行いました!
- TrustZone™ 搭載チップでのセキュアアクセスが可能になりました。
- probe-rs はフラッシュ処理でダブルバッファリングを利用するようになり、 かなりの速度向上が得られました。
- 細かな不便さの修正を多数行い、GDB server の RISC-V サポートも追加しました。
- probe-rs はフラッシュ書き込み後の検証を行えるようになりました!
- ARM Debug Interface に関する多数のバグを修正しました。
これに加えて、多数のターゲットのサポートも追加しました! 多くの SAMD、STM32、 nRF5x、LPC デバイスが追加されたり、改善されたりしています。
完全な一覧については、 リリースページ の変更履歴をご覧ください。
cargo-flash
cargo-flash では、エラー報告を大幅に改善しました。以前は probe-rs から渡され た生のエラーをそのまま表示しており、ユーザーにとってあまり対処しやすいものでは ありませんでした。現在では、下の画像のように具体的な対処につながるヒントをユー ザーに提示するようにしています。

私たちにはエラー/ヒントのカタログがあり、これをさらに拡充しようとしています。 この機能は cargo-embed や probe-run などのほかのツールにも容易に移植でき、開 発を楽にしてくれます。
cargo-embed
cargo-embed には、使い勝手を大きく向上させる 2 つの改善が入りました。
- RTT と GDB server を同時に実行できるようになりました。以前はこれはまったく
不可能でした。今では RTT と GDB を同時に有効化できます。GDB server が RTT UI
に出力しないよう、
RUST_LOG=offを設定してください。もちろんこれは少し最適 とは言えず、RTT を支障なく使えるより良い方法に取り組んでいます。 - 設定フラグのタイプミスや存在しないフラグを検出してユーザーに報告するように
なり、
enableとenabledの違いのようなことで何時間もデバッグに費やす必要 がなくなりました。
進行中の作業と舞台裏
VSCode プラグイン
長い間、私たちの VSCode プラグインは脇に追いやられた、あまり愛されてこなかっ た存在でした。最近では、@noppej がこれをきちんと 使えるものにするために本格的な作業を進めてくれています! 残念ながら、その追加 は今回のリリースにはぎりぎり間に合いませんでしたが、おそらくもうすぐ出る次の リリースのどれかには入るでしょう。

現在の状態は リポジトリで確認でき、ひと足先に見るこ とができます。実行、停止、ブレーク、ステップ実行はすでに動作しますが、現時点 ではステップ実行が単一命令単位に限られており、煩雑に感じることがあります。こ れについても作業が進んでおり、VSCode のターミナルセクションでの RTT サポート も開発中です! 近い将来、これは RTT down channel、SVD viewer、ITM tracing も サポートする完全なプラグインへと拡張される予定です!
SVD viewer の概念実証は以下で見ることができます。

デバッグシーケンス
デバッグシーケンスは、標準から外れているターゲット(多少の逸脱から仕様違反ま で含む)に対して特別な手順を実行し、単なるフラッシュ書き込みを超えた各種機能 を有効化するために ARM が想定している方法です。
probe-rs を使っていて多くの方が経験したかもしれませんが、一部のチップはほかほ ど良好に動作しません。さらに、まったく動作しないチップや、特定の機能が不足し ているチップもあります。sequences はこれを大きく改善してくれます! sequences が probe-rs にもたらすものを説明するために、いくつか例を挙げます。
- SAMD デバイス特有のリセット要件に sequences で対応できるようになり、これら のチップの扱いがより簡単になります。
- nRF5340 のネットワークコアメモリのような、セキュアまたは特殊なメモリ領域へ のフラッシュ書き込みが、特別なアンロック手順を実行できるようになるため、 sequences によって可能になります。
- nRF52xxx series のような保護されたチップの消去とアンロックが sequences で可 能になります。
- ITM tracing やその他の高度な機能も、sequences によってアンロックして有効化 できます。
要するに、sequences によって、これまで難しかったさまざまなターゲットに関する 多くの新しい可能性が開けます!
また、sequences が可能にするもう一つの素晴らしい点は、自動ターゲット検出です!
--chip xyz を渡す必要はなくなり、誤ってコンパイルされたバイナリをフラッシュ
しようとしたときには、ターゲット/アーキテクチャの不一致を示すヒントなども出せ
るようになります!
マルチコアサポート
@dirbaio と @diondokter は、マルチコア MCU を扱えるよう にするために精力的に作業を進めてきました。これはデバッグシーケンスとも多少絡 んでおり、おそらく一緒に入ることになるでしょう。nRF5340(2 つの M33 コア)の アンロックとフラッシュ書き込みはすでに動作していますが、この追加を完成させる には core library にいくつか必要な変更がまだ残っています。
この PR の一部ではありませんが、密接に関連し、同時に開発も進んでいるものとし
て SWD v2 Multidrop サポートがあります。これにより、RaspberryPI Pico のような
チップをフラッシュできるようになります。
すでに実用的な fork は存在しますが、これを probe-rs core に適切に統合するに
はまだいくらか作業が必要です。
更新: Raspberry Pi Pico 向けの変更は probe-rs にマージされ、fork はもはや不要 になりました。
ハードウェアベースのテスト
最近、@Tiwalun による素晴らしい追加がマージさ れ、メインリポジトリにスモークテストツールが導入されました。これにより、所有 している開発キットに対して各 PR をテストするようセットアップできます。これで、 master にマージする前に多くのリグレッションやエラーを検出できるようになります。
これをさらに一段引き上げるために、私たちは custom hardware rig に取り組んできました。 これにより、M 個のデバッグプローブに多重化された N 個のターゲット群に対して、 各 PR の大規模な自動テストを実行できるようになります。その rig の設計の一端 は以下でご覧いただけます ;)

このプロジェクトをもう少し前に進めるため、地元の工科大学(スイス)と協力して、 学士論文の募集を出しました。学士課程の学生で、これに取り組んでみたい方は、 居住地に関係なく @Yatekii までお気軽にご連絡ください。何かをお約束 することはできませんが、うまく実現できるように何とか方法を考えてみます!
その他
hs-probe
hs-probe についてはかなり前に発表しまし
た。すでに多くの方にご注文いただいています。残念ながら、その製造も世界的な
チップ不足の影響を受けました。良い知らせとして、製造は本日完了し、現在は
プローブへの書き込み工程に入っています。つまり、まもなくプローブの出荷を開始
できます! Emil は、これを実現可能にし、
チップ不足の最中でもプローブを製造できるようにするために、本当に懸命に取り
組んできました! まだプローブをご注文されておらず、入手したい場合は、私たち
のショップからご購入いただけます。
注: hs-probe は、製造したすべてのユニットが売り切れたため、現在は販売して いません。将来的に更新版を製造する可能性があります。
自動リリース
現在、probe-rs コアライブラリおよび関連クレートのリリースを自動化するための パイプラインを整備しました。これにより、より高頻度でリリースできるようになり、 皆さんのツールが常に master から pull し続ける必要がなくなるはずです。開始 時点では、おおよそ 2 週間に 1 回のリリースを目指しています。これは実験的な 取り組みであり、どうなるかを見ていきます。新機能、そして特に修正を、できる だけ早く皆さんに届けるべきだと私たちは考えています。
リリースを増やすのとあわせて、進行中の開発や、その過程で遭遇した興味深いこと についても、もう少しブログを書いていきたいと思っています。ただし、開発と ユーザーサポートにより集中するために、今のところはこの約束は控えめにして おきます ;)
スポンサー
probe-rs は組み込み開発エコシステムにおける重要な礎だと信じているため、 私たちは probe-rs に多くの労力を注いでいます。これらはすべてボランティア としての活動であり、今後も自発的に続けていきますが、本業が少し忙しくなる 時期には、夜に追加で作業時間を確保するのが難しくなることがあります。そのため、 スポンサーの仕組みを用意しました。
この場を借りて、すでに probe-rs の継続的な開発とサポートに大きく貢献して くださっているすべてのスポンサーの皆さまに、心より感謝します!
probe-rs を愛していて、その成長と発展を見たいと思ってくださるなら、 probe-rs の開発を [sponsoring] していただけると嬉しいです。メンバーの中には、 少なくともパートタイムでこのプロジェクトに取り組み、開発を加速させ、 ツール群の品質を向上させたいと考えている者もいます。さらに、上で説明した とおり、可能な限り高品質なソフトウェアを確保するためのハードウェアベースの テストについて大きな計画があり、当然ながらこれには一定の費用がかかります。 Github または OpenCollective を通じて支援できます。
本番環境での probe-rs
probe-rs を本番環境で使用してデバイスをプロビジョニングしている、あるいは これから使用する予定の企業がいくつかあると聞いています。これは私たちにとって 非常に嬉しいことであり、組み込みエコシステムに実際に変化をもたらせているのだ と確信させてくれます!
ありがとうございます!
私たちの仕事が評価されていることを示してくださる、すべてのユーザーと スポンサーの皆さまに心から感謝します。