2015年12月7日月曜日

インデックス検索、止めました。

巷で言われているように、Windowsでのインデックス検索機能は確かにインデックス作成に時間と負荷がかかるものの、それは一過性ものであって、機能自体はそれなりに使えるので使ってきたのですが、Windows10になってから操作性も安定性も悪くなったと思うので使うのは止めることにしました。

  • 検索できないものがある。スタートメニューに追加したショートカットなどが何故か検索されない(検索対象になっていない?)
  • 検索結果が出るまで遅い。インデックスを作成しているのならもっと早く出てほしい。いや、Windows8まではもっと早く出ていた。
  • インデックス作成は完了しているのに、なぜか「検索結果は正確ではない可能性があります」という表示が出る。そんな言い訳がなぜ必要なのか?
  • PC内検索と、Web検索と統合されて、同時に検索されているようだが、そんなことは必要としていない。PC内にあるはずだと思って検索する、あるいは、Web上の情報を検索する、そう区別して使いたい。
  • スタートメニューに統合したのは良くなかったのでは?
    検索結果が出るまでに時間がかかりそうだから他のことをしようとすると、スタートメニューが閉じて検索が打ち切られてしまう。
  • 短い検索ワードで検索すると、大量のファイルがヒットするが、そこから目的のファイルを探すのが難しいときがある。また、検索結果から更に絞り込むことができない(知らないだけ?)。
  • インデックス検索サービスがエラーで落ちることが多くなった。エラーで落ちるとインデックス検索のやり直しになってしまい、またしばらく検索できない期間が出る。
    サービスのエラーはWindows8のころでもときどき発生していたようだけど、Windows10になってからは頻繁に起きるようになった。
  • 検索対象ドライブのファイル数はそんなに増えていないはずなのだけれど、なぜかインデックスデータベースファイルのサイズが大きくなったような・・・(以前3~4GByte。最近は8GByte超)
特に、インデックス検索サービスのエラーが使うのを止めることにした最大の理由。たびたび発生していては使いものにならないですから。

確かに、ファイルの中身までインデックス化して検索してくれる機能は便利と言えば便利なのだけれど、↑に書いたように短いキーワードで検索したときに必要以上に大量のファイルがヒットすると、目的のファイルが探しにくい/見つけられないときがあります。
実際のところ、ファイルの中身ではなく、ファイル名で検索したいことの方が多いので、私にとってこれは過剰な機能であることにようやく気が付きました。

というわけで、インデックス検索に代わる検索が必要になりました。ファイル名だけで検索ができるという意味では、Everythingかなぁと思っていたら、UltraSearchというフリーソフトもあることを知りました。こちらはEverythingと違い常駐しないし、その都度MFTをスキャンする方式という点が気に入りました。検索速度は気になりましたけど、SSDにいれたシステムドライブ+データ(約250GB)を検索するだけなら数秒程度なので全然問題ありませんでした。しばらくは、これを使ってみることにしました。

2015年12月5日土曜日

BeagleBone BlackをCCSでJTAGデバッグ!

BeagleBone BlackをCCS上でJTAGデバッグできるようにしてみたけれど、またすぐに忘れると思うので備忘録として残すことにしました。


  • JTAG信号は、BBBの裏側P2コネクタにある。JTAGヘッダは、Samtec FTR-110-03-G-D-LC-06が使え、Digikeyで買える
  • JTAGエミュレータは、XDS100v2を使用。
  • JTAG信号の接続は、こちら(http://elinux.org/BeagleBoardJTAG)この絵(http://elinux.org/File:Ti_arm_jtag.jpg)が分かりやすいと思う。絵の"20-pin TI header"がBBB側のピン配置で、真ん中の"14-pin TI header"(いわゆる、"Compact TI header")がXDS100v2側のピン配置。この1~14番ピンをそのままストレートに繋げば良い。BBB側の15~20ピンは繋がなくても問題なかった。
つぎに、CCS側の設定。 
  • まずデバッガコンフィグレーションファイル(.ccxml)を作る。
    名前は適当にbbb.ccxmlとかで作成して、下記のように設定する。下記以外の設定についてはよくわからなかった。デフォルトのままでいいのではないかと思われる。
    なお、gelファイルについては、StarterWareにあるものをそのまま使用できた。



  • 次にDebug Configurrationの設定を行う。ここが一番苦労したところ。

    購入したBBBのRev.Cは、電源を投入するとすぐにu-boot~Linuxが起動してしまう。古いリビジョンのものは、SDカードを抜いてBBBのS2ボタンを押しながら起動すると、内蔵eMMCからのu-bootプロセスをキャンセルできたようだけど、Rev.Cは有無を言わせず起動してしまう。そのせいか、u-boot起動orLinuxカーネル起動後にCCSでデバッガ接続をしようとしても、次のようなエラーが表示されて接続できなかった。

    CortxA8: GEL: Error while executing OnTargetConnect(): Target failed to read 0x44E10040 at (*((unsigned int *) (0x44E10000+0x40))>>22) [beagleboneblack.gel:366] at GetInputClockFrequency() [beagleboneblack.gel:437] at ARM_OPP100_Config() [beagleboneblack.gel:357] at AM335x_BeagleBlack_Initialization() [beagleboneblack.gel:343] at OnTargetConnect() .
    CortxA8: Trouble Writing Memory Block at 0x44e35048 on Page 0 of Length 0x4: (Error -1065 @ 0x3D5A) Unable to access device memory. Verify that the memory address is in valid memory. If error persists, confirm configuration, power-cycle board, and/or try more reliable JTAG settings (e.g. lower TCLK). (Emulation package 5.1.641.0) 

    原因はよくわからないが、u-bootまたはLinuxがMMUを設定してしまい、JTAGデバッガと言えどレジスタ関係へのアクセスが禁止されてしまっているのが原因ではないかと。

    これを回避する方法が下記の設定。要点は、デバッガ接続時ターゲットをリセットさせるのだけれど、Cortex-A8だけでなく、CS_DAP_DebugSSとIcdPick_D_0もリセットするところ。




これで、CCS上でF11を押すことで、いつでもデバッガを起動できるようになった。