Rust

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メディア: 単行本(ソフトカバー)この商品を含むブログを…

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

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

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

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

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

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

Zephyr×Rustのインテグレーションにチャレンジ!⑪~UART Driver 受信編~

はじめに ZephyrとRustのインテグレーションに挑戦しています。 RustでデバイスDriverを作っていきます。 まずは、QEMUのUARTをターゲットにします。 QEMUのUARTデバイスはガバガバで、初期化を行わなくてもデータ送受信ができるので、敷居が低いです。 UART…

Zephyr×Rustのインテグレーションにチャレンジ!⑩~UART Driver 送信編~

はじめに ZephyrとRustのインテグレーションに挑戦しています。 RustでデバイスDriverを作っていきます。 まずは、QEMUのUARTをターゲットにします。 QEMUのUARTデバイスはガバガバで、初期化を行わなくてもデータ送受信ができるので、敷居が低いです。 やる…

Zephyr×Rustのインテグレーションにチャレンジ!⑨~UART Driver 準備編~

はじめに ZephyrとRustのインテグレーションに挑戦しています。 前回は、RustでDriverの初期化関数を書いて、動作させることに成功しました。 tomo-wait-for-it-yuki.hatenablog.com 今回から、もう少しちゃんとデバイスDriverを作っていきます。 まずは、QE…

Zephyr×Rustのインテグレーションにチャレンジ!⑧~続システムコール調査~

はじめに ZephyrとRustのインテグレーションに挑戦しています。 これまでで、アプリケーションをRustで書いてきました。 ここからは、Driverを書く方法を調査していきます。 前回までのあらすじ アプリケーションに公開するDriver APIを作るため、システムコ…

Zephyr×Rustのインテグレーションにチャレンジ!⑦~システムコール調査~

はじめに ZephyrとRustのインテグレーションに挑戦しています。 これまでで、アプリケーションをRustで書いてきました。 ここからは、Driverを書く方法を調査していきます。 前回までのあらすじ Rustで書いたDriverの初期化関数から、文字が出力できました。…

Zephyr×Rustのインテグレーションにチャレンジ!⑥~RustでDriverを書く!~

はじめに ZephyrとRustのインテグレーションに挑戦しています。 これまでで、アプリケーションをRustで書いてきました。 ここからは、Driverを書く方法を調査していきます。 前回までのあらすじ RustでZephyrのDriverを書くためには、INIT_DEVICEマクロ相当…

Zephyr×Rustのインテグレーションにチャレンジ!⑤~続RustでDriverを書くための調査~

はじめに ZephyrとRustのインテグレーションに挑戦しています。 これまでで、アプリケーションをRustで書いてきました。 ここからは、Driverを書く方法を調査していきます。 DEVICE_INITマクロ tomo-wait-for-it-yuki.hatenablog.com 前回記事で、DEVICE_INI…

Zephyr×Rustのインテグレーションにチャレンジ!④~RustでDriverを書くための調査~

はじめに ZephyrとRustのインテグレーションに挑戦しています。 tomo-wait-for-it-yuki.hatenablog.com これまでで、アプリケーションをRustで書いてきました。 ここからは、Driverを書く方法を調査していきます。 最低限必要なことは何か? まずは、ここか…

Discovery翻訳の宣伝

はじめに Discoveryを翻訳したので、マイコンでRustを動かす体験をお楽しみください。 tomoyuki-nakabayashi.github.io Discoveryでは、STM32F3DISCOVERY開発ボードを使って、次のようなアプリケーションを実装します。 LEDルーレット LEDコンパス シリアル…

Zephyr×Rustのインテグレーションにチャレンジ!③~bindgen~

はじめに ZephyrのアプリケーションをRustで実装するインテグレーションに挑戦しています。 tomo-wait-for-it-yuki.hatenablog.com これまでに、Rustをライブラリとしてインテグレーションすることに成功しました。 ただし、Rustから呼ぶC言語のFFIは、手動…

Zephyr×Rustのインテグレーションにチャレンジ!①~ライブラリとして組み込む~

はじめに Zephyrで本格的にRustアプリケーションを作る環境を構築していきます。 ソースコードはこちらにあります。 github.com tomo-wait-for-it-yuki.hatenablog.com 前回は、手動でかつ強引にRustを組み込んだので、今回はZephyrのビルドプロセス内で、Ru…

「The Challenge of Using C in Safety-Critical Applications」を雑に読む

The Challenge of Using C in Safety-Critical Applicationsというwhite paperを雑に読んでみます。 このwhite paperは、C言語でsafety-criticalなシステムを作ることが、いかに難しいかを述べています。 white paper内で参照しているコードは、下記のレポジ…

組込みRust考察②~効率良く安全な組込み開発をしたい~

はじめに tomo-wait-for-it-yuki.hatenablog.com 前回の続きです。 今回は、Rustを使うことによる生産性について、考察します。 言語仕様、エコシステム、コミュニティによる生産性向上 生産性は可視化が難しいです。 そのため、本トピックではわかりやすく…

Rustで普通にプログラミングするだけでMISRA-Cのルールを90%満足できる

はじめに 2019/2/10追記 記事を書いてから気づいたのですが、正確には、Rustのアトリビュートをいくつか設定すれば、MISRA-Cのルールを90%満足できるでした。 私はMISRA-Cのコーディング規約でプログラミングしたことがないため、内容に誤りがありかもしれま…

組込みRust考察①~効率良く安全な組込み開発をしたい~

Rustの本質は、プログラムを理解する苦労を、未来から現在に移すことにある。 プログラミングRust p.120より はじめに www.rust-lang.org Rustは、とても良い言語です。 Rustを使う理由は、性能、信頼性、生産性を高めたいから、に尽きると考えています。 Ru…

RustでZephyrのアプリケーションを書く

github.com 最近、ZephyrというRTOSで遊んでいます。 新しい環境が手に入ると、Rustと結びつけたくなりますよね! ということで、ZephyrのアプリケーションをRustで書いてみます。 ズルしましたけど、hello worldは動きました。 知見として、no_stdだけど完…

The Embedded Rust Book翻訳の気づきメモ③~CI環境構築~

The Embedded Rust Bookを翻訳しています。下記から見ることができます。 Getting startedのQEMUまで、翻訳完了しています。 導入 - The Embedded Rust Book お仕事でもRustをやりたいな、と考えて、組込みでRustを広めるために翻訳を行っています。 翻訳を…

エミュレータ開発日記 in Rust~ELFローダ編①~

ここ半年ほど、RustでCPUエミュレータを書いています。 今更ですが、これも記録に残していこうと思います。 誰かの役に立つかもしれないですし。 今は、ELFローダを作っています。 これまでは、objcopyコマンドでraw binaryを作成し、特定アドレスにマッピン…