サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
おみそ汁
tomo-wait-for-it-yuki.hatenablog.com
このエントリは Rust Advent Calendar 2021 3 の5日目として書きました。 qiita.com はじめに みなさん組込み Rust やっていますか?はい、やっていますね。息を吸うように日常的にやっているはずです。今年はなんと組込み Rust にフィーチャーした「基礎から学ぶ組込みRust」 という書籍も出版されており、もはや組込み Rust は人類の嗜みと言っても過言ではない状況です (嘘です。 基礎から学ぶ 組込みRust 作者:中林智之,井田健太シーアンドアール研究所Amazon そんな人類の嗜みであるところの組込み Rust ですが、いざ初めて見ると std が使えない、という現実が重くのしかかってきます。core や alloc 、no_std 対応の crate をかき集めてもやりたいことがすんなりできず、歯がゆい思いをすることもしばしばあります。std:
はじめに 2021年4月20日、『基礎から学ぶ 組込みRust』(C&R研究所) を出版します。Rust の文法から組込み Rust でファームウェアを作成するところまでを、片手で持てる (多分!まだ持ったことないけど!) 1 冊の本にまとめた、喉から手が出るほど (私が) 求めていた書籍です。 先日、無事入稿を果たしたので、今の気持ちを徒然なるまま綴ったのが、このエントリです。 基礎から学ぶ 組込みRust 作者:中林 智之,井田 健太発売日: 2021/04/20メディア: 単行本(ソフトカバー) 一番始めに言いたいこととしては、今現在、「組込み Rust がプロダクションレディか?」、と問われると、「ほとんどのプロジェクトに対してそうではない」というのが私個人の見解です。セーフティクリティカルな分野では、機能安全をはじめとする認証の問題があり、そんなにおいそれとプログラミング言語変更
はじめに tomo-wait-for-it-yuki.hatenablog.com 前回の続きです。 今回は、Rustを使うことによる生産性について、考察します。 言語仕様、エコシステム、コミュニティによる生産性向上 生産性は可視化が難しいです。 そのため、本トピックではわかりやすく数値を比較するようなことは、できません。 Rustは厳格なルールをプログラマに課しますが、Rustの厳格なルールはバグを減らすことで、生産性の向上に寄与するでしょう。 Rustは、とりあえず動くものを作る時には、堅苦しい言語かもしれません。しかし、正しく動くものを作る時は、絶大な力を発揮します。 C言語はプログラマに最大限の自由を与え、その自由による責任をプログラマに負わせます。 Rustは、プログラマに義務に負わせ、その分保証を与えます。 unsafeブロックを含まないRustの関数は、コンパイルできた時点で
はじめに この記事はRust Advent Calendar 2019の17日目として書きました。 組込みRust界の神japaricさんがno-std環境でasyncを使うPoCレポジトリを公開しています。 github.com 理解できるかどうか非常に自信がありませんが、これは見てみるしかありません! 後日正式な記事が書かれるそうなので、それを待ったほうが得策かもしれません! 引用の領域超えている気がしますので、一応ライセンス表記します。 今回解説するレポジトリは、MIT license、もしくは、Apache License, Version 2.0、でライセンスされています。 目次 自分なりのまとめ README 実装を覗いてみよう 自分なりのまとめ 組込みのno-std環境で使えるasync-awaitのproof of conceptを紹介するよ (nightlyは必要だけどね
はじめに 本記事は自作OS Advent Calendar 2019の4日目として書きました。 とうとう公開されましたねZen言語! zen-lang.org 私は組込み屋さんで、OS自作を嗜んでいますが、ベアメタルでプログラミングするにあたり、Zen言語は非常に使いやすい機能を兼ね備えています。 本記事では、Zen言語でOS自作を始めるにあたり、Zen言語の便利な機能を紹介し、いくつかのターゲット環境のブートストラップを提供します。 間に合いませんでした!Cortex-Mのブートストラップだけで許して下さい!他のターゲットも順次情報公開します。 Zen言語のslackもあるので、ご興味のある方は、@LDScellまでご連絡下さい! 記事内容のうち半分程度はZen言語のフォーク元であるZig言語でも同様に使えます。 対象読者 過去に少しでも、OS自作したことがある方を想定しています。 バイ
はじめに Rustコンパイラであるrustcには組込みのlintがあります。 Rustのlintツールでは、clippyが有名ですが、rustc組込みの方もソースコードの改善に役立ちます。 7月の技術書同人誌博覧会のネタ探しの一環だったのですが、思ったより世の中の役に立ちそうだったので、ドラフトを公開します。 原稿落とさなければ、「組込み / ベアメタルRustテクニック集」的な薄い本を出す予定です。 ちなみにここに書いている内容は、全てThe rustc bookに書いてあります。 lint lintはソースコードをコンパイラより厳密なルールに則り、検査するためのツールです。 Rustコンパイラには、様々なlintルールが組み込まれています。 ソースコードをコンパイルする時、自動的にlintによる検査が行われます。 プロジェクトの運用ルールに合わせて、適切なlintルールを設定することで
自分のためだけに Embassy コードリーディングシリーズです。 nRF52840 向けの Waker を wake している実装を見ていきます。 GPIO 割り込みから wake() するのが、おそらく最も単純な実装でしょう、ということで GPIO の example を探します。 examples/nrf52840/src/bin/gpiote_port.rs 中身は下のような感じです。 Task Pool が 4 になっていて、同じタスクを複数 spawn できるようになっているようですが、そこは一旦無視しましょう。 pin.wait_for_low() を見るのが良さそうです。 #[embassy_executor::task(pool_size = 4)] async fn button_task(n: usize, mut pin: Input<'static, AnyPin
はじめに コネクトフリー株式会社ではエンジニアを募集しています。 会社のホームページが用意できるまでの間、こちらに求人情報を掲載します。 コネクトフリー株式会社は、レガシーなメモリ寄りのコンピュータシステムを刷新し、新しいCPU寄りの社会インフラ構築の先駆けになります。 「低レイヤから世界を変えたい」、「新しい低レイヤをベースにこれまでにない高レイヤなシステムを構築したい」、 「良い仕事をして良い給料をもらいたい」、という方を職種を問わず募集しています。 コンピュータ・サイエンスやプログラミングが好きなエンジニアが集まって、面白いことをしましょう! 募集職種例 コネクトフリーでは、下記職種に関わらず、世界を変えたいエンジニアを広く募集しております。 職種ごとに主な業務内容について掲載します。 主なとしている理由は、記述した内容に関わらず、面白いと思える仕事を自ら切り拓くことを期待しているた
はじめに 大体宣伝です。 でも、面白いと思うので見て行って下さい。 私事ですが、次男が産まれました。 さらに私事ですが、とうとうconnectFreeでも長男にあたるボードNET BOYが産声をあげました。 NETBOY 低レイヤから全て自作するIoTへの挑戦が始まります。 どうして全て自作するの?アホなの? アホだから、やるんだよ! 既存のものではconnectFreeの目指す社会にならないのです。 そして、プラットフォームの提供とサポートがconnectFreeのビジネスなのです。 で、connectFreeのビジネスって? 日本のITを低レイヤから支えます。 もう少し具体的には、プログラミング言語やOS、通信プロトコルというレイヤから自分たちで再構築し、そのサポートを行います。 低レイヤをしっかり支えることで、日本企業がビジネス領域に集中できるようにすることが、1つの目標です。 今、
はじめに ポエムです。 2019年2月末で前職を退職し、3月からconnectFree株式会社で働いています。 connectfree.co.jp 現職の宣伝が8割、自分が今考えていることを残す、というのが2割の記事です。 エモい文章を書くのは苦手なので、巷の転職エントリほど面白くはないです。多分。 ただ、現職でやっていることは、かなり面白いです。 前職は、日本の大手電機メーカーの子会社でした。新卒で入社してから、5年間お世話になりました。 前職のことは、現職との比較でやむを得ない場合を除き、書きません。 良い同僚に恵まれ、残業もなく、楽しく組込みソフトウェアの受託開発をしていました。 転職のきっかけ 半分冗談のつぶやきが、現職CEOの目に留まったことです。 組込みでRustが使えて、FPGAで遊んだり、LinuxやHypervisorいじりながら、定時で帰って600万くらいもらえる仕事な
はじめに 組込みRustの(勝手に主要と思っている)ドキュメント3つの和訳が、一通り完了しました。 今後は、upstream変更に対するメンテンナンスをやっていきます。 節目なので、整理しておこうと思います。 和訳も、大本になる文章があるからできるわけで、素晴らしいドキュメントを作成しているRust Embeddedチームに対して、尊敬の念に堪えません。 Rustは簡単な言語ではないので、どうしてもドキュメントが必要です。 ありがたいことに、Rustではドキュメントを書く文化が色濃いです。 今後も、Rust好きな一人として、ドキュメントの和訳や、自身の理解を解説するドキュメントを書いて行こうと思います。 (当面、大きな和訳はやらないと思いますが) 偉大な本家 The embedded Rust book Discovery The Embedonomicon 和訳 The embedded
はじめに 1つ1つは短めです。 少しでも、宣伝、フィードバック、になれば幸いです。 OS Girls booth.pm 8086やIntel SDMの紙媒体が転がっている不思議な部室で繰り広げられる女子高生たちのOS自作物語です。 物語の導入として、PCを使っていて湧いた疑問から、低レイヤに入っていくのは良いなぁ、と思いました。 OSってなんだろう、でOSの概念を説明しているのも、手を動かす一辺倒にならないように工夫されているように感じました。 次の階層でお会いしましょう、とのことですが、ringを使い切っているので、次はVMXですかね。 組込みエンジニアの教科書 組込みエンジニアの教科書 作者: 渡辺登,牧野進二出版社/メーカー: シーアンドアール研究所発売日: 2019/04/20メディア: 単行本(ソフトカバー)この商品を含むブログを見る 技術書典で先行販売していたので、入手しました
はじめに ja.wikipedia.org 2014年に、「OpenSSL」にHeartbleedという脆弱性が見つかり、話題になっていました。 この脆弱性は、典型的なメモリ操作に関するバグであったため、Rustであれば発生しなかったのではないか?という観点で調べていると、過去に同じ主張をしている文献をいくつか発見しました。 こういうのは、後からなら何とでも言える部分があるのですが、やはりRustなら発生しなかっただろうな、というのが私の見解です。 Rustでは、メモリ操作に関連する脆弱性になり得るコードの多くが、コンパイル時にチェックされます。 スライスやコレクションについては、実行時に境界チェックが入るため、最悪サービスが停止しますが、データが流出したり、バグったまま動き続けるようなことはありません。 なるべく、安全なプログラミング言語を使って、開発を進められるようにしていきたいですね
はじめに 2019/2/10追記 記事を書いてから気づいたのですが、正確には、Rustのアトリビュートをいくつか設定すれば、MISRA-Cのルールを90%満足できるでした。 私はMISRA-Cのコーディング規約でプログラミングしたことがないため、内容に誤りがありかもしれません。間違っている点があれば、ご指摘いただけるとありがたいです。 後、いつも通りですが、C言語を貶める意図は一切ありません。 昨日からtwitterで、Rustが組込みのセキュリティが重要な分野で広まると良いなぁ、という議論がありました。 その中で、車載では、やはりMISRA基準との関係が明確になること、ということが1つの基準になりそうでした。 github.com @hashaskell さんから、MISRAコーディングルールのうち、Rustコンパイラがアトリビュートの設定を含めて、保証するルールのリストを作成しているレ
Rustの本質は、プログラムを理解する苦労を、未来から現在に移すことにある。 プログラミングRust p.120より はじめに www.rust-lang.org Rustは、とても良い言語です。 Rustを使う理由は、性能、信頼性、生産性を高めたいから、に尽きると考えています。 Rustを学ぶうちに、組込み開発でRustを使うと、多くの恩恵を受けられるのではないか、と考えるようになりました。 正直、組込みが一番Rustの恩恵を受けられるのでは、くらいに思っている。— 錆ありはぐれベアメタル (@LDScell) January 13, 2019 また、Rustを学ぶことは、プログラマとしてのスキルを向上させてくれます。 プログラミングRustで一番お気に入りの文章を引用します。 Rustを使い始めてわかったのは、C/C++では長い間かけてゆっくり学んでいたような「良い書き方」を学ばないこ
Rust × RISC-Vでプログラミングをしているのですが、cargoだけで思い通りのリンクができるようになりました。 地味にやり方が見つからなかったのですが、絶対どこかには書かれていると思うんですよね。ご存知の方がいらっしゃいましたらご連絡下さい。 Rustのエコシステムでは、RISC-Vのリンカが同梱されていないため、riscv-toolchainを別途構築しているのですが、こいつをcargoのビルドプロセスで使いたいです。 今までは仕方なく、下記Makefileを用意してプロジェクトをstaticlibで作成して、cargo xbuildした後に、riscv-toolchainのリンカを呼び出していました。 $(TARGET): $(CARGO_BUILD_DIR)/$(RUST_TARGET) linker.ld Makefile $(RISCV-LD) -T linker.ld
このページを最初にブックマークしてみませんか?
『低レイヤ強くなりたい組込み屋さんのブログ』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く