2019-02-01から1ヶ月間の記事一覧

nRF52840 DKで遊ぼう①~Getting started~

はじめに 今まで、nRF52840 USB Dongleで遊んでいましたが、外付けJ-Linkコネクタがないとデバッグできなかったり、Nordicから配布されているサンプルが少なかったり、とお試しで色々動かすのに不都合でした。 www.nordicsemi.com ということで、開発キット…

Zephyr×Rustのインテグレーションにチャレンジ!②~アプリとして組み込みたかった~

はじめに Rustプロジェクトを直接、Zephyrアプリケーションとしてインテグレーションしたいです。 が、私には無理でした! app boilerplate Zephyrのアプリケーション作成では、boilerplateの利用がおすすめされています。 |> zephyr/cmake/app/boilerplate.…

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

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

RustはHeartbleedを防げたのか?

はじめに ja.wikipedia.org 2014年に、「OpenSSL」にHeartbleedという脆弱性が見つかり、話題になっていました。 この脆弱性は、典型的なメモリ操作に関するバグであったため、Rustであれば発生しなかったのではないか?という観点で調べていると、過去に同…

「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内で参照しているコードは、下記のレポジ…

nRF5 SDK for Meshで学ぶBluetooth mesh②~light_switch example概要~

www.nordicsemi.com 実装を見てみないと、どういうものなのかよくわからないので、NordicのSDKを解析しながら、どういうものか理解していきます。 今回は、SDKの大枠とlight_switch exampleの概要を理解していきます。 README なにはともあれ、READMEです。 …

nRF5 SDK for Meshで学ぶBluetooth mesh①~プロトコル概要~

www.nordicsemi.com 実装を見てみないと、どういうものなのかよくわからないので、NordicのSDKを解析しながら、どういうものか理解していきます。 はじめに Bluetooth meshは、2017年夏に採用された新しい規格です。Bluetooth Low Energyの技術を応用して、…

Zephyrのecho_serverサンプルを理解する

echo_server github.com Zephyrのecho_serverサンプルを解析し、Zephyrでのネットワークアプリケーション作成方法の理解を目指します。 一通り見てみると、割と普通のTCPサーバアプリケーションでした。 configs 重要そうなkernel configを確認します。 |> p…

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

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

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

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

nRF52840 CryptoCell 310を使った乱数生成サンプルコードの解析

CryptoCell 310ソフトウェアスタックを理解する目的で、コードが簡単そうだった乱数生成サンプルを解析します。 CryptoCell 310 cc310ブロック図 nRF52840のProduct Specificationによると、CryptoCell 310は、複数の暗号化アクセラレータを内包するペリフ…