USB3.0ホスト(xHCI)のチップってどんなのが市場に出ているのだろう?
ってことで、調べてみた。(2010/01/18時点の情報)
ルネサスエレクトロニクス
μPD720200 : PCIe Gen2 x 1、2ポート、
μPD720200A : μPD720200に対して消費電力低減
FLESCO LOGIC
FL1009 : PCIe Gen1 x 1、2ポート
FL1010 : PCIe Gen2 x 1、2ポート
VIA Labs
VL800 : 4ポート
チップだと、これだけ。IPだとどうなんだろう。
PLDA : ホスト、デバイス両方のIP
Arasan : 同じくホスト、デバイス両方のIP
なお、ルネサスエレクトロニクスもIPを持っているらしい。
個人でこんなこと調べてどうなるわけでもないけど、念のため。
2011年1月19日
2011年1月9日
OProfileで取得可能なイベント
先日OProfileを初めて触ったが、どのようなイベントを取得できるのか調べてみた。OProfileで取得できるイベント種別は利用しているCPUにより異なる。
詳細はOProfileのドキュメントに記載されている『Event type reference』に記載されている。また、opcontrol コマンドの --list-events オプションで確認可能(あるいは ophelp コマンドでも確認できる)。私の環境だと以下のようになった。
% opcontrol --list-events
oprofile: available events for CPU type "Intel Architectural Perfmon"
See Intel 64 and IA-32 Architectures Software Developer's Manual
Volume 3B (Document 253669) Chapter 18 for architectural perfmon events
This is a limited set of fallback events because oprofile doesn't know your CPU
CPU_CLK_UNHALTED: (counter: all)
Clock cycles when not halted (min count: 6000)
INST_RETIRED: (counter: all)
number of instructions retired (min count: 6000)
LLC_MISSES: (counter: all)
Last level cache demand requests from this core that missed the LLC (min count: 6000)
Unit masks (default 0x41)
----------
0x41: No unit mask
LLC_REFS: (counter: all)
Last level cache demand requests from this core (min count: 6000)
Unit masks (default 0x4f)
----------
0x4f: No unit mask
BR_INST_RETIRED: (counter: all)
number of branch instructions retired (min count: 500)
BR_MISS_PRED_RETIRED: (counter: all)
number of mispredicted branches retired (precise) (min count: 500)
私が使っているCPU(Intel Core i5-560M)の場合だと、他のCPUに比べて取得できるイベント種別が少ない模様。
詳細はOProfileのドキュメントに記載されている『Event type reference』に記載されている。また、opcontrol コマンドの --list-events オプションで確認可能(あるいは ophelp コマンドでも確認できる)。私の環境だと以下のようになった。
% opcontrol --list-events
oprofile: available events for CPU type "Intel Architectural Perfmon"
See Intel 64 and IA-32 Architectures Software Developer's Manual
Volume 3B (Document 253669) Chapter 18 for architectural perfmon events
This is a limited set of fallback events because oprofile doesn't know your CPU
CPU_CLK_UNHALTED: (counter: all)
Clock cycles when not halted (min count: 6000)
INST_RETIRED: (counter: all)
number of instructions retired (min count: 6000)
LLC_MISSES: (counter: all)
Last level cache demand requests from this core that missed the LLC (min count: 6000)
Unit masks (default 0x41)
----------
0x41: No unit mask
LLC_REFS: (counter: all)
Last level cache demand requests from this core (min count: 6000)
Unit masks (default 0x4f)
----------
0x4f: No unit mask
BR_INST_RETIRED: (counter: all)
number of branch instructions retired (min count: 500)
BR_MISS_PRED_RETIRED: (counter: all)
number of mispredicted branches retired (precise) (min count: 500)
私が使っているCPU(Intel Core i5-560M)の場合だと、他のCPUに比べて取得できるイベント種別が少ない模様。
2011年1月3日
OProfileを使ってみる
LinuxカーネルのプロファイラであるOProfileを使ってみることにする。
始めて利用するので、今回はセットアップと超簡単な使い方のみ試してみる。
今回試した環境は、
まずは環境のセットアップ。OProfileを利用するためにはLinuxカーネルでのサポートと専用ユーザランドのインストールが必要。Linuxカーネルのサポートは、CONFIG_OPROFILE と CONFIG_HAVE_OPROFILE のサポートがあれば最低限OKらしい。続いてユーザランドのインストール。Portageを使ってインストールする
$ emerge dev-util/oprofile
インストールしたらOProfileで簡単なプロファイルを行ってみる。
$ sudo opcontrol --vmlinux=/usr/src/linux/vmlinux
$ sudo opcontrol --start
# プロファイルをとる任意のプログラムを実行
$ sudo opcontrol --stop
以上でプログラムのトレース取得は成功。
なお、opcontrolで各種処理を行うにはroot権限が必要な模様。そのため、sudoコマンドを用いて行っている。
続いてプロファイル結果の表示
$ opreport # 全体の結果を表示
$ opreport (プログラム名) # 該当するプログラムのみ
$ opreport -l (プログラム名) # ??
$ opreport -c (プログラム名) # ??
opreportでの各種コマンドラインオプションの詳細は今回は未確認。今日のところはこれで終了。もっと詳細を後日見ていきたいと思う。
参考ページ
OProfile : http://oprofile.sourceforge.net/news/
OProfile Documents : http://oprofile.sourceforge.net/docs/
備考
OProfileのサポートCPUを見るとCore-i5は十分なサポートされていないのか??この点も後日確認したいと思う。
またOProfileの実行に伴い、/root/.oprofile/ ディレクトリが作成されて設定が保持される。
さらに実行時の各種詳細情報は /var/lib/oprofile/ ディレクトリ配下に記憶さえる模様。
始めて利用するので、今回はセットアップと超簡単な使い方のみ試してみる。
今回試した環境は、
- システムは Gentoo Linux。カーネルバージョンは 2.6.36-gentoo-r6(Linux-2.6.36にGentoo向けパッチが当たっている)
- PCは、ThinkPad X201を利用。CPUはIntel Core i5-540M
まずは環境のセットアップ。OProfileを利用するためにはLinuxカーネルでのサポートと専用ユーザランドのインストールが必要。Linuxカーネルのサポートは、CONFIG_OPROFILE と CONFIG_HAVE_OPROFILE のサポートがあれば最低限OKらしい。続いてユーザランドのインストール。Portageを使ってインストールする
$ emerge dev-util/oprofile
インストールしたらOProfileで簡単なプロファイルを行ってみる。
$ sudo opcontrol --vmlinux=/usr/src/linux/vmlinux
$ sudo opcontrol --start
# プロファイルをとる任意のプログラムを実行
$ sudo opcontrol --stop
以上でプログラムのトレース取得は成功。
なお、opcontrolで各種処理を行うにはroot権限が必要な模様。そのため、sudoコマンドを用いて行っている。
続いてプロファイル結果の表示
$ opreport # 全体の結果を表示
$ opreport (プログラム名) # 該当するプログラムのみ
$ opreport -l (プログラム名) # ??
$ opreport -c (プログラム名) # ??
opreportでの各種コマンドラインオプションの詳細は今回は未確認。今日のところはこれで終了。もっと詳細を後日見ていきたいと思う。
参考ページ
OProfile : http://oprofile.sourceforge.net/news/
OProfile Documents : http://oprofile.sourceforge.net/docs/
備考
OProfileのサポートCPUを見るとCore-i5は十分なサポートされていないのか??この点も後日確認したいと思う。
またOProfileの実行に伴い、/root/.oprofile/ ディレクトリが作成されて設定が保持される。
さらに実行時の各種詳細情報は /var/lib/oprofile/ ディレクトリ配下に記憶さえる模様。
2010年6月17日
Gentoo Linux の world を調べる方法
Gentoo Linux で portage を使用していると、依存するパッケージ等を自動で解決・インストールしてくれます。では、インストールしているパッケージで「自身で指定したパッケージ」と「依存しているためにインストールされたパッケージ」を調べたい場合にはどうするか?という話。
自身で指定したパッケージは、"world" に指定されます。この world はファイルとして保持されていて、/var/lib/portage/world のファイルを確認すれば分かります。
自身で指定したパッケージは、"world" に指定されます。この world はファイルとして保持されていて、/var/lib/portage/world のファイルを確認すれば分かります。
2010年5月9日
Androidアプリのメニューに標準アイコンを指定する方法(xml編)
Androidアプリを作成するにあたって、アプリのメニューで利用するアイコンを他のアプリと共通にする目的でAndroidの標準アイコンを使いたいことがあると思います。(アイコンを作るのが大変というケースもあるかと思いますが…)
xmlでアイコン指定をする方法は、iconとして"android:drawable/アイコン名" を指定します。
例えば、以下のような形で res/menu/menu.xmlファイルを指定します。
android:icon="@android:drawable/ic_meu_info_details"
指定可能なアイコン名については、タオソフトウェアさんのブログが参考になります。
参考リンク:Android メニューアイコン (タオソフトウェアさんブログ)
xmlでアイコン指定をする方法は、iconとして"android:drawable/アイコン名" を指定します。
例えば、以下のような形で res/menu/menu.xmlファイルを指定します。
android:icon="@android:drawable/ic_meu_info_details"
指定可能なアイコン名については、タオソフトウェアさんのブログが参考になります。
参考リンク:Android メニューアイコン (タオソフトウェアさんブログ)
2010年5月5日
NetBSD5.0のBluetoothをデバッグする方法
最近、NetBSD5.0でBluetoothを利用して色々と試しています。
カーネルのBluetoothスタック関連でのデバッグを行う方法をメモ代わりに書いておきます。
デバッグの種類としては、"Bluetoothスタックのデバッグ"と"ドングルのデバッグ"の2種類があります。
ここでは、ドングルとしてはUSBタイプのドングルを利用するものとして記載します。(ちなみに私が使用しているのは、PlanexのBT-MicroEDR2です)
まずはカーネルでデバッグオプションを有効にしてカーネルをビルドします。設定するオプションは、BLUETOOTH_DEBUG と UBT_DEBUG の2種類。カーネルのコンフィグファイル(e.g. /usr/src/sys/arch/i386/conf/GENERIC)に以下のように追記します。
この設定でカーネルをビルドし、ビルドしたカーネルにて起動します。ただ、これだけではデバッグ文は出てきません。デバッグ文を表示するには、sysctlコマンドにてデバッグレベルの設定を行います。例えば、以下のような形式です。
カーネルのBluetoothスタック関連でのデバッグを行う方法をメモ代わりに書いておきます。
デバッグの種類としては、"Bluetoothスタックのデバッグ"と"ドングルのデバッグ"の2種類があります。
ここでは、ドングルとしてはUSBタイプのドングルを利用するものとして記載します。(ちなみに私が使用しているのは、PlanexのBT-MicroEDR2です)
まずはカーネルでデバッグオプションを有効にしてカーネルをビルドします。設定するオプションは、BLUETOOTH_DEBUG と UBT_DEBUG の2種類。カーネルのコンフィグファイル(e.g. /usr/src/sys/arch/i386/conf/GENERIC)に以下のように追記します。
options BLUETOOTH_DEBUG
options UBT_DEBUG
この設定でカーネルをビルドし、ビルドしたカーネルにて起動します。ただ、これだけではデバッグ文は出てきません。デバッグ文を表示するには、sysctlコマンドにてデバッグレベルの設定を行います。例えば、以下のような形式です。
# sysctl -w net.bluetooth.debug=11
# sysctl -w hw.ubt_debug=51これでデバッグ文が出力されるようになります。ちなみにsysctlで設定する値(上記の例では"11"とか"51")はデバッグレベルで値が大きいほどより詳細なデバッグ文が出力されます(その文、デバッグ文の量が増えます)。このあたりは、NetBSDでの他のドライバのデバッグと同じところですね。上記設定を行うと全てのデバッグ文が有効になります。デバッグ文を減らしたい場合は、値を小さく設定すればよいかと思います。
2010年5月3日
Javaの命名規則に関して…
元々Javaはほとんどやったことがない(Cばかり)だったんですが、最近Javaのコードをよく読んでます。
Javaのコードを読んでいて、"mなんちゃら"とプレフィックスに"m"がつく変数がよくでてくるのですが、この意味が分からなかった…。Sun(Oracle)が出しているコーディング規約にも、言及されている部分は見つからず。
Webで色々と調べてみたところ、変数のスコープを明示するために付けているスコープ接頭辞とのこと。
"m"が付いているのは、その変数がメンバー変数であることを表している模様。
なるほどー。
Javaのコードを読んでいて、"mなんちゃら"とプレフィックスに"m"がつく変数がよくでてくるのですが、この意味が分からなかった…。Sun(Oracle)が出しているコーディング規約にも、言及されている部分は見つからず。
Webで色々と調べてみたところ、変数のスコープを明示するために付けているスコープ接頭辞とのこと。
"m"が付いているのは、その変数がメンバー変数であることを表している模様。
なるほどー。
2010年1月11日
Androidアプリのパーミッション設定
Androidアプリケーションを作成するにあたって、例えばネットワーク接続等を行なうアプリケーションはパーミッションの設定を行なう必要があります。
それに関して、簡単な覚書。
パーミッションの設定を行なうためには、アプリケーションのAndroidManifest.xmlに設定を記述必要がある。これについては、以下のドキュメントが参考になります。
Manifest.permissionクラスのjavadoc
それに関して、簡単な覚書。
パーミッションの設定を行なうためには、アプリケーションのAndroidManifest.xmlに設定を記述必要がある。これについては、以下のドキュメントが参考になります。
Manifest.permissionクラスのjavadoc
2010年1月10日
Androidアプリの勉強中
最近、Androidアプリを勉強しています。
少しWebを調べれば分かることだけれども、個人的な覚書として少しずつ記録していきます。
Activityのライフサイクル
Androidのアプリケーションは、基本的に"Activity"という単位で管理される。
各Activityは個別のライフサイクルを持っており、(アプリケーションが個別に実装した内容以外にも)特定のタイミングでシステムからコールされるメソッドがある。
アプリケーションを作成するにあたっては、これらのメソッドをオーバーライドする形で実装を進めていく。ライフサイクルに関連するメソッドは以下の通り
onCreate(), onStart(), onResume(), onPause(), onStop(), onDestroy(), onRestart()
詳細は、Androidのリファレンスを参照のこと
少しWebを調べれば分かることだけれども、個人的な覚書として少しずつ記録していきます。
Activityのライフサイクル
Androidのアプリケーションは、基本的に"Activity"という単位で管理される。
各Activityは個別のライフサイクルを持っており、(アプリケーションが個別に実装した内容以外にも)特定のタイミングでシステムからコールされるメソッドがある。
アプリケーションを作成するにあたっては、これらのメソッドをオーバーライドする形で実装を進めていく。ライフサイクルに関連するメソッドは以下の通り
onCreate(), onStart(), onResume(), onPause(), onStop(), onDestroy(), onRestart()
詳細は、Androidのリファレンスを参照のこと
2010年1月3日
JNI(Java Native Interface)で、ネイティブからJavaのコードを呼び出す(の参考サイト)
登録:
投稿 (Atom)