なんか、少しアップデートしていないとあっと言う間ですよねぇ。
月日が立つのが早いというか、筆不精というか。
今回は、久々のわりに小ネタから。
raspberrypi用にLEGOブロックでケース作ってる人は結構いるみたいですが、
私も作ってみましたよ~
LEGOのブロックは、13x9で縦が少し動く感じです。
なんかスペーサ的なものをかますといいかもしれません。
こうやってケース作ると結構大きくなっちゃうんですよね。
そういう意味では、市販のケースを買うほうがいいかもしれません
上に載ってるのは、USBハブです。
ちょうどいいのがみつかったので、買っちゃいました。
ELECOM USB2.0HUB ToyBrick U2H-BL48GN
2014年2月17日月曜日
2014年2月4日火曜日
smartでスマートに?
パッケージをいろいろと出し入れしていると、
そのうちひとつづつコピーしてはインストールして、、、
という作業がめんどくさくなってきます。
依存関係を手動で解決するのもめんどくさいですし。
そこで、パッケージ管理ツールを導入したくなるのが順当かと思います。
Yoctoでは、パッケージ管理としてsmartが標準ということになっているようです。
これは、pythonのフロントエンドで、パッケージ自体はRPMでもIPKでもいいようです。
デフォルトのlocal.confではRPMになっていますので、
(個人的にもRPMのほうが慣れているので)
RPMで進めていきます。
まずは、ビルドマシンで作成したパッケージ群をターゲットからアクセスできるようにします。
Apache2で公開するには、下記のようにすればOKです。
んで、下記のようにターゲットからアクセスすれば、ネットワーク越しにインストールができます。
ということで、リポジトリ内のパッケージ検索とかをできるようにします。
ビルドしたディレクトリはパッケージのアーキテクチャ依存によって、
all/arm1176jzfshf/raspberrypiのように3つにわかれていると思いますので
下記のように3つのチャンネルを登録します。
rpmコマンドで確認してみると、まだターゲットのroot fsにはないようです。
念の為にRPMコマンドで確認してみると、見つかりました。
あまり依存関係のないiozone3あたりで試します。
ビルドしてから、パッケージを確認してみると、、、
これは、リポジトリのrepodataが更新されていないためです。
yoctoでは、rootfsをビルドするときにrepodataも更新しているのですが、
新しいパッケージをテストするためにビルドするたびに
いちいちrootfsをビルドしていてはたまらないですね。
repodataだけなら、ホストのコマンド(createrepo)でアップデートできます。
sysrootにもありますが、apt-get等でホストにインストールしてしまってもいいです。
パッケージが見つかるようになります。
ま、パッケージマネージャ周りは論争が絶えないところですから、
いろんなご意見があるのは、やむをえないかなぁと思います。
参考:
そのうちひとつづつコピーしてはインストールして、、、
という作業がめんどくさくなってきます。
依存関係を手動で解決するのもめんどくさいですし。
そこで、パッケージ管理ツールを導入したくなるのが順当かと思います。
Yoctoでは、パッケージ管理としてsmartが標準ということになっているようです。
これは、pythonのフロントエンドで、パッケージ自体はRPMでもIPKでもいいようです。
デフォルトのlocal.confではRPMになっていますので、
(個人的にもRPMのほうが慣れているので)
RPMで進めていきます。
まずは、ビルドマシンで作成したパッケージ群をターゲットからアクセスできるようにします。
Apache2で公開するには、下記のようにすればOKです。
$ sudo vi /etc/apache2/sites-available/default
...
Alias /repo_raspi/ "/home/knishimu/workplace/yocto/build_raspi_hf/tmp/deploy/rpm/"
<Directory "/home/knishimu/workplace/yocto/build_raspi_hf/tmp/deploy/rpm/">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order deny,allow
Allow from all
</Directory>
...
apache2の細かい設定やらは、グーグル先生に聞いて下さい。んで、下記のようにターゲットからアクセスすれば、ネットワーク越しにインストールができます。
root@raspberrypi:~# smart install http://hostname/repo_raspi/arm1176jzfshf_vfp/bootchart-1.16-r1.arm1176jzfshf_vfp.rpm Fetching packages... -> http://hostname/repo_raspi/.../bootchart-1.16-r1.arm1176jzfshf_vfp.rpm bootchart-1.16-r1.arm1176jzfs.. ######################################## [100%] Loading cache... Updating cache... ######################################## [100%] Computing transaction... Saving cache... root@raspberrypi:~#とりあえず、アクセスできましたが、まだあまり改善されてないですよね。
ということで、リポジトリ内のパッケージ検索とかをできるようにします。
ビルドしたディレクトリはパッケージのアーキテクチャ依存によって、
all/arm1176jzfshf/raspberrypiのように3つにわかれていると思いますので
下記のように3つのチャンネルを登録します。
root@raspberrypi:~# smart channel --add all type=rpm-md baseurl="http://hostname/repo_raspi/all" Alias: all Type: rpm-md Base URL: http://hostname/repo_raspi/all Include this channel? (y/N): y root@raspberrypi:~# smart channel --add arm1176jzfshf_vfp type=rpm-md baseurl="http://hostname/repo_raspi/arm1176jzfshf_vfp" Alias: arm1176jzfshf_vfp Type: rpm-md Base URL: http://hostname/repo_raspi/arm1176jzfshf_vfp Include this channel? (y/N): y root@raspberrypi:~# smart channel --add raspberrypi type=rpm-md baseurl="http://hostname/repo_raspi/raspberrypi" Alias: raspberrypi Type: rpm-md Base URL: http://hostname/repo_raspi/raspberrypi Include this channel? (y/N): yそして、アップデートをかけると、repodataからパッケージ情報を拾ってきます。
root@raspberrypi:~# smart update Updating cache... ######################################## [100%] Fetching information for 'raspberrypi'... -> http://hostname/repo_raspi/raspberrypi/repodata/repomd.xml repomd.xml ######################################## [ 16%] -> http://hostname/repo_raspi/raspberrypi/repodata/primary.xml.gz primary.xml.gz ######################################## [ 25%] -> http://hostname/repo_raspi/raspberrypi/repodata/filelists.xml.gz filelists.xml.gz ######################################## [ 33%] Fetching information for 'arm1176jzfshf_vfp'... -> http://hostname/repo_raspi/arm1176jzfshf_vfp/repodata/repomd.xml repomd.xml ######################################## [ 50%] -> http://hostname/repo_raspi/arm1176jzfshf_vfp/repodata/primary.xml.gz -> http://hostname/repo_raspi/arm1176jzfshf_vfp/repodata/filelists.xml.gz filelists.xml.gz ######################################## [ 58%] primary.xml.gz ######################################## [ 66%] Fetching information for 'all'... -> http://hostname/repo_raspi/all/repodata/repomd.xml repomd.xml ######################################## [ 83%] -> http://hostname/repo_raspi/all/repodata/primary.xml.gz primary.xml.gz ######################################## [ 91%] -> http://hostname/repo_raspi/all/repodata/filelists.xml.gz filelists.xml.gz ######################################## [100%] Updating cache... ######################################## [100%] Channels have 4772 new packages. Saving cache... root@raspberrypi:~#ここで、試しにcurlをインストールしてみたいと思います。
rpmコマンドで確認してみると、まだターゲットのroot fsにはないようです。
root@raspberrypi:~# rpm -qa|grep curl root@raspberrypi:~#smartでリポジトリを検索してみると、見つかります。
root@raspberrypi:~# smart search curl Loading cache... Updating cache... ######################################## [100%] curl - Command line tool and library for client-side URL transfers curl-dbg - Command line tool and library for client-side URL transfers - Debugging files curl-dev - Command line tool and library for client-side URL transfers - Development files curl-doc - Command line tool and library for client-side URL transfers - Documentation files gst-plugins-bad-curl - GStreamer plugin for curl gst-plugins-bad-curl-dev - GStreamer plugin for curl (development files) libcurl-dev - Command line tool and library for client-side URL transfers libcurl-doc - Command line tool and library for client-side URL transfers libcurl-staticdev - Command line tool and library for client-side URL transfers libcurl5 - Command line tool and library for client-side URL transfers root@raspberrypi:~#これをインストールします。
root@raspberrypi:~# smart install curl Loading cache... Updating cache... ######################################## [100%] Computing transaction... Installing packages (2): curl-7.34.0-r0@arm1176jzfshf_vfp libcurl5-7.34.0-r0@arm1176jzfshf_vfp 248.9kB of package files are needed. 423.8kB will be used. Confirm changes? (Y/n): Y Fetching packages... -> http://hostname/repo_raspi/.../curl-7.34.0-r0.arm1176jzfshf_vfp.rpm curl-7.34.0-r0.arm1176jzfshf_.. ######################################## [ 50%] -> http://hostname/repo_raspi/.../libcurl5-7.34.0-r0.arm1176jzfshf_vfp.rpm libcurl5-7.34.0-r0.arm1176jzf.. ######################################## [100%] Committing transaction... Preparing... ######################################## [ 0%] 1:Installing libcurl5 ######################################## [ 50%] 2:Installing curl ######################################## [100%] root@raspberrypi:~#依存関係にあるlibcurl5も同時にインストールされました。
念の為にRPMコマンドで確認してみると、見つかりました。
root@raspberrypi:~# rpm -qa|grep curl libcurl5-7.34.0-r0.arm1176jzfshf_vfp curl-7.34.0-r0.arm1176jzfshf_vfp root@raspberrypi:~#次に、新しいパッケージをビルドして、追加してみます。
あまり依存関係のないiozone3あたりで試します。
ビルドしてから、パッケージを確認してみると、、、
root@raspberrypi:~# bitbake iozone3 ... root@raspberrypi:~# smart search iozone3 Loading cache... Updating cache... ######################################## [100%] root@raspberrypi:~#見つかりません。
これは、リポジトリのrepodataが更新されていないためです。
yoctoでは、rootfsをビルドするときにrepodataも更新しているのですが、
新しいパッケージをテストするためにビルドするたびに
いちいちrootfsをビルドしていてはたまらないですね。
repodataだけなら、ホストのコマンド(createrepo)でアップデートできます。
sysrootにもありますが、apt-get等でホストにインストールしてしまってもいいです。
# sudo apt-get isntall createrepo ... # createrepo --update tmp/deploy/rpm/arm1176jzfshf_vfpこれで、repodataが更新されましたので、ターゲット側でもデータベースを更新すれば
パッケージが見つかるようになります。
root@raspberrypi:~# smart update Loading cache... Updating cache... ######################################## [100%] Fetching information for 'raspberrypi'... -> http://hostname/repo_raspi/raspberrypi/repodata/repomd.xml repomd.xml ######################################## [ 16%] Fetching information for 'arm1176jzfshf_vfp'... -> http://hostname/repo_raspi/arm1176jzfshf_vfp/repodata/repomd.xml repomd.xml ######################################## [ 41%] -> http://hostname/repo_raspi/arm1176jzfshf_vfp/repodata/primary.xml.gz -> http://hostname/repo_raspi/arm1176jzfshf_vfp/repodata/filelists.xml.gz filelists.xml.gz ######################################## [ 50%] primary.xml.gz ######################################## [ 58%] Fetching information for 'all'... -> http://hostname/repo_raspi/all/repodata/repomd.xml repomd.xml ######################################## [ 75%] Updating cache... ######################################## [100%] Channels have 13 new packages. Saving cache... root@raspberrypi:~# root@raspberrypi:~# smart search iozone3 Loading cache... Updating cache... ######################################## [100%] iozone3 - iozone3 version 263-r0 iozone3-dbg - iozone3 version 263-r0 - Debugging files iozone3-dev - iozone3 version 263-r0 - Development files iozone3-doc - iozone3 version 263-r0 - Documentation files root@raspberrypi:~#スマートですか?スマートじゃないですか?
ま、パッケージマネージャ周りは論争が絶えないところですから、
いろんなご意見があるのは、やむをえないかなぁと思います。
参考:
2014年1月30日木曜日
nbenchの結果
raspberrypi typeB
Broadcom BCM2835 700MHz
-march=armv6 -mfloat-abi=softfp
Broadcom BCM2835 700MHz
-march=armv6 -mfloat-abi=softfp
Broadcom BCM2835 1GHz
-march=armv6 -mfloat-abi=softfp
Broadcom BCM2835 700MHz
-march=armv6 -mfloat-abi=hard -mtune=arm1176jzf-s -mfpu=vfp
Broadcom BCM2835 1GHz
-march=armv6 -mfloat-abi=hard -mtune=arm1176jzf-s -mfpu=vfp
Broadcom BCM2835 700MHz
-march=armv6 -mfloat-abi=softfp
TEST : Iterations/sec. : Old Index : New Index
: : Pentium 90* : AMD K6/233*
--------------------:------------------:-------------:------------
NUMERIC SORT : 183.39 : 4.70 : 1.54
STRING SORT : 28.702 : 12.82 : 1.99
BITFIELD : 8.285e+07 : 14.21 : 2.97
FP EMULATION : 28.362 : 13.61 : 3.14
FOURIER : 1666.1 : 1.89 : 1.06
ASSIGNMENT : 2.4692 : 9.40 : 2.44
IDEA : 674.45 : 10.32 : 3.06
HUFFMAN : 409.25 : 11.35 : 3.62
NEURAL NET : 2.669 : 4.29 : 1.80
LU DECOMPOSITION : 78.084 : 4.05 : 2.92
==========================ORIGINAL BYTEMARK RESULTS==========================
INTEGER INDEX : 10.363
FLOATING-POINT INDEX: 3.203
Baseline (MSDOS*) : Pentium* 90, 256 KB L2-cache, Watcom* compiler 10.0
==============================LINUX DATA BELOW===============================
CPU : ARMv6-compatible processor rev 7 (v6l)
L2 Cache :
OS : Linux 3.10.26
C compiler : arm-poky-linux-gnueabi-gcc
libc : static
MEMORY INDEX : 2.431
INTEGER INDEX : 2.709
FLOATING-POINT INDEX: 1.776
raspberrypi typeBBroadcom BCM2835 700MHz
-march=armv6 -mfloat-abi=softfp
TEST : Iterations/sec. : Old Index : New Index
: : Pentium 90* : AMD K6/233*
--------------------:------------------:-------------:------------
NUMERIC SORT : 181.17 : 4.65 : 1.53
STRING SORT : 28.649 : 12.80 : 1.98
BITFIELD : 8.258e+07 : 14.17 : 2.96
FP EMULATION : 28.313 : 13.59 : 3.13
FOURIER : 1715.7 : 1.95 : 1.10
ASSIGNMENT : 2.3544 : 8.96 : 2.32
IDEA : 674.69 : 10.32 : 3.06
HUFFMAN : 408.83 : 11.34 : 3.62
NEURAL NET : 2.663 : 4.28 : 1.80
LU DECOMPOSITION : 78.571 : 4.07 : 2.94
==========================ORIGINAL BYTEMARK RESULTS==========================
INTEGER INDEX : 10.264
FLOATING-POINT INDEX: 3.239
Baseline (MSDOS*) : Pentium* 90, 256 KB L2-cache, Watcom* compiler 10.0
==============================LINUX DATA BELOW===============================
CPU : ARMv6-compatible processor rev 7 (v6l)
L2 Cache :
OS : Linux 3.12.7
C compiler : arm-poky-linux-gnueabi-gcc
libc : static
MEMORY INDEX : 2.388
INTEGER INDEX : 2.699
FLOATING-POINT INDEX: 1.796
raspberrypi typeBBroadcom BCM2835 1GHz
-march=armv6 -mfloat-abi=softfp
TEST : Iterations/sec. : Old Index : New Index
: : Pentium 90* : AMD K6/233*
--------------------:------------------:-------------:------------
NUMERIC SORT : 270.84 : 6.95 : 2.28
STRING SORT : 41.411 : 18.50 : 2.86
BITFIELD : 1.1971e+08 : 20.54 : 4.29
FP EMULATION : 40.952 : 19.65 : 4.53
FOURIER : 2524.8 : 2.87 : 1.61
ASSIGNMENT : 3.921 : 14.92 : 3.87
IDEA : 973.99 : 14.90 : 4.42
HUFFMAN : 591.91 : 16.41 : 5.24
NEURAL NET : 3.9623 : 6.37 : 2.68
LU DECOMPOSITION : 127.1 : 6.58 : 4.75
==========================ORIGINAL BYTEMARK RESULTS==========================
INTEGER INDEX : 15.220
FLOATING-POINT INDEX: 4.937
Baseline (MSDOS*) : Pentium* 90, 256 KB L2-cache, Watcom* compiler 10.0
==============================LINUX DATA BELOW===============================
CPU : ARMv6-compatible processor rev 7 (v6l)
L2 Cache :
OS : Linux 3.10.26
C compiler : arm-poky-linux-gnueabi-gcc
libc : static
MEMORY INDEX : 3.623
INTEGER INDEX : 3.935
FLOATING-POINT INDEX: 2.738
raspberrypi typeBBroadcom BCM2835 700MHz
-march=armv6 -mfloat-abi=hard -mtune=arm1176jzf-s -mfpu=vfp
TEST : Iterations/sec. : Old Index : New Index
: : Pentium 90* : AMD K6/233*
--------------------:------------------:-------------:------------
NUMERIC SORT : 193.66 : 4.97 : 1.63
STRING SORT : 28.629 : 12.79 : 1.98
BITFIELD : 6.6561e+07 : 11.42 : 2.38
FP EMULATION : 27.05 : 12.98 : 3.00
FOURIER : 1820.1 : 2.07 : 1.16
ASSIGNMENT : 2.4992 : 9.51 : 2.47
IDEA : 671.34 : 10.27 : 3.05
HUFFMAN : 405.55 : 11.25 : 3.59
NEURAL NET : 2.7578 : 4.43 : 1.86
LU DECOMPOSITION : 76.585 : 3.97 : 2.86
==========================ORIGINAL BYTEMARK RESULTS==========================
INTEGER INDEX : 10.048
FLOATING-POINT INDEX: 3.314
Baseline (MSDOS*) : Pentium* 90, 256 KB L2-cache, Watcom* compiler 10.0
==============================LINUX DATA BELOW===============================
CPU : ARMv6-compatible processor rev 7 (v6l)
L2 Cache :
OS : Linux 3.12.7
C compiler : arm-poky-linux-gnueabi-gcc
libc : static
MEMORY INDEX : 2.267
INTEGER INDEX : 2.704
FLOATING-POINT INDEX: 1.838
raspberrypi typeBBroadcom BCM2835 1GHz
-march=armv6 -mfloat-abi=hard -mtune=arm1176jzf-s -mfpu=vfp
TEST : Iterations/sec. : Old Index : New Index
: : Pentium 90* : AMD K6/233*
--------------------:------------------:-------------:------------
NUMERIC SORT : 285.91 : 7.33 : 2.41
STRING SORT : 41.357 : 18.48 : 2.86
BITFIELD : 9.6061e+07 : 16.48 : 3.44
FP EMULATION : 39.045 : 18.74 : 4.32
FOURIER : 2717.7 : 3.09 : 1.74
ASSIGNMENT : 3.7566 : 14.29 : 3.71
IDEA : 970.39 : 14.84 : 4.41
HUFFMAN : 587.35 : 16.29 : 5.20
NEURAL NET : 4.1006 : 6.59 : 2.77
LU DECOMPOSITION : 125.94 : 6.52 : 4.71
==========================ORIGINAL BYTEMARK RESULTS==========================
INTEGER INDEX : 14.646
FLOATING-POINT INDEX: 5.102
Baseline (MSDOS*) : Pentium* 90, 256 KB L2-cache, Watcom* compiler 10.0
==============================LINUX DATA BELOW===============================
CPU : ARMv6-compatible processor rev 7 (v6l)
L2 Cache :
OS : Linux 3.12.7
C compiler : arm-poky-linux-gnueabi-gcc
libc : static
MEMORY INDEX : 3.317
INTEGER INDEX : 3.930
FLOATING-POINT INDEX: 2.830
ラベル:
nbench
,
raspberrypi
,
yocto
hardfpビルド
nbenchがらみでいろいろ見ていますと、
raspberrypiのフォーラムでも結構その手の投稿があります。
そこらへんを見ていると、Debianなどはhardfpのライブラリに変えているようですね。
ひるがえって、yoctoのmeta-raspberrypiの方を見てみますと、softfpでビルドされているようです。
ここらへんに、その設定があります。
この値は、local.confなどでオーバーライドするとよさそうです。
このファイル自体は、poky/meta/とpoky/openembedded-core/meta/の2箇所で見つかります。
diffで見たところ、(今のところ)違いはないようです。
私のbblayers.confではopenembedded-coreの方にはパス(レイヤ?)を通していないので
おそらくpoky/meta/conf/machine/include/arm/arch-armv6.incの方が
使われていると思われます。
そのarch-armv6.incを見てみますと、ごちゃごちゃしているので関係するところで、
hfはhardfp, tはthumb, novfpはvfpなしということのようです。
なので、armv6hfあたりにすると、よさそうですね。
tune-arm1176jzf-s.incの方に戻って、続きを見てみますと、
arm1176jzfsだったら、-mtune=arm1176jzf-sを追加するということのようです。
なので、とりあえずこのままhardfpにするだけならば、
local.confで
DEFAULTTUNE = armv6hf
にしてやれば、いいようです。
実際のビルドオプションをビルドログから拾ってみますと、
まぁ、これでもいいんですが、せっかくなんでmfpuとかmtuneとか
つけたくなるのはやむをえないところでしょうか。
ということで、元からあるarm1176jzfsを拡張して
arm1176jzfshfを作ってみました。(みにくい。。。)
DEFAULTTUNE = arm1176jzfshf
とつけると、こんなかんじのオプションになります。
結果的にはよくなったところもあり、悪くなったところもあり、でした。
この先をやるかどうかは、気分しだいですねぇ。
いちおう、バイナリのサイズは微妙に小さくなっていましたので、
電力消費ぐらいには役に立ったかな?
参考:
raspberrypiのフォーラムでも結構その手の投稿があります。
そこらへんを見ていると、Debianなどはhardfpのライブラリに変えているようですね。
ひるがえって、yoctoのmeta-raspberrypiの方を見てみますと、softfpでビルドされているようです。
ここらへんに、その設定があります。
meta-raspberrypi/conf/machine/ ├── include │ ├── rpi-default-providers.inc │ ├── rpi-default-settings.inc │ ├── rpi-default-versions.inc │ └── tune-arm1176jzf-s.inc └── raspberrypi.confこの中で、tune-arm1176jzf-s.incを見てみますと、
DEFAULTTUNE ?= "armv6"ここで、デフォルトではarmv6の設定でビルドされることが決まっています。
この値は、local.confなどでオーバーライドするとよさそうです。
require conf/machine/include/arm/arch-armv6.incarch-armv6.incでarmv6のビルドオプションが決められていますが、
このファイル自体は、poky/meta/とpoky/openembedded-core/meta/の2箇所で見つかります。
diffで見たところ、(今のところ)違いはないようです。
私のbblayers.confではopenembedded-coreの方にはパス(レイヤ?)を通していないので
おそらくpoky/meta/conf/machine/include/arm/arch-armv6.incの方が
使われていると思われます。
そのarch-armv6.incを見てみますと、ごちゃごちゃしているので関係するところで、
AVAILTUNES += "armv6-novfp armv6t-novfp armv6 armv6t armv6hf armv6thf"どうやら使えるのは、こんなかんじのようです。
hfはhardfp, tはthumb, novfpはvfpなしということのようです。
なので、armv6hfあたりにすると、よさそうですね。
tune-arm1176jzf-s.incの方に戻って、続きを見てみますと、
TUNEVALID[arm1176jzfs] = "Enable arm1176jzfs specific processor optimizations"
TUNE_CCARGS += "${@bb.utils.contains("TUNE_FEATURES", "arm1176jzfs", "-mtune=arm1176jzf-s", "", d)}"
AVAILTUNES += "arm1176jzfs"
TUNE_FEATURES_tune-arm1176jzfs = "${TUNE_FEATURES_tune-armv6} arm1176jzfs"
ARMPKGARCH_tune-arm1176jzfs = "arm1176jzfs"
PACKAGE_EXTRA_ARCHS_tune-arm1176jzfs = "${PACKAGE_EXTRA_ARCHS_tune-armv6}"
ここらへんは、arm1176jzfsというタイプを新たに宣言して、arm1176jzfsだったら、-mtune=arm1176jzf-sを追加するということのようです。
なので、とりあえずこのままhardfpにするだけならば、
local.confで
DEFAULTTUNE = armv6hf
にしてやれば、いいようです。
実際のビルドオプションをビルドログから拾ってみますと、
armv6 -march=armv6 -mfloat-abi=softfp armv6hf -march=armv6 -mfloat-abi=hardとなっていました。(関係するところだけ)
まぁ、これでもいいんですが、せっかくなんでmfpuとかmtuneとか
つけたくなるのはやむをえないところでしょうか。
ということで、元からあるarm1176jzfsを拡張して
arm1176jzfshfを作ってみました。(みにくい。。。)
diff --git a/conf/machine/include/tune-arm1176jzf-s.inc b/conf/machine/include/tune-arm1176jzf-s.inc
old mode 100644
new mode 100755
index ebad588..194c622
--- a/conf/machine/include/tune-arm1176jzf-s.inc
+++ b/conf/machine/include/tune-arm1176jzf-s.inc
@@ -4,8 +4,14 @@ require conf/machine/include/arm/arch-armv6.inc
TUNEVALID[arm1176jzfs] = "Enable arm1176jzfs specific processor optimizations"
TUNE_CCARGS += "${@bb.utils.contains("TUNE_FEATURES", "arm1176jzfs", "-mtune=arm1176jzf-s", "", d)}"
+TUNE_CCARGS += "${@bb.utils.contains("TUNE_FEATURES", "vfp", "-mfpu=vfp", "", d)}"
AVAILTUNES += "arm1176jzfs"
TUNE_FEATURES_tune-arm1176jzfs = "${TUNE_FEATURES_tune-armv6} arm1176jzfs"
ARMPKGARCH_tune-arm1176jzfs = "arm1176jzfs"
PACKAGE_EXTRA_ARCHS_tune-arm1176jzfs = "${PACKAGE_EXTRA_ARCHS_tune-armv6}"
+
+AVAILTUNES += "arm1176jzfshf"
+TUNE_FEATURES_tune-arm1176jzfshf = "${TUNE_FEATURES_tune-arm1176jzfs} callconvention-hard"
+ARMPKGARCH_tune-arm1176jzfshf = "arm1176jzfs"
+PACKAGE_EXTRA_ARCHS_tune-arm1176jzfshf = "${PACKAGE_EXTRA_ARCHS_tune-armv6hf-vfp} arm1176jzfshf-vfp"
これで、local.confにDEFAULTTUNE = arm1176jzfshf
とつけると、こんなかんじのオプションになります。
arm1176jzfshf -march=armv6 -mfloat-abi=hard -mtune=arm1176jzf-s -mfpu=vfpnbenchの結果は別ページに乗せますが(またかよ)、
結果的にはよくなったところもあり、悪くなったところもあり、でした。
この先をやるかどうかは、気分しだいですねぇ。
いちおう、バイナリのサイズは微妙に小さくなっていましたので、
電力消費ぐらいには役に立ったかな?
参考:
2014年1月28日火曜日
raspberry piのオーバークロック
オーバークロックってなんかギークな雰囲気でわくわくしますね。
ま、それほどの恩恵があるのかどうか。
ま、それほどの恩恵があるのかどうか。
デフォルトの設定は700MHzなんですが、yoctoのREADMEでは
1GHzが確認されてるとのこと。しかも、その設定でも補償対象ということで。
これぐらいの値段だと、修理に出すよりもう一つ買ってしまいかねない
のはやむをえないところか。
1GHzが確認されてるとのこと。しかも、その設定でも補償対象ということで。
これぐらいの値段だと、修理に出すよりもう一つ買ってしまいかねない
のはやむをえないところか。
Readmeにはこんな風にかいてありますが、
しかも、コメントのおかげで結構ばらばら。
ARM_FREQ = "1000" CORE_FREQ = "500" SDRAM_FREQ = "500" OVER_VOLTAGE = "6"実際のconfig.hの中ではみんな小文字で設定されています。
しかも、コメントのおかげで結構ばらばら。
root@raspberrypi:~# vi /media/mmcblk0p1/config.txt ... arm_freq=1000 ... core_freq=500 ... sdram_freq=500 ... over_voltage=6 ...これでリブートすれば反映されます。
Normalの状態を見てみます。dmesgとsysfsから確認できます。
dmesgのログ
dmesgのログ
[ 2.040588] bcm2835-cpufreq: min=700000 max=700000 cur=700000 root@raspberrypi:~# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq 700000
んで、変更後はこんな感じになります。
[ 2.040662] bcm2835-cpufreq: min=700000 max=1000000 cur=700000 root@raspberrypi:~# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq 700000 root@raspberrypi:~# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq 1000000 root@raspberrypi:~# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq 700000
パッと見はこれで忙しくなれば自動的に1GHzまで上がってくれそうに見えますが、
cpufreqがどうやらきちんと動いていないように見えます。
nbenchの結果はまた別に掲載しますが、nbenchの結果を見ても
この状態では性能が上がっていません。
ということで、config.txtのパラメータで
force_turbo=1
を設定すると、nbenchの値もよくなりました。
その時のログの感じは下記の通りです。
まぁ、やむをえないということで。
cpufreqがどうやらきちんと動いていないように見えます。
nbenchの結果はまた別に掲載しますが、nbenchの結果を見ても
この状態では性能が上がっていません。
ということで、config.txtのパラメータで
force_turbo=1
を設定すると、nbenchの値もよくなりました。
その時のログの感じは下記の通りです。
[ 1.918492] bcm2835-cpufreq: min=1000000 max=1000000 cur=1000000cpuburnとか動かしてみるとはっきりするのかなぁ?
まぁ、やむをえないということで。
追記:
どうやら、READMEにある内容は、その設定をlocal.confあたりに書けば、
rootfsのビルド時に、config.txtを自動的にアップデートしてくれるって
ことだったみたい。
つまり、
ま、やってる内容は一緒なんだけどね。
rootfsのビルド時に、config.txtを自動的にアップデートしてくれるって
ことだったみたい。
つまり、
$ vi conf/local.conf ... ARM_FREQ = "1000" CORE_FREQ = "500" SDRAM_FREQ = "500" OVER_VOLTAGE = "6" ...と書いてやって、bitbakeするっていうことでした。。。
ま、やってる内容は一緒なんだけどね。
2014年1月25日土曜日
パッケージの追加(nbench)
今日は、core-image-satoに手動でnbenchを追加してみます。
raspberry piはオーバークロックがあるみたいなので、
この後nbenchを使ってみようという感じです。
raspberry piはオーバークロックがあるみたいなので、
この後nbenchを使ってみようという感じです。
まずは、nbenchのレシピがあるかどうか探します。
$ cd poky $ find -name nbench* ./meta-openembedded/meta-oe/recipes-benchmark/nbench-byte ./meta-openembedded/meta-oe/recipes-benchmark/nbench-byte/nbench-byte ./meta-openembedded/meta-oe/recipes-benchmark/nbench-byte/nbench-byte/nbench_32bits.patch ./meta-openembedded/meta-oe/recipes-benchmark/nbench-byte/nbench-byte_2.2.3.bbmeta-oeの下にレシピがあるようなので、ちょっとこのままビルドしてみます。
$ bitbake nbench-byte Loading cache: 100% |###########################################################################################################################| ETA: 00:00:00 Loaded 1224 entries from dependency cache. ERROR: Nothing PROVIDES 'nbench-byte' Summary: There was 1 ERROR message shown, returning a non-zero exit code.あれ?みつかんないみたいです。。。
あ~、レイヤが見つからないんだなってことで、bblayersを編集します。
meta-oeも認識されたみたいですね。
RPMパッケージがこのへんにあります。
$ cd ../build_raspi
$ vi conf/bblayers.conf
BBLAYERS ?= " \
/home/knishimu/workplace/yocto/poky/meta \
/home/knishimu/workplace/yocto/poky/meta-yocto \
/home/knishimu/workplace/yocto/poky/meta-yocto-bsp \
/home/knishimu/workplace/yocto/poky/meta-raspberrypi \
/home/knishimu/workplace/yocto/poky/meta-openembedded/meta-oe \
"
んで、ビルド。$ bitbake nbench-byte Parsing recipes: 100% |#########################################################################################################################| Time: 00:01:53 Parsing of 1304 .bb files complete (0 cached, 1304 parsed). 1722 targets, 65 skipped, 0 masked, 0 errors. NOTE: Resolving any missing task queue dependencies Build Configuration: BB_VERSION = "1.21.1" BUILD_SYS = "x86_64-linux" NATIVELSBSTRING = "Ubuntu-12.04" TARGET_SYS = "arm-poky-linux-gnueabi" MACHINE = "raspberrypi" DISTRO = "poky" DISTRO_VERSION = "1.5+snapshot-20140121" TUNE_FEATURES = "armv6 vfp" TARGET_FPU = "vfp" meta meta-yocto meta-yocto-bsp = "master:b908caca1af1d4150eafd3d3001ea19599657270" meta-raspberrypi = "master:49c08724483da00d6cd0ed7d00561cfa14edf2f2" meta-oe = "master:9402e8cc964a3d75456af616497d376ebcc8e299" NOTE: Preparing runqueue NOTE: Executing SetScene Tasks NOTE: Executing RunQueue Tasks WARNING: nbench-byte: No generic license file exists for: freely in any provider WARNING: nbench-byte: No generic license file exists for: distributable in any provider NOTE: Tasks Summary: Attempted 372 tasks of which 359 didn't need to be rerun and all succeeded. Summary: There were 2 WARNING messages shown. $なんか、ライセンスで怒られてますが、できたっぽいです。
meta-oeも認識されたみたいですね。
RPMパッケージがこのへんにあります。
$ ls tmp/deploy/rpm/armv6_vfp/nbench-byte-* tmp/deploy/rpm/armv6_vfp/nbench-byte-2.2.3-r0.armv6_vfp.rpm tmp/deploy/rpm/armv6_vfp/nbench-byte-dev-2.2.3-r0.armv6_vfp.rpm tmp/deploy/rpm/armv6_vfp/nbench-byte-dbg-2.2.3-r0.armv6_vfp.rpm
これを、raspiにコピーして、
追記:$ scp tmp/deploy/rpm/armv6_vfp/nbench-byte-2.2.3-r0.armv6_vfp.rpm root@192.168.0.10:/home/root nbench-byte-2.2.3-r0.armv6_vfp.rpm 100% 26KB 26.2KB/s 00:00 $んで、ターゲット側でインストールします。
root@raspberrypi:~# ls nbench-byte-2.2.3-r0.armv6_vfp.rpm root@raspberrypi:~# rpm -ivh ./nbench-byte-2.2.3-r0.armv6_vfp.rpm Preparing... ########################################### [100%] 1:nbench-byte ########################################### [100%] root@raspberrypi:~# which nbench /usr/bin/nbench実行結果は、またこんど♪
nbenchをこのまま実行すると、下記のようなエラーがでます。
root@raspberrypi:~# nbench
BYTEmark* Native Mode Benchmark ver. 2 (10/95)
Index-split by Andrew D. Balsa (11/97)
Linux/Unix* port by Uwe F. Mayer (12/96,11/97)
TEST : Iterations/sec. : Old Index : New Index
: : Pentium 90* : AMD K6/233*
--------------------:------------------:-------------:------------
NUMERIC SORT : 182.96 : 4.69 : 1.54
STRING SORT : 28.689 : 12.82 : 1.98
BITFIELD : 8.2803e+07 : 14.20 : 2.97
FP EMULATION : 28.34 : 13.60 : 3.14
FOURIER : 1685.8 : 1.92 : 1.08
ASSIGNMENT : 2.3679 : 9.01 : 2.34
IDEA : 674.32 : 10.31 : 3.06
HUFFMAN : 408.97 : 11.34 : 3.62
NEURAL NET :
CPU:NNET--error in opening file!root@raspberrypi:~#
これは、NNET.DATというファイルが見つからないために発生しています。nbenchのパッケージの中身をのぞいてみると、、、
$ rpm2cpio rpm/armv6_vfp/nbench-byte-2.2.3-r0.armv6_vfp.rpm |cpio --list ./usr ./usr/bin ./usr/bin/nbench ./usr/bin/NNET.DAT 85 blocksと、/usr/binにありますので、これをコピーするなり、シンボリックリンクをはるなりして
実行するカレントディレクトリにあるようにしてやるとOKです。
2014年1月22日水曜日
yoctoでビルドしてみる
とりあえず、火入れをしようということなんですが、
オフィシャルページのNOOBSとかDLできなくて、、、
いづれyoctoでビルドしようと思っていたので、
こっちからいくことにしました。
基本的には、raspberry piレイヤにあるREADMEどおりでOKでしたが、
Angstromではなく、手動で設定しました。
以下、コマンドの流れをメモ
必要なものを拾ってくる。
オフィシャルページのNOOBSとかDLできなくて、、、
いづれyoctoでビルドしようと思っていたので、
こっちからいくことにしました。
基本的には、raspberry piレイヤにあるREADMEどおりでOKでしたが、
Angstromではなく、手動で設定しました。
以下、コマンドの流れをメモ
必要なものを拾ってくる。
$ git clone git://git.yoctoproject.org/poky $ cd poky $ git clone git://git.openembedded.org/openembedded-core $ git clone git://git.openembedded.org/meta-openembedded $ git clone git://git.yoctoproject.org/meta-raspberrypi
buildディレクトリは、build_raspiという名前にしました。
$ source poky/oe-init-build-env build_raspi
コンフィグレーションの設定で、raspberrypiのレイヤを追加して、
MACHINEをraspberrypiに設定します。
$ vi conf/bblayers.conf BBLAYERS ?= " \ /home/knishimu/workplace/yocto/poky/meta \ /home/knishimu/workplace/yocto/poky/meta-yocto \ /home/knishimu/workplace/yocto/poky/meta-yocto-bsp \ /home/knishimu/workplace/yocto/poky/meta-raspberrypi \ /home/knishimu/workplace/yocto/poky/meta-openembedded/meta-oe \ " $ $ vi conf/local.conf MACHINE ??= "raspberrypi"
あとは、焼くだけですなぁ。
$ bitbake rpi-hwup-imageとはいえ、私のPCでは7時間とかかかっていたみたいです。。。
READMEには、rpi-basic-imageとrpi-test-imageがあるということなんですが、
どうやらrpi-test-imageはなくなっているようです。
やむをえないですねぇ。
(追記:今ではレシピが復活しているようです。)
やむをえないですねぇ。
(追記:今ではレシピが復活しているようです。)
登録:
投稿
(
Atom
)

