Bicycleこの広告は、90日以上更新していないブログに表示しています。Qiitaの16日目の記事です。昨年はEV3RTとC++でETロボコンに参加していましたが、今年はRustをEV3RTで動作させる実験をしたので、その話を書きます。言語使用として保証するC/C++に代わるシステムプログラミングに適したプログラミング言語」を目指しています。WikipediaRustはコンパイル基盤にLLVMを用いており、EV3のCPU(ARM)に対応しています。後述するアプローチで、C言語の関数と同様にEV3RT上で実行することができます。個人的に、以下に示すRustの長所は、ETロボコンに適用するにあたり非常に有用であると感じています。test)Bare-metalまたはRTOS上で動作させるための標準ライブラリを使用しない設定ができる(no-std)今回の記事ではRustそのものの有用性については割愛しますが、ETロボコンでC/C++の置き換えを検討するに値すると感じています。RustをEV3RT上で実行するためのアプローチ以下の方式で、Rustで書いたコードをEV3RT上で実行することができました。前述の通り、RustはEV3のCPUであるARM向けにバイナリを出力することができます。(target=armv5te)ビルドオプションを使用することで、EV3RTのappバイナリとリンク可能なオブジェクトファイルを出力することができます。なっていますが、-Oオプションを用いるとオブジェクトファイルを出力することができます。ソースコード内で#![no_std]宣言を行うことにより、OSの機能を使用しないバイナリとなるため、EV3RTとリンクさせて動作させることができます。標準ライブラリーの不使用エントリポイントFFIにより、lib.rsに以下の用に記述した関数を、C言語の関数のように呼び出させることができます。Rustのエントリポイント}この関数をEV3RTのタスクとして起動するためのapp.cfgファイルは以下の通りです。APIの呼出しFFIの機能を用いて、EV3RTが提供するセンサやモータの操作関数をRustから呼び出すことができます。以下のコードで、カラーセンサの値を読み出すことが可能です。i32;}サンプルプロジェクトのビルド以上をまとめて、EV3RTのディレクトリに放り込める形のソース一式を作成しました。github.com以下のデバイスについて、動作検証を行いました。含まれるファイルを、上記リポジトリのファイルで置き換えてください。あとはETロボコン参加者の皆さんにはお馴染みのコマンドでビルドできます。app=rust-sampleデデーン上記のリポジトリのソースファイルでは、以下のデバイスを検証した際のコードを含めています。Battery)本記事の検証は以下の環境で実施しました。2018-12-02)最後にこの記事を読んで、少しでもRustに興味を持ってもらえればと思います。それでは、来年ETロボコンに参加される皆さん、どうかご安全に。WindowsでPDFファイルからベクタ画像を取得する富士五湖巡りライド月別アーカイブはてなブログをはじめよう!tk-rさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。