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…

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 前回変なところで切ってしまったため、今回は軽めです。 idleタスク idleタスクは、initタス…

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

はじめに 組込みRust界の伝説japaric氏が実装しているReal Time For the Masses (RTFM) framework for ARM Cortex-M microcontrollersを試してみます。 github.com RTFM自体は、Real-time for the masses, step 1: Programming API and static priority SRP …

mdbook-epubお試し

はじめに 同人誌を書く環境を模索しています。 Rustが好きなので、Rust製のドキュメントビルダーmdbookも試してみます。 mdbook自体には、PDF出力機能がないため、3rd party pluginであるdbook-epubを試してみます。 インストール Rust環境はあらかじめ構築…

組込みRustドキュメントを和訳したお話

はじめに 組込みRustの(勝手に主要と思っている)ドキュメント3つの和訳が、一通り完了しました。 今後は、upstream変更に対するメンテンナンスをやっていきます。 節目なので、整理しておこうと思います。 和訳も、大本になる文章があるからできるわけで、…

YoctoでRust②〜cargo-bitbake〜

はじめに 組込みLinuxでRustする場合、普通にホストマシンで開発して、普通にホストマシンのRustコンパイラでクロスビルドしたものをターゲットに持って行っています。 これで事足りているのですが、前々から興味があったため、YoctoでRustアプリケーション…

YoctoでRust①〜meta-rustのhello-worldビルド〜

はじめに 組込みLinuxでRustする場合、普通にホストマシンで開発して、普通にホストマシンのRustコンパイラでクロスビルドしたものをターゲットに持って行っています。 これで事足りているのですが、前々から興味があったため、YoctoでRustアプリケーション…

実践Rust入門

はじめに 著者の皆様から本書をいただきました。本当にありがとうございます。 実践Rust入門[言語仕様から開発手法まで]作者: κeen,河野達也,小松礼人出版社/メーカー: 技術評論社発売日: 2019/05/08メディア: 単行本(ソフトカバー)この商品を含むブログを…

KiCadで基板を作ってみよう①〜基板を描くまで〜

はじめに 技術書典で入手した基板を作ってみよう 技術書典6特装版 -KiCad 5による基板作成-を参考に基板を作ってみます。 書籍内で詳細が記述されていない部分 (インストール方法など)のみ、メモとして記載します。 techbookfest.org 私は、電子回路(LSI)設…

インラインアセンブリだけの関数の最適化でハマった

はじめに Cortex-Mのコンテキストスイッチを書いています。 引数有りで、インラインアセンブリだけを実行する関数を作り、threadのディスパッチを書いていました。 このような場合、適切なconstraintを書いてインラインアセンブリを呼び出さないと、リリース…

技術書典6の戦利品を読む①〜OS Girls / 組込みエンジニアの教科書 / Rust on Bare-metal Raspberry Pi / Atmelさんちの消失〜

はじめに 1つ1つは短めです。 少しでも、宣伝、フィードバック、になれば幸いです。 OS Girls booth.pm 8086やIntel SDMの紙媒体が転がっている不思議な部室で繰り広げられる女子高生たちのOS自作物語です。 物語の導入として、PCを使っていて湧いた疑問から…

組込みRustのイベントやります 2019/6/17

はじめに inteface-meet-up.connpass.com CQ出版様の雑誌インタフェース主催で、組込みRustのイベントを開催することになりました。 CQ出版様、ありがとうございます。 参加枠埋まってますが、繰り上がりや、多くの方が参加登録して頂ければまた別の機会を設…

組込みでCからRustにステップアップする順序

はじめに 先日、twitterで以下のアンケートを行ったところ、予想以上に多くの方にご回答頂けたため、まとめと私の考えを書きます。 組込みでCからRustにステップアップするための順序。C → ?? → Rustさぁ??に入るのは?— 錆ありはぐれベアメタル (@LDScell) …

技術書典6買い物メモ

はじめに 自分用メモです。 1日の流れ 10:10分ごろ会場に到着しましたが、すでにかなりの行列でした。 入場券の番号は2111でした。 11:30頃、会場入りしたと思います。 ハードウェア、低レイヤ、セキュリティ、と島を巡りました。 12:15頃には買い物を終えま…

Zephyrのテストフレームワーク調査③〜はじめてのZmock〜

はじめに Zephyrにはテストフレームワーク (Mockもあります!) が用意されています。 テストは大事です。さっさとテストを作れるようにしましょう! docs.zephyrproject.org 前回は、単純なテストを試したので、今回は、Mockを試してみます。 サンプル とに…

Zephyrのテストフレームワーク調査②〜はじめてのZtest〜

はじめに Zephyrにはテストフレームワーク (Mockもあります!) が用意されています。 テストは大事です。さっさとテストを作れるようにしましょう! docs.zephyrproject.org 何事も写経から、ということで、サンプルの写経を行っていきます。 汎用テンプレー…

Zephyrのテストフレームワーク調査①〜サンプル実験〜

はじめに Zephyrにはテストフレームワーク (Mockもあります!) が用意されています。 テストは大事です。さっさとテストを作れるようにしましょう! docs.zephyrproject.org Ztest ZephyrのテストフレームワークZtestは、インテグレーションテストにも、特定…

Zephyr×Rustのインテグレーションにチャレンジ!⑫~Driver APIリファクタリングの旅1~

はじめに ZephyrとRustのインテグレーションに挑戦しています。 Rustで最低限動作するZephyrのUART Driverを作りました。 力技で無理矢理実装したところも多いです。負債を返済するときが来ました。 デバイス登録 まずは、デバイスおよびデバイスドライバをZ…