nrf52840

knurling-rs のツールお試し Get a grip on bare-metal Rust!

はじめに この記事は Rust Advent Calendar 2020 12日目の記事です。 github.com Our mission is to improve the embedded Rust experience. To achieve this, we build and improve tools and create learning materials. knurling-rs は Ferrous Systems …

Rust製組込みOSのTockを触ってみる②

はじめに 諸事情によりまとまった時間を取るのが難しいので、入門系やります。 今回は、Rust製のRTOSであるTockを触ってみます。 githubのTock organizationはこちらです。 前回はC言語で書かれたサンプルアプリケーションを動かしたので、今回はRustで書か…

Rust製組込みOSのTockを触ってみる①

はじめに 諸事情によりまとまった時間を取るのが難しいので、入門系やります。 今回は、Rust製のRTOSであるTockを触ってみます。 githubのTock organizationはこちらです。 Getting started Getting startedを参考に、何か動かしてみます。 Requirements nig…

ARM TrustZone CryptoCell 310という名称の疑問

はじめに nRF52840は、Cortex-M4Fが搭載されたSoCです。 また、CryptoCell 310という暗号化アクセラレータが搭載されています。 Nordic Documentation LibraryのCryptoCellのページを見ると、「ARM TrustZone CryptoCell 310」と書かれています。 www.nordic…

Zephyrで実行時間を計測する

はじめに Zephyrでアプリケーションを開発しており、ベンチマークが取りたくなりました。 driverが提供されているnRF52840のRTC (Real Time Counter) を使って、プログラムの実行時間を計測してみます。 最終的には、Zephyr kernelが提供しているKernel Cloc…

nRF52840 DKで遊ぼう⑦~バイナリ肥大化の謎を追う~

はじめに Zephyrのアプリケーションを作成しています。 すると、バイナリが肥大化する現象が発生したため、原因を調査しました。 結論から言うと、ライブラリを作る際、コンパイラにPIC (Position Independent Code) の無効化を指定し忘れていたことが原因で…

nRF52840 DKで遊ぼう⑥~enc28j60でエコーサーバ~

はじめに 先日、IoTSecJPTokyo Version 5のデモ用に、nRF52840 USB Dongle+enc28j60 Ether MAC+Zephyrでエコーサーバを構築しました。 同様のものをnRF52840 DKで動くように移植を行っていきます。 USB Dongleから、DKへの移植は、GPIOピンの設定変更だけ…

nRF52840 CryptoCell 310の使い方メモ①

はじめに 以前、CryptoCell 310を使ったサンプルアプリケーションを解析しました。 tomo-wait-for-it-yuki.hatenablog.com もう少し真面目に使い方を知る必要があるので、nRF5 SDKのAPIリファレンスを読んでいきます。 nRF5 SDK CryptoCell APIリファレンス…

nRF52840 DKで遊ぼう⑤~DFU over Mesh~

はじめに nRF5 SDK for MeshののDevice Firmware Update (DFU) サンプルを動かしてみます。 このサンプルでは、Mesh経由でfirmwareを更新します。 www.nordicsemi.com IoT時代の組込みデバイスでは、firmware更新はできて当然ですからね! 動作確認 実際の手…

nRF52840 DKで遊ぼう④~Zephyr Bluetooth Mesh Sample~

はじめに nRF5 SDK for MeshのExampleをいくつか試してきましたが、ZephyrのBluetooth Mesh Sampleも試してみます。 Mesh OnOff Model 単純なGenericOnOffを試します。 |> zephyr/samples/boards/nrf52/mesh/onoff-app docs.zephyrproject.org あっさりビル…

nRF52840 DKで遊ぼう③~Bluetooth Mesh Serial example~

はじめに nRF5 SDK for MeshのSerial exampleを試します。 |> nRF5-SDK-for-Mesh/examples/serial www.nordicsemi.com PyACI 本アプリケーションをテストするためには、Pythonのインタラクティブアプリケーションが必要です。 下記の手順に沿って、インスト…

nRF5 SDK for Meshで学ぶBluetooth mesh⑤~light switch demoペリフェラル制御ソース解析~

はじめに Bluetooth Meshを理解するために、nRF5 SDK for Meshでサンプルを動かしながら、動作を解析していきます。 tomo-wait-for-it-yuki.hatenablog.com 前回の続きです。今回は、ソースコードをより詳細に解析していきます。 解析対象は、nRF5 SDK for M…

nRF5 SDK for Meshで学ぶBluetooth mesh④~light switch demo doc~

はじめに Bluetooth Meshを理解するために、nRF5 SDK for Meshでサンプルを動かしながら、動作を解析していきます。 tomo-wait-for-it-yuki.hatenablog.com 前回、2台のnRF52840 DKを使って、Bluetooth Meshのlight switch demoを動かすことに成功しました。…

nRF5 SDK for Meshで学ぶBluetooth mesh③~実機動作確認~

はじめに tomo-wait-for-it-yuki.hatenablog.com 少し間が空きましたが、前回の続きです。 2台のnRF52840 DKが手に入ったので、nRF5 SDK for Meshのlight switch サンプルを動かします。 今回は、nRF52840 DKを2台と、Android端末を1台、利用します。Android…

nRF52840 DKで遊ぼう②~GDB Debug~

はじめに プログラミングする上で一刻も早くデバッグ環境を整えねばなりません。 GDBで、nRF52840 DKのプログラムをデバッグする方法を確立します。 下記Nordic DevZoneの投稿を参考にしました。 devzone.nordicsemi.com 前回記事で行った環境構築が完了して…

nRF52840 DKで遊ぼう①~Getting started~

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

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の技術を応用して、…

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

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