Rust

Rust の組込み用非同期フレームワーク Embassy (7)

自分のためだけに Embassy コードリーディングシリーズです。 nRF52840 向けの Waker を wake している実装を見ていきます。 GPIO 割り込みから wake() するのが、おそらく最も単純な実装でしょう、ということで GPIO の example を探します。 examples/nrf5…

Rust の組込み用非同期フレームワーク Embassy (6)

誰得 Embassy コードリーディングシリーズです。 Spawner 周りを見終わったので、次は Waker いってみましょう。 Waker はおそらく wake 呼び出す側から見た方がわかりやすいでしょう。 std で動く example の中だと serial.rs でしょうか。 use async_io::A…

Rust の組込み用非同期フレームワーク Embassy (5)

ゆるふわ Embassy コードリーディングシリーズです。 前回 spawn 周りはあとタスクの構造だけ、というところまで来たのでタスクの構造を見てみましょう。 タスク関連の構造体としては TaskHeader TaskStorage TaskRef があります。このへん で定義されていま…

Rust の組込み用非同期フレームワーク Embassy (4)

ゆるふわ Embassy コードリーディングシリーズです。 前回 Executor がわかってきた気持ちになったので、もう少し潜ってみましょう。 今回は Spawner いってみます。 コメントや構造体定義を見るに、Spawner は特定の Executor に紐付いていることがわかりま…

Rust の組込み用非同期フレームワーク Embassy (3)

組込み向けの async/await フレームワーク embassy をゆるーく眺めていくシリーズです。 前回は main についているマクロがなにやってるか見てみました。 github.com そして個人的には、 Spawner とか Executor がどうなってるねん!が気になるので、そこ突…

Rust の組込み用非同期フレームワーク Embassy (2)

Embassy をゆるーく眺めるシリーズです。 前回 README を見てみて Timer どうなっているのか気になりました。 なので実装をおいかけてみましょう。 アプリコードは大体こんな感じでした。 さてどこから行きましょうかね? use embassy_executor::Spawner; us…

Rust の組込み用非同期フレームワーク Embassy (1)

個人ブログをあまりに放置するのも良くないですね! 最近組込み Rust の情報発信もご無沙汰*1なので、自分のモチベーションのためにもちょいちょいメモ書きながら Embassy やっていこうと思います。 リポジトリはこちら。 github.com Web ページもありますね…

cargo make で contains multiple actions のエラーに遭遇

ブログさぼりがちなので、リハビリがてら軽いやつから書いていきます。 いまさらながら cargo make はじめました。 github.com (一応) 自分でメンテしている echonet-lite-rs のテストを cargo make で作ってみるかー、と考えたのが始まりです。 github.com …

結局 Rust の embedded-hal v1.0.0 ってどうなってるの?

この記事は、モダン言語によるベアメタル組込み開発 Advent Calendar 2022の12日目として書きました。 qiita.com モダン言語によるベアメタル組込み開発、と言われても私のような人間は、何の言語ネタで書くか困ってしまいますね。 困った時の神だより。 神…

std Rust で M5Stamp C3U Mate の JTAG シリアルコンソールを使う

はじめに 昨年末、「M5Stamp-C3 Mate で始める組込み std Rust プログラミング」というエントリを書きました。 tomo-wait-for-it-yuki.hatenablog.com 年が明けてから、ファームウェアの書き込み、シリアルコンソール、GDB を使ったデバッグが USB Type-C ケ…

M5Stamp-C3 Mate で始める組込み「std」Rust プログラミング

このエントリは Rust Advent Calendar 2021 3 の5日目として書きました。 qiita.com はじめに みなさん組込み Rust やっていますか?はい、やっていますね。息を吸うように日常的にやっているはずです。今年はなんと組込み Rust にフィーチャーした「基礎か…

Wio Terminal で probe-run / defmt

組込み Rust の便利なツール、probe-run と defmt を Wio Terminal で使ってみます。

Knurling Sessions 2020Q4 をやる (4) 〜ディスプレイ〜

Knurling Sessions 2020Q4 をやる、の最後です。今回は、CO2センサから読み取った値をディスプレイに表示します。

Knurling Sessions 2020Q4 をやる (3) 〜CO2センサドライバ〜

前回、Lチカ終わらせたので、いよいよ CO2 センサドライバを書いていきます。

Knurling Sessions 2020Q4 をやる (2) 〜基本編〜

はじめに knurling-rs では Ferrous Systems が、スポンサー向けに組込み Rust の教材 knurling-session を提供しています。 github.com knurling-session では、3ヶ月ごとに1つのテーマを取り上げています。 最新のもの以外は、公開されています。スポンサ…

Knurling Sessions 2020Q4 をやる (1) 〜環境構築〜

はじめに knurling-rs では Ferrous Systems が、スポンサー向けに組込み Rust の教材 knurling-session を提供しています。 github.com knurling-session では、3ヶ月ごとに1つのテーマを取り上げています。 最新のもの以外は、公開されています。スポンサ…

