2015/08/04

[nrf52][nfc]NFC Pairingサンプルを動かす (1)

仕事が忙しいとか、税金が取られてしまうとか、そんな鬱鬱したことは開発して忘れてしまえ!
ということで、久々にnRF52832のPreview DKを動かすことにした。
nRF52 SDK v0.9.1がリリースされて結構経ったのだが、まだ触っていなかったのだ。

v0.9.1の特長は、なんといってもNFCサポート
Errataに、NFCがどうのこうの書いてあったから使えないかも、と心配していたのだが、とりあえずペアリングのサンプルがあるから動かせるようだ。
まずは、サンプルを動かしてみよう。

こんな名前のが、サンプルだ。
examples\ble_peripheral\experimental_ble_app_hrs_pairing_nfc

とりあえず、Keilでビルドして焼く。
だが、BLEスニファに何も出てこない。
うむむ・・・これは・・・。
Android端末を、nRF52のNFCアンテナに近づけると・・・Advertisingが始まった!
NXP TagInfoアプリで見ると、Type2ということなので、情報とあってる。
NDEFとして見えていて、データもWiFi接続させようとしたときのに似ていた。

では、と普通にAndroidと接触させると、ペアリングしてよいか確認するダイアログが出てきた。
だけど、うちのNexus5ではうまくペアリングできなさそうだった。。。
たしかに、Galaxy S6でしかテストしてないとあるが、もうちょっと動いてもよさそうな。

OOBのParingのシーケンスを確認しないといけないが、NFCは最初しか関係してなかったように思う。
だとしたら、「ペアリングしよう!」と出てきた時点でNFCの役割は終わっているはずだ。

でも、自信がないので、そこらへんから調べていくことにしよう。
こうやって、アプリの開発とかよりも、内側の方に入り込んでいってしまうんだよなぁ。

2015/08/02

[nrf52]Cortex-M4って、どういうものだろう?

nRF52832は、Cortex-M4が載っている。

nRF51822はCortex-M0だった。
私のイメージとしては、Cortex-M3から命令数などを削ったものだ。
BLEが使えればいいや、と思って、あまり調べてないのだな。
そのせいか、あまり思い入れがないのだよなぁ。

それではもったいないので、nRF52832はまだあまり使っていないから、まずはCortex-M4ってものを調べて、もう少し身近に感じられるようにしておこう。


まずは、本家ARMのページを見よう。
http://www.arm.com/ja/products/processors/cortex-m/cortex-m4-processor.php

デジタル信号制御向けらしい。
幅が広いな、デジタル信号って。
無線で飛び交ってる信号も、ある程度はデジタル信号だし、音声だってデジタル化すればデジタル信号だ。
画像だって、2次元のデジタル信号と見なせる。
ああ、なんでもかんでもデジタル信号なのだよ。

Cortex-M4のブロック図が載っていた。

http://www.arm.com/ja/assets/images/processor/Cortex-M4-chip-diagram-LG.png

これを見ると、デジタル信号処理用の機能があるというよりも、命令としてデジタル信号処理で使うものが増えている、ということなのだろう。
Intelのチップも、そういう時代があったよなぁ。
1回の命令で行列計算をするのが得意なSIMD命令とか。

 

こちらは、NXPのページ。
http://www.nxp-lpc.com/lpc_micon/

一番下にCortex-M4が載っている。
Cortex-M4Fのことも書いてあり、M4Fは浮動小数演算ユニットが載ったものとのこと。
整数演算だけで除ければF無し、浮動小数ありならF有り、というところか。

 

ARM Partner Successというサイトがあった。
インスケイプ株式会社、という会社なのかな?
http://www.aps-web.jp/academy/cortex-m/01/g.html

表になっていてわかりやすい。
M3やM4は除算器を持ってるんだねぇ。


そんなわけで、nRF52にも信号処理をさせてあげたいところだ。
とはいえ、「信号処理ユニット」みたいなものがあるわけじゃないので、コードの書き方かコンパイラの機能で対応しないと意味がないと思う。

そういえば、Interface誌にCortex-M4で信号処理する連載が載っていたよな、と思って読み返してみた。
近くにあった2015年4月号では、FFTをやっている。
一部のソースファイルが載っているが、特殊な命令を使っている感じはしない。
ただ、C++でcomplexクラスを使っていたり、その要素がfloatなので、M4Fの浮動小数演算ユニットは使っているだろうし、もしかするとcomplexクラスの中ではすごいことをやってるのかもしれない。

こういう「コンパイラが賢い」というものは、なんとなくGCCなんかは不利で、メーカーが出してるコンパイラが有利な気がしてしまう。
http://stackoverflow.com/questions/16768235/cortex-m4-gcc-float-behavior
FPUの有無でコンパイルオプションが変わってくるけど、対応はしているようですな。

[win10]見栄えをいくつか載せる

うちのWindows10だけかどうか知らないが、エクスプローラのツリービューに表示されるアイコンが、欠けたように見える。

image

ツリーのルートはちゃんと表示されているが、ノードに当たる部分が欠けているのだ。
エクスプローラを立ち上げてから、表示が確定するまでの一瞬はちゃんと出ているので、その上に何かが載っているのだろうと思うけど、それが何かわからない。

 

あと、デフォルトのフォントがYuなんとかというのになったらしい。
私はMS Pゴシック好きなので、フォントを変更するツールで変えてみた。
デスクトップなどのだいたいは変わってくれるのだが、コンテキストメニューのフォントは変わってくれないようだ。

image

まあ、そんなに困るものでもないのだがね。

2015/08/01

[win10]あまり理解せずに再インストールした話

おとといだったか、インストールしたばかりのWindows10 Proだが、再インストールする羽目になった。
最初にいっておくと、これは私が悪い。
だから、Windows10が原因というわけでもなく、これ以降に出てくる"Ribbon Disabler"が悪いわけでもない。

では、経緯を話そう。

Windows8.1を、既存の設定などを残したままWindows10にアップグレードできた。
特に動きに問題はないのだが、エクスプローラ(IEじゃなくて、ファイルを見る方)のツリービューで、アイコンが欠けたように見えるのだ。
よくよく見ると左下から正方形に白い四角が載っているようにも見える。
これは、オーバーレイアイコンではなかろうか?

前のWindows8.1ではClassicShellをインストールしていたのだが、もう1つ似た部類のアプリを入れていた。
それが「Ribbon Disable」だ。
Win8をインストールして比較的すぐに入れたので記憶にないのだが、Explorerのリボンを使わないようにしてくれるアプリだったと思う。

そしてなんとなく「このRibbonDisablerをインストールしていたので、オーバーレイアイコンがおかしくなったのでは?」と思ったのだ。
まあ、軽い気持ちだったことは書いておこう。
Win8.1のときに解凍したままだったRibbonDisablerを起動して、設定を元に戻すと・・・Explorerが起動しなくなった。

 

現象としては、ログイン画面は出てきて、パスワードなどの入力もできるのだが、正しいパスワードを入力してログインが進んでいっても、画面が黒いままで何も出てこなくなった(画面が黒いのは、壁紙が黒だったせいかも)。
キーボードは使えるのだが、Explorerもないので、タスクバーすら出てこない。
ただ、キーボードは使えるので、タスクマネージャの起動はできた。

できたからといって、劇的に変わるわけではない。
ただ、新しいタスクを起動する画面は出てくるので、そこにフルパスを突っ込めばアプリが起動する。


そうやって、別のファイラを起動させると、ExplorerFrame.DLLが見つからない、みたいなことを言ってくる。
検索してみると、Windowsのテーマ的な動きを変えるのにExplorerFrameがどうのこうの、という記事が出てきた。
ということは、RibbonDisablerもExplorerFrame.DLLを置き換えるなりパッチを当てるなりするんじゃなかろうか?
そして、私が今回やった「RibbonDisablerの動作を元に戻す」は、Win8.1のExplorerFrame.DLLに当てていたと想定して元に戻そうとしているが、実は私がWin10にアップグレードしたことでシナリオが崩れたのではないだろうか。

そんなわけで、管理者権限でコマンドプロンプトを立ち上げ、Windows\System32からExplorerFrame.DLLを削除(実際は別の場所に移動)し、DVDに焼いていたWin10のインストールを再度行った。

インストールには最終的には失敗したというメッセージが出たが、とにかくExplorerが起動するようになった。
やれやれだぜ・・・。

こういう風に、よくわかってないのにあれこれやると失敗する、というよい例だった。
でも、こうやって失敗しないとわからないことも多いしね。

2015/07/30

[win10]T61にWindows10 Proを入れた

まあ、こういうのは早めがよかろう、ということで、うちのThinkPad T61にWindows10 Proを入れた。

初日は、ずっとマシンを立ち上げておけばダウンロードが始まるかも、と待ってみたのだが、だめだった。
だめだったので忘れようとしたのだが、窓の杜に記事があった。
サイトからダウンロードできるし、DVDにも焼けるとのこと。

ツールをダウンロードして立ち上げると、まあ、記事に書いてあるように進んでいく。
私はDVDを作りたかったので進めていくと、32bit版か、64bit版か、あるいは両方か、という選択が出てきた。
まるで金の斧の罠のようだが、うちには32bitも64bitもマシンがあるので、両方を選んだ。

無事、ISOファイルはできたのだが・・・サイズが大きすぎてDVDに焼けず・・・。
やはり罠だったか・・・。
なお、USBメモリでもやれるそうなので、両方を選びたい人はUSBメモリにするとよいかも。
うちのマシンはUSBメモリで起動できるかどうかわからんし、なによりUSBメモリがそんなにないのだ。

作っている間、念のためにT61のバックアップを取っていた。
Windows8.1が入っていたのだが、あまり開発用で使っていないので、とりあえずバックアップだけした感じだ。
OSに付いていたバックアップ機能を使った(名前が「履歴のなんとか」でわかりづらい)。
バックアップは別HDDに取ったのだが、回復ディスクも作っておきたい。
で、Windows8.1はこれがUSBメモリだけだと・・・。
サイズは小さくてよいだろうと、私が最初に買った128MBのUSBメモリを挿したのだが、512MB以上必要とか何とかで、結局USBメモリをここで1つ消費することになった。
なんだよー。
普段はParagonの無料版バックアップを使っているのだが、そっちにすればよかったか。

 

T61への載せ替えは、特に何もなくできた。
ほぼそのまま残っている(CtrlキーとCapsLockキーの入替は戻されていた)。
ClassicShellを入れていたためか、違いがほとんどわからんかった。
ゴミ箱が四角くなったな、とか、タスクバーの左下にアイコンが2つくらい出てるな、とか。
それらのアイコンは非表示にできるので、そうすると、Windows8.1と見分けが付かないくらいだ。
そうそう、T61には指紋でロック解除する機能があるのだけど、それもそのまま動いている。

前も書いたが、Windows10からはストアアプリもウィンドウで動くようだ。
ただ、それはTrackPointが動かなかった。
設定アプリなんかもストアアプリになったっぽいから、ちょっと嫌だなあ。
(TrackPointの設定でいけるかもしれんが、まあ追々でいいや)

 

メインマシンには、まだまだ先となるだろう。
1年間は無償でアップグレードできるらしいので、まあまだよかろう。