YU2TA7KA's BLOG ~take one step at a time~

派生開発、組み込み開発周りのこと。

IT-プログラミング言語-Rust

【組込みRust】hifumiキーボードをRaspberry Pi PicoとRustで動かす

はじめに hifumiキーボードをRaspberry Pi PicoとRustで動かしました。 やったこと ピン配 PicoのIOマップとhifumiキーボードの回路図を見比べて、ピン割当をして、配線をしました。 pico ProMicro*1 I/O種別 GP18 D4 input GP19 C6 input GP12 F4 output GP…

【組込みRust】KOBA789さんの「自作キーボードって組込みRustの入門にちょうどいいらしい」動画が最高だった

はじめに 動画の概要 技術解説 トラブルシューティング 楽しい 気づき おわりに 動画内で参照していた情報 はじめに RustでキーボードFWを書く参考に「自作キーボードって組込みRustの入門にちょうどいいらしい」動画を視聴しました。いろいろなエッセンスが…

【組込みRust】組込みRustで2キーのキーボードFWを実装する(模倣)

はじめに HW 部品 配線 FW ソースコード おわりに はじめに RustでキーボードFWを実装するために、RustyKeysを参考(ほぼコピペ)にさせてもらうことにしました。ハードウェア(HW)は手持ちにあるものでやりくりするということで2キーのキーボードとして実装し…

【組込みRust】組込みRustのデバッグアダプタ環境を構築する

はじめに 手順 1. HWの準備 2. 必要なパッケージのインストール 3. デバッグアダプタ用PicoのFW更新 4. ターゲット用PicoのFW更新(Hello World) 詰まったところ デバッグアダプタ用のFWを書いていなかった 動作手順が少し複雑 おわりに 追記(2022年8月14日) …

【組込みRust】RustでRaspberry Pi PicoをLチカする

はじめに やったこと クロスビルド環境とツール準備*1 テンプレートのプロジェクト利用 ランナーの修正 プログラムの書き込み 実行結果 確認したこと おわりに はじめに 先日自作キーボードに入門しました。その次として、Raspberry Pi Pico向けにRustでキー…

組込みRustの情報まとめ 2022年5月時点

はじめに 書籍 基礎から学ぶ 組込みRust 実践Rustプログラミング入門 オンラインドキュメント The Embedded Rust Book (和訳) Github Rust Embedded(英語) Github Awesome Embedded Rust(英語) はじめに 組込みRustに関連する情報がいろいろ散らばっているよ…

【組込みRust】RustのLチカコードを解読する

はじめに ソースコード 解読 Attributes #![deny(unsafe_code)] #![no_main] #![no_std] #[entry] Crates panic_halt cortex_m cortex_m_rt stm32f4xx_hal stm32f4xx_hal::prelude::* crate::hal::{stm32}; main() main() -> ! { loop {} } Peripheralsの取…

【組込みRust】RustでST Nucleo Board STM32F411RET6をLチカさせる

はじめに 概要 ST Nucleo Board STM32F411RET6とは 開発環境の構築 Rustのインストール Rustのクレートの追加 クロスコンパイル環境の構築 Lチカプロジェクトの構築 Lチカコードのコピペ examples/delay-blinky.rs Cargo.toml .cargo/config memory.x Lチカ…

RustでJenkinsのXFDを試作してみた on Raspberry Pi3 B+

はじめに XFDとは? 作ったもの 構成 環境 概要説明 わかったこと XFDの試作にRaspberry Piは便利 Rustのcrateが優秀なことを実感 Raspberry Pi3でRustの開発はしんどい やってみたいこと リファクタリング 監視端末とフィードバックデバイスの分離 フィード…

Rustのアプリケーション開発入門~逆ポーランド記法計算機を通して~

はじめに やったこと コマンドライン引数の処理 計算ロジックの実装 ユニットテストの記述 エラーハンドリング 気づいたこと おわりに はじめに 実践Rustプログラミング入門のChapter4を写経しました。その感想です。ソースコードは下記githubにあります*1。…

Rustの関数ポインタを配列で扱う

関数ポインタの利用 fn double(n: i32) -> i32 { n + n } fn abs(n: i32) -> i32 { if n >= 0 { n } else { -n } } fn main() { // doubleの関数ポインタをfへ束縛 let mut f: fn(i32) -> i32 = double; assert_eq!(f(-42), -84); // absの関数ポインタをfへ…

ダイクストラのアルゴリズムをRustで実装

はじめに BinaryHeapについて 実装 隣接行列を用いた実装 優先度付きキューを用いた実装 参考 はじめに 最短経路を求めるアルゴリズムとして有名なダイクストラ法をRustで実装しました。ダイクストラ法は隣接行列を用いるとO(|V|^2)ですが、優先度付きキュー…

ABC015_C 高橋くんのバグ探しで学ぶstatic mutの危険性[Rust]

要約 問題概要 解法 危険な実装(ダメ絶対) 構造体を使った安全なコード*1 static mut を使った危険なコード 参考 要約 DFS(深さ優先探索)の勉強としてAtCoder Beginner Contest 015 C問題をピックアップ。 グローバル変数を使った解答例を模倣してstatic…

rustlings 🦀❤️やってみた

rustlingsとは Rustを実際に読み書きしながら学んでいくエクササイズツールです。具体的には、rustlingsを起動するとソースコードのエラーが表示され、そのエラーを解消しコンパイルに成功させることが目標になります。そして、その過程でRustを学んでいきま…

Rustでアラビア数字をローマ数字に変換する

はじめに 問題 ローマ数字の表記法の特徴 アルゴリズム 実装 もう少しやりたいこと 勉強になったこと まだよくわかっていないこと 参考 おわりに はじめに 突然ですが、画像は何巻の美しいシャナかご存知でしょうか? ローマ数字で表記されている通り19巻で…

MIMEのパースでハマった話

はじめに ソースコード全文をコピペできていなかった 利用すべきcrateバージョンがよくわかっていない おわりに ソースコード CrateのバージョンNG時のエラーメッセージ はじめに Rust CookbookのParse the MIME type of a HTTP responseでハマったので、そ…

Rust入門した感想

はじめに やったこと 1.実践Rust入門 1部読了 特徴(これが全てではない) 型 所有権システム(所有権、借用、ライフタイム) トレイト 2部 2.パーセプトロンの実装 3.FizzBuzz実装 4.Rust.Tokyo聴講 展望 はじめに 夏頃から部内メンバの発案に乗っからせて…

Raspberry PiにRustをインストールしてHelloWorldする

夏休みに始める新しいこととして、いろいろあってRustが選ばれました。参考書は実践Rust入門[言語仕様から開発手法まで]です。参考書の1章を読んだのですが、Rustの特徴を詳細に解説してくれており、これからがワクワクしてきました。C,C++と同レベルの速度…