『基礎から学ぶ 組込みRust』を書きました

はじめに 2021年4月20日、『基礎から学ぶ 組込みRust』(C&R研究所) を出版します。Rust の文法から組込み Rust でファームウェアを作成するところまでを、片手で持てる (多分!まだ持ったことないけど!) 1 冊の本にまとめた、喉から手が出るほど (私が) 求…

Rust serialport お試し①

はじめに Rust でシリアル通信したくなったので、serialport クレートを使ってみます。 docs.rs serialport クレート serialport クレートはクロスプラットフォームで使えるシリアルポートライブラリです。 各プラットフォーム固有の API も提供しています。…

knurling-rs のツールお試し Get a grip on bare-metal Rust!

はじめに この記事は Rust Advent Calendar 2020 12日目の記事です。 github.com Our mission is to improve the embedded Rust experience. To achieve this, we build and improve tools and create learning materials. knurling-rs は Ferrous Systems …

Cargoでgitレポジトリ内にある一部crateを依存に追加する

はじめに Cargo で crates.io に登録されていない crate を指定するには、git や path で指定できます。 git のレポジトリに複数の crate が存在する場合には、左辺に依存する crate 名を指定すると、レポジトリ内から該当 crate を依存関係に追加できます。…

Rust no-stdのasync完全理解を目指そう!

はじめに この記事はRust Advent Calendar 2019の17日目として書きました。 組込みRust界の神japaricさんがno-std環境でasyncを使うPoCレポジトリを公開しています。 github.com 理解できるかどうか非常に自信がありませんが、これは見てみるしかありません…

技術書典7でRustが関連する本/サークル一覧メモ

はじめに 随時、更新します。抜けや、間違いがあればご連絡下さい。 techbookfest.org 既刊ですが、私も「組込み/ベアメタルRustクックブック」を頒布しますので、よろしくお願いします(宣伝)。 新刊 い35C: esproject(エスプロジェクト) techbookfest.o…

7/27(土) 技書博で組込み/ベアメタルRustクックブックを販売します!

はじめに 宣伝です! 来週開催される技術書同人誌博覧会にて、組込み/ベアメタルRustクックブックを販売します。 A-9 AQUAXISさんのブースにご一緒させて頂きます。 ブース主の石原ひでみさんはFPGAの薄い本とMarkdown組版の本を、みつきんさんはNuttxの本を…

Rust × 組込みで前代未聞のInterfaceオフ会レポート

はじめに 昨日、2019年6月17日、巣鴨のCQ出版社様セミナールームにおいて記念すべき組込みRustのオフ会が開催されました! 今回のオフ会は、雑誌掲載前にオフ会を開催する、という前代未聞のオフ会、とのことでした。 inteface-meet-up.connpass.com 非常に…

WebAssembly Micro RuntimeでRustアプリをマイコンで動かす!

はじめに 前回、もう一歩のところだったのですが、RAMが2MB搭載されていないと動かない状態でした。 tomo-wait-for-it-yuki.hatenablog.com 私はそんなマイコン持っていないため、今回は、256KB RAMが搭載されているマイコン (これも高性能品ですが) 上でRus…

WebAssembly Micro RuntimeでRustのアプリを動かす!

はじめに WebAssembly Micro Runtimeでは、64KB程度のRAMが搭載されたマイコンであれば、wasmアプリケーションを動かすことができます。 github.com Rustはwasmをターゲットにビルドできます。 後は、わかるね? アプリケーションの作り方 WebAssembly Micro…

Rust製組込みOSのTockを触ってみる②

はじめに 諸事情によりまとまった時間を取るのが難しいので、入門系やります。 今回は、Rust製のRTOSであるTockを触ってみます。 githubのTock organizationはこちらです。 前回はC言語で書かれたサンプルアプリケーションを動かしたので、今回はRustで書か…

Rust製組込みOSのTockを触ってみる①

はじめに 諸事情によりまとまった時間を取るのが難しいので、入門系やります。 今回は、Rust製のRTOSであるTockを触ってみます。 githubのTock organizationはこちらです。 Getting started Getting startedを参考に、何か動かしてみます。 Requirements nig…

Rustコンパイラ組込みのlintについて調べる

はじめに Rustコンパイラであるrustcには組込みのlintがあります。 Rustのlintツールでは、clippyが有名ですが、rustc組込みの方もソースコードの改善に役立ちます。 7月の技術書同人誌博覧会のネタ探しの一環だったのですが、思ったより世の中の役に立ちそ…

RustのRTFM (Real Time For the Masses)を試してみる⑤

はじめに 組込みRust界の伝説japaric氏が実装しているReal Time For the Masses (RTFM) framework for ARM Cortex-M microcontrollersを試してみます。 github.com サンプルコードをマクロ展開して心が折れそうです。 とりあえず、当面サンプルコードの表面…