Nordic UART送信能力調査2: nRF52840 と Android端末間編

前回nRF52840 から Nordic UART で 約2Kbyteのデータを定期送信し、送信能力を調べてみました。公称2Mbpsのところが 1.7kbyteしか送信できないのはナゼでしょうか?

前回は Android 側で受信側で確認しました。送信するNordic側ではどうでしょうか? Nordicで計測用タイマを追加して経過時間を、デバッグトレースで出力してみます。送信側から時間が伸びているように見えます。

Nordic掲示板をみてみる

送信側になにかありそうなので、ヒントがないか Nordic 掲示板:DevZone を見てみます。参考になる投稿がありました

オプション設定で BLE_COMMON_OPT_CONN_EVT_EXT を有効にし、#define値 NRF_SDH_BLE_GAP_EVENT_LENGTH を 320 くらいにしてみろとのこと。.h を追うとこのデフォルト値は 5 でした。このパラメータは、BTの接続チェックの周期だそうです。短ければ接続応答性が良いがデータ転送量が短くなり、長ければ接続応答性が悪いがデータ転送量が増えるという理屈の模様です。

試してみましたが微妙です。

DevZone では50kB/秒まで上がったという投稿もあれば、効果がないという投稿もあります。 BLE Long Range を使うというメーカの解説も見受けれれます。 何分、Andoird側の要素もあります。その時々で他の通信やプログラムの動作状況は異なり、リソースを占有できないことは十分に考えられます。

以降、執筆中

Windows11 24H2にUPDATEできなくなった件1

弊方の中古購入した富士通ESPRIMO Q556/R にて突然以下のような表示がでるようになりました。

Windows11 22H2 の期限迫っていることは理解しましたが、更新プログラムのチェック を押しても自動アップデートに進みません。別の Windows11のPCは、このようなことは無く、23H2 に勝手に更新されていました。 ナゼでしょう?

一先ずWindows11 22H2 のインストーラをダウンロードして実行してびっくりです。

現状を再確認します。23H2より Core i7-7700T がNGになったのでしょうか?

Windows11のCPU要件を再確認すると、Windows11 当初よりCore i7-7700 は非対応です。はてな?

あっ CPU換装したのを思い起こしました。元々はCorei 3-7100T でした。しかしコレが Windows11 の対象になっているかというと、、、

ネットを調べると、インストーラの CPU型番チェックの.dll を無効にして、インストールする方法があるようですね。業販だったので安心していたのですが、この方法で構築されたPCだったのかもしれません。これは想定外、開発環境も作り込んでいるので困った事態です。同じように困っている方もたくさんいらっしゃるんでしょうね、、、、

とはいうものの弊方も一度試してみます。appraiserrs.dll の中を空にした場合、普通に考えるとダイナミックリンク先のAPIが無いと何もカードしていないとアプリは異常終了します。Windows11のインストーラはdllを明示的ロードしてNGの場合 (LoadLibrary() APIで可能)をして、意図的にCPUチェックをスルーするロジックになっているといえます。 しかし、、、

考察するに、

  • 既にWindows11がインストールされているPCでは「appraiserrs.dll の中を空方式」 は、OS側がCPUチェックするため通用しない

とすると大型アップデート時は、毎回クリーンインストールが必要になりますね。これは大変だ。

RS232C付きの小型PCは貴重です。Win11の対象となっている core i7 8700Core i7-7700T と同じFCLGA1151ソケットと公式サイトにも記載がありますが、よく調べると前者はFCLGA1151-V2と呼ばれソケットは共通ですがピン配置は異なり、動作互換は理論上も物理的にも無いとのことです。ソケットの違いはここにまとめてあるみたいです。助かります。

よく調べると Q556/R の後継Q558/Bcore i 9世代対応、Q558/V core i 8世代対応になっていますね。まさかこれを見逃していたとは考えにくいです。Q558 を検索するとQ556もヒットしやすいですので、Win11だからQ558と勘違いしたのかもしれません。次記事に続きます。

Nordic UART転送速度調査1: nRF52840 と Android端末間編

前回nRF52840 と Android端末間で、Nordic UARTの基本的な送受信を行いました。次にどのくらい実際に通信量を流せるか試します。Bluetooth5での公称通信速度は 2Mbps です。実際にそんなに出るわけありません。昔々、有線TCP/IPでも実効転送速度は一割でシステム設計するよう叩き込まれたものです。

BTマスターハードウェアnRF52840-DK
BTマスターVersion5.4
BTマスターIDESEGGER5.6 (デバッガ有効)
BTスレーブモトローラG32, 2.4Gz x 4 coe
BTスレーブVersion5.2
BTスレーブIDEAndroidSdtio 4.0 (デバッガ有効)
IDE用PC Windows10, Core i7 3.8GHz x 8 coe

通信方向マスタ → スレーブ
通信周期3 sec
1セットの通信量2,000 byte
通信1セットのパケット分割数8回
パケットサイズ244
パケット間隔スレーブ内で BLE_NUS_EVT_TX_RDY:次送信許可 イベント発生後、即時。

シーケンス全体:

パケット間シーケンス:

スレーブ側で以下の計算を行い秒辺りの送信バイト数を画面表示する。

( 通信1セットの終了開始時刻(sec) - 通信1セットの受信開始時刻(sec) ) ÷ 通信1セットの受信Byte数

2MBpsで、1byte=10bit仮定し、200kbyte/秒すると、性能の1%しか達成していない。

少し予想はしていましたが、なぜこのような結果となるのでしょう? 引続き調査をしていきます。

横河オシロスコープDLM2024の導入memo

これまで弊方の開発では本気のオシロまでは必要ないかなと思いPCオシロ POS-4 を使用していました。一応4chで出先でも扱いやすい、日本製だし、低速のシリアル通信なら十分見れます。

しかし高速のシリアル通信やクロックの確認は難しいです。 弊方顧客先でも古巣3を除くと高性能なオシロをお持ちでない場合が多いです。

そこで横河DLM2024を導入にした覚書です。10年前くらいのモデルです。もっと古いDL1740でもフルカラーだし十分ですがフロッピーはつらいです。オプションでロジアナ、オプション無でシリアル通信のByte変換解析(少し怪しい)があります。CAN解析もできるらしいですがオプションが必要かは不明です。

購入はメーカリース会社さんのリースアップ品です。丁寧に使用されていて、近々で校正ずみ、付属品もそろっていて半年保障ありです。中古計測器屋さんやヤフオクでも同じくらいの値段だったのでこの方が効率的かと思います。

ロギングも可能なDL750 + 波形モジュール4ch でも+数万円 でしたので悩みどころでしたが、持ち運びする場合を考慮してコンパクトな方にしました。

まずプローブ未接続で起動してみます。このモデルは初期状態が波形太く光るモードです。(用途は分かりません。後で波形フォーマットを変更します。)

機器スペックを表示してみます。

イーサがあるのでネットワークを設定します。本体でUtility -> NetWork -> TCP/IP から設定します。デフォルトはDHCPなので、OFFして固定IPを設定し、ping確認します。設定を反映するには本体を再起動が必要です。

続いて波形画像を取り出すため FTP 設定を本体で行います。FTP は FFFTP を使用します。本体への接続手順は以下のとおりです。本体側デフォルトユーザ設定は anoymous (パスワードは不要) です。

ブラウザからの波形表示もサポートされていましたが、Flash Player で作られており、現在のブラウザでは使用禁止のため以下のようになります。本体でWEB表示設定はOFFしておきます。(インターネットは介さないのでHyper-Vなど仮想環境からWindows7等からなら見れるかもしれません ) Ruffleという代替えプラグインもあるようです。(今度試す)

お試しでCAN生波形をみてみます。初期状態だとなぜか波形トレースがかかっており、一旦トレースクリアをします。波形がなまっているのでレコードレングスを4ch時の最大1.25Mにします。波形フォーマットも何故か破線設定になっているので、曲線か直線に変更します。

以上で、DLM2024 の導入が完了しました。電子コントローラの開発現場でも、トリガーくらいでオシロの機能を使いこなせていない場面もよく見受けられます。そのた機能の使い方もレポートしていきたいと思います。

オシロで計測したいが手持ちオシロが無い、古すぎる、買うほど使用頻度が低い、リースも短期間だと高いなどお困りの方は計測サービスをいたします。詳しくはこちらまでご相談ください

Xperia Z4 TabletでFullバックアップを試す

セットアップ済み端末から、.ftf を再生成できればもしかすると… 気になって試してみたメモです。わかっていたことですが、root化できないとダメみたいです。

以下メニューがそれを示すのでしょうか? “Root access denid(拒否)“となりダメでした。

検索すると “Backup-TA” なるツールが見つかります。2010年代前半と古いものです。SUコマンド がないとダメでした。(しかしよくよくみると当ツールは Flash Tool に含まれているようです)

root化で検索すると “EASY Rooting Toolkit” が見つかります。これはソースコードだけでした。Android StduioNDK を追加し、make をかけます。コードが古く、#include漏れ、変数型不足、prototype宣言不足だらけでかなり修正しましたが Build できました。adb /data/local/tmp に転送し、実行しても無反応でした。(しかしよくよくみると当ツールは Flash Tool に含まれているようです)

これも実行ファイル、スクリプト、Superuser.apk 等を、adb /data/local/tmp に転送し実行するものでした。BusyBox(バイナリ結合コマンド)も転送しているので、bootバイナリにroot権限を埋込しそうです。しかし動作しますが成果は無しです。

あと実行するとウイルス検知されます。ヤバいやつです。


バックアップから .ftf 生成するには、root化が肝のようです。XDAで最新の手法を見ると、

  • boot loader をunlock
  • .ftf から .sin を展開し、boot.img を取出し。
  • Andeoid 上で、magisk のapkをインストール後、boot.img にroot権限を付与。
  • fastboot flash boot で、boot.img を書き込み。

実施するには実験用の SGP771 か SGP712 が必要ですね。