Wio Terminal で Knurling Sessions 2020Q4

はじめに ここ数日、Knurling Sessions 2020Q4 をリファレンスボード (nRF52840-DK) でやっていました。 tomo-wait-for-it-yuki.hatenablog.com 今回は、Wio Terminal を使って同じ内容 (CO2 センサから読み取った値をディスプレイに表示) をやってみます。 …

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…

VxWorksの脆弱性「URGENT11」のテクニカルホワイトペーパーを読む①

はじめに 7月末にVxWorksの脆弱性発見が公開されました。 armis.com 日本語関連記事 VxWorksは組込み機器では非常に有名なRTOSで、20億以上のデバイスに搭載されています。 今回の脆弱性URGENT11で影響を受けるデバイスは2億個以上であると報告されています…

技書博出展レポート〜初めての同人誌執筆で組込みRustの本を頒布しました〜

はじめに 記憶の新しいうちに、経緯などをまとめておきます。 自分用メモの側面が強いですが、今後初めて同人誌を頒布される方の参考になると嬉しいです。 表紙 BOOTHで物理本と電子版を販売しているので、もし良ければお買い求め下さい。 (物理本は倉庫への…

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

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

LLVM IRファイルを読み込む

はじめに ファイルに出力されたLLVM IRをC++で読み込んで遊んでみます。 環境 $ clang++ --version clang version 8.0.1-svn360950-1~exp1~20190517004233.70 (branches/release_80) Target: x86_64-pc-linux-gnu Thread model: posix InstalledDir: /usr/bi…

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…

WebAssembly Micro Runtimeお試し②

はじめに 少し前に、組込みで使えるWebAssembly Micro Runtimeが公開されました。 また、いつの間にかSTMでのデモアプリが公開されています。 github.com リファレンスが普段触っているZephyrなので、少し動かしてみます。 前回のおさらい 試しに、qemu_cort…

WebAssembly Micro Runtimeお試し①

はじめに 少し前に、組込みで使えるWebAssembly Micro Runtimeが公開されました。 また、いつの間にかSTMでのデモアプリが公開されています。 github.com リファレンスが普段触っているZephyrなので、少し動かしてみます。 準備 ライブラリをインストールし…

ZephyrのI2C scannerサンプルを動かしてみる

はじめに I2Cデバイスを使いたいので、手始めにZephyrのI2C scannerサンプルを動かしてみます。 ターゲットSoCはnRF52840です。 サンプルプロジェクトを確認 |> zephyr/samples/drivers/i2c_scanner nRF52x系は、overlayする設定ファイルが用意されています…

ZephyrでPWM

はじめに ZephyrでPWMしてみます。 ターゲットSoCはnRF52840です。 Zephyrプロジェクト設定 Zephyr PWM driver CONFIG_PWMを有効にします。 nRF52840のPWM0を利用するので、CONFIG_PWM_0を有効にします。 |> prj.conf # PWM CONFIG_PWM=y CONFIG_PWM_0=y dev…

westを使ったZephyrプロジェクトの管理

はじめに Zephyr 1.14からwestというメタツールが公式なツールになりました。 面倒ですがさらっと使っておきましょう。 ソースコードやドキュメントは、できるだけ1.14を参照するようにします。 Zephyr 1.14はLTSという位置づけで、2年間はセキュリティアッ…

ZephyrでRTTコンソール

はじめに 久々のZephyrです。 JLinkには、JTAG/SWD経由でシリアル入出力をする機能があります。 UARTを使ったコンソールも良いのですが、物理配線が増えたり、簡単にUARTを引き出せない場合、RTTが便利です。 Zephyrコンフィグ NordicのZephyrフォークを参考…

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 サンプルコードをマクロ展開して心が折れそうです。 とりあえず、当面サンプルコードの表面…

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

はじめに 組込みRust界の伝説japaric氏が実装しているReal Time For the Masses (RTFM) framework for ARM Cortex-M microcontrollersを試してみます。 github.com 面白いので、引き続き触っていきます。 リソース管理続き RTFMのstatic変数は、通常のstatic…