2019-01-01から1年間の記事一覧
はじめに nRF5 SDK for MeshののDevice Firmware Update (DFU) サンプルを動かしてみます。 このサンプルでは、Mesh経由でfirmwareを更新します。 www.nordicsemi.com IoT時代の組込みデバイスでは、firmware更新はできて当然ですからね! 動作確認 実際の手…
はじめに nRF5 SDK for MeshのExampleをいくつか試してきましたが、ZephyrのBluetooth Mesh Sampleも試してみます。 Mesh OnOff Model 単純なGenericOnOffを試します。 |> zephyr/samples/boards/nrf52/mesh/onoff-app docs.zephyrproject.org あっさりビル…
はじめに nRF5 SDK for MeshのSerial exampleを試します。 |> nRF5-SDK-for-Mesh/examples/serial www.nordicsemi.com PyACI 本アプリケーションをテストするためには、Pythonのインタラクティブアプリケーションが必要です。 下記の手順に沿って、インスト…
はじめに Bluetooth Meshを理解するために、nRF5 SDK for Meshでサンプルを動かしながら、動作を解析していきます。 tomo-wait-for-it-yuki.hatenablog.com 前回の続きです。今回は、ソースコードをより詳細に解析していきます。 解析対象は、nRF5 SDK for M…
はじめに Bluetooth Meshを理解するために、nRF5 SDK for Meshでサンプルを動かしながら、動作を解析していきます。 tomo-wait-for-it-yuki.hatenablog.com 前回、2台のnRF52840 DKを使って、Bluetooth Meshのlight switch demoを動かすことに成功しました。…
はじめに tomo-wait-for-it-yuki.hatenablog.com 少し間が空きましたが、前回の続きです。 2台のnRF52840 DKが手に入ったので、nRF5 SDK for Meshのlight switch サンプルを動かします。 今回は、nRF52840 DKを2台と、Android端末を1台、利用します。Android…
はじめに プログラミングする上で一刻も早くデバッグ環境を整えねばなりません。 GDBで、nRF52840 DKのプログラムをデバッグする方法を確立します。 下記Nordic DevZoneの投稿を参考にしました。 devzone.nordicsemi.com 前回記事で行った環境構築が完了して…
はじめに 今まで、nRF52840 USB Dongleで遊んでいましたが、外付けJ-Linkコネクタがないとデバッグできなかったり、Nordicから配布されているサンプルが少なかったり、とお試しで色々動かすのに不都合でした。 www.nordicsemi.com ということで、開発キット…
はじめに Rustプロジェクトを直接、Zephyrアプリケーションとしてインテグレーションしたいです。 が、私には無理でした! app boilerplate Zephyrのアプリケーション作成では、boilerplateの利用がおすすめされています。 |> zephyr/cmake/app/boilerplate.…
はじめに Zephyrで本格的にRustアプリケーションを作る環境を構築していきます。 ソースコードはこちらにあります。 github.com tomo-wait-for-it-yuki.hatenablog.com 前回は、手動でかつ強引にRustを組み込んだので、今回はZephyrのビルドプロセス内で、Ru…
はじめに ja.wikipedia.org 2014年に、「OpenSSL」にHeartbleedという脆弱性が見つかり、話題になっていました。 この脆弱性は、典型的なメモリ操作に関するバグであったため、Rustであれば発生しなかったのではないか?という観点で調べていると、過去に同…
The Challenge of Using C in Safety-Critical Applicationsというwhite paperを雑に読んでみます。 このwhite paperは、C言語でsafety-criticalなシステムを作ることが、いかに難しいかを述べています。 white paper内で参照しているコードは、下記のレポジ…
www.nordicsemi.com 実装を見てみないと、どういうものなのかよくわからないので、NordicのSDKを解析しながら、どういうものか理解していきます。 今回は、SDKの大枠とlight_switch exampleの概要を理解していきます。 README なにはともあれ、READMEです。 …
www.nordicsemi.com 実装を見てみないと、どういうものなのかよくわからないので、NordicのSDKを解析しながら、どういうものか理解していきます。 はじめに Bluetooth meshは、2017年夏に採用された新しい規格です。Bluetooth Low Energyの技術を応用して、…
echo_server github.com Zephyrのecho_serverサンプルを解析し、Zephyrでのネットワークアプリケーション作成方法の理解を目指します。 一通り見てみると、割と普通のTCPサーバアプリケーションでした。 configs 重要そうなkernel configを確認します。 |> p…
はじめに tomo-wait-for-it-yuki.hatenablog.com 前回の続きです。 今回は、Rustを使うことによる生産性について、考察します。 言語仕様、エコシステム、コミュニティによる生産性向上 生産性は可視化が難しいです。 そのため、本トピックではわかりやすく…
はじめに 2019/2/10追記 記事を書いてから気づいたのですが、正確には、Rustのアトリビュートをいくつか設定すれば、MISRA-Cのルールを90%満足できるでした。 私はMISRA-Cのコーディング規約でプログラミングしたことがないため、内容に誤りがありかもしれま…
CryptoCell 310ソフトウェアスタックを理解する目的で、コードが簡単そうだった乱数生成サンプルを解析します。 CryptoCell 310 cc310ブロック図 nRF52840のProduct Specificationによると、CryptoCell 310は、複数の暗号化アクセラレータを内包するペリフ…
Rustの本質は、プログラムを理解する苦労を、未来から現在に移すことにある。 プログラミングRust p.120より はじめに www.rust-lang.org Rustは、とても良い言語です。 Rustを使う理由は、性能、信頼性、生産性を高めたいから、に尽きると考えています。 Ru…
github.com 最近、ZephyrというRTOSで遊んでいます。 新しい環境が手に入ると、Rustと結びつけたくなりますよね! ということで、ZephyrのアプリケーションをRustで書いてみます。 ズルしましたけど、hello worldは動きました。 知見として、no_stdだけど完…
www.mouser.jp nRF52840 Dongle (pca10059)というNordicのボードに、Zephyrを乗せて遊んでいます。 Zephyrのリンカスクリプトがおかしいらしく、うまく動作しなかったのですが、修正方法まで含めて動かす方法が判明したので、まとめます。 Zephyr blinky sam…
The Embedded Rust Bookを翻訳しています。下記から見ることができます。 Getting startedのQEMUまで、翻訳完了しています。 導入 - The Embedded Rust Book お仕事でもRustをやりたいな、と考えて、組込みでRustを広めるために翻訳を行っています。 翻訳を…
Getting started/QEMUページの翻訳が完了しました。下記から見ることができます。 導入 - The Embedded Rust Book お仕事でもRustをやりたいな、と考えて、組込みでRustを広めるために翻訳を行っています。 翻訳を進める中で、技術的にも英語的にも、学びが…
ここ半年ほど、RustでCPUエミュレータを書いています。 今更ですが、これも記録に残していこうと思います。 誰かの役に立つかもしれないですし。 今は、ELFローダを作っています。 これまでは、objcopyコマンドでraw binaryを作成し、特定アドレスにマッピン…
Introduction - The Embedded Rust Book お仕事でもRustをやりたいな、と考えて、組込みでRustを広めるために翻訳を行っています。 翻訳を進める中で、技術的にも英語的にも、学びがあるので、それを綴っていきます。 github.com 一応今の状況としては、Intr…
明けましておめでとうございます。 新年新たな気持ちで、今年の目標を書いておこうと思います。 2018年の振り返り 前半は、テスト駆動開発やC++、チーム全体のレベルを上げる活動に力を入れていました。 反面、後半は、低レイヤへの情熱を取り戻し、自分だけ…