coLinux日記

coLinuxはフリーソフトを種として、よろずのシステムとぞなれりける。

Raspberry Pi の gpu_mem について

2013-08-20 22:44:49 | Raspberry Pi

前回、Pidora をアップデートしたら Raspberry Pi が起動できなくなった件ですが、結局動作が不安定なので /boot の3つのファイル

bootcode.bin
fixup.dat
start.elf

を古いものに戻して使っています。そのとき役に立った Raspberry Pi の5つの LED ランプの意味をまとめておきます。

ボードの端から次のようになります。

・ オレンジ 100Mbps :ネットワークが100Mbpsで接続されていれば ON

・ グリーン Link :ネットワークに接続されていれば ON

・ グリーン Full duplex :ネットワークの接続が full duplex なら ON

・ レッド  Power :電源がつながっていれば ON

・ グリーン Card status :SDカードの読み込み、書き込み時に ON

通常は、Card status が付いたり消えたりして、他の4つが ON になっています。

Power が OFF なら電源が接続されていないことを示し、Power が点滅しているなら電源不良ですね。今回のトラブルの場合は、

「Power が ON 、Card status が ON のままで、しばらくすると OFF になって、ネットワーク関連の3つのLEDは OFF」

です。カーネルに制御が移ると、多数のファイルの読み込みが行われますので Card status が点滅するのが正常ですから、ブートコードが実行されていない状態でした。 ちなみに、現在のカーネルのバージョンは以下の通りです。(以下適当に改行してあります。)

# uname -a
Linux raspi001 3.6.11 #1 PREEMPT Fri Jun 14 13:05:58 EDT 2013 
  armv6l armv6l armv6l GNU/Linux
#

GPUのファームウェアのバージョンは次のコマンドで得られます。

# vcgencmd version
Jun 6 2013 18:33:28 Copyright (c) 2012 Broadcom 
  version e6f0abde032163069972925f175c4a3a5617d46d (clean) (release)
#

ついでに、 /boot/config.txt の中の gpu_mem という設定について調べてみました。これは、512M の RAM の内、GPUにどれぐらいメモリを割り振るかを指定するものです。デフォルトは、

gpu_mem=64

です。メモリ量は以下のようになります。

# free
             total       used       free     shared    buffers     cached
Mem:        446672      86780     359892          0       9928      42332
-/+ buffers/cache:      34520     412152
Swap:       524284          0     524284

早速試してみます。まず、

gpu_mem=16

/boot/config.txt に追加してリブートしたところ、

「Power が ON 、Card status が3回点滅を繰り返す」

のような状態になってブートできませんでした。このように、Card status の点滅回数もトラブル時には調べると良いようです。

メモリ割り当てが少ないようなので、GPU のメモリ割り当てを倍の 32M にします。

gpu_mem=32

これは、ブートできて、メモリ量は 32M 増えています。

# free
             total       used       free     shared    buffers     cached
Mem:        479184      86944     392240          0       9936      42348
-/+ buffers/cache:      34660     444524
Swap:       524284          0     524284

ちなみに、モニターをつないで利用している場合で、もう少し速くしたい場合は、

gpu_mem=128

のようにすると良いようです。この場合のメモリ量は以下のようになります。

# free
             total       used       free     shared    buffers     cached
Mem:        381648      86740     294908          0       9944      42312
-/+ buffers/cache:      34484     347164
Swap:       524284          0     524284
#

というわけで、ここでは gpu_mem=32 を使用することにします。

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Pidora のアップデートでのトラブル

2013-08-03 20:59:28 | Raspberry Pi

ちょっと用があって、Raspberry Pi にさわれませんでした。久しぶりにログインして、再びアップデートしてみました。表示は適当に改行してあります。

# yum update
..............................
=======================================================
 Package    Arch     Version                                  Repository              Size
=======================================================
Updating:
 raspberrypi-vc-demo-source
                armv6hl 20130711gitba8059e-3.rpfr18 pidora-rpfr-updates  30 M
 raspberrypi-vc-firmware
                armv6hl 20130711gitba8059e-3.rpfr18 pidora-rpfr-updates 1.4 M
 raspberrypi-vc-libs
                armv6hl 20130711gitba8059e-3.rpfr18 pidora-rpfr-updates 217 k
 raspberrypi-vc-libs-devel
                armv6hl 20130711gitba8059e-3.rpfr18 pidora-rpfr-updates 234 k
 raspberrypi-vc-static
                armv6hl 20130711gitba8059e-3.rpfr18 pidora-rpfr-updates 152 k
 raspberrypi-vc-utils
                armv6hl 20130711gitba8059e-3.rpfr18 pidora-rpfr-updates 111 k

Transaction Summary
=======================================================
Upgrade  6 Packages

Total download size: 32 M
Is this ok [y/N]: y
.........................................................

Complete!
#

6つのアップデートを適用してリブートしたところ、左から4番目の赤いランプが付くだけで、ネットワークの左から3つのランプがつきません。あわてて、ディスプレイ、キーボードをつないで立ち上げたところ何も表示されません。別のカードでは正常に動作するので、このアップデートで何らかの障害が起こったと思われます。

調べるための準備をします。正常に動作する別のカードでブートするときに、電源付きのUSBハブを付けて、USBカードリーダーをつなぎました。Pidora が正常に立ち上がってから、立ち上がらないSDカードを挿入します。dmesg コマンドなどで確認できますが、ここでは /dev/sdd として認識されました。早速マウントします。

# mount /dev/sdd2 /mnt
# mount /dev/sdd1 /mnt/boot

画面が何も表示されないので、カーネルに制御が渡る前のトラブルと考えて、/mnt/bootの中身を調べてみ ます。 2013.07.11 の日付の、以下の3つのファイルが問題のようです。

boot/bootcode.bin
boot/start.elf
boot/fixup.dat

# yum provides /boot/bootcode.bin /boot/start.elf /boot/fixup.dat

で、調べてみますと、いずれも、raspberrypi-vc-firmware のアップデートで修正されています。

# yum info raspberrypi-vc-firmware
......................
Summary     : GPU firmware for the Raspberry Pi computer
......................
Description : This package contains the GPU firmware for the Raspberry Pi
            : BCM2835 SOC including the kernel bootloader.
#
# rpm -ql raspberrypi-vc-firmware 
/boot/bootcode.bin
/boot/fixup.dat
/boot/start.elf
/usr/share/doc/raspberrypi-vc-firmware-20130711gitba8059e
/usr/share/doc/raspberrypi-vc-firmware-20130711gitba8059e/LICENCE.broadcom
#

つまり、Raspberry Pi のGPUファームウェアの3つのファイルが原因のようです。仕方が無いので、3つのファイルを別のSDカードのものからコピーします。

# cp -R /boot/{bootcode.bin,start.elf,fixup.dat} /mnt/boot

これでリブートすると一応立ち上がりました。念のため、次のようにもう一度インストールします。

# yum reinstall raspberrypi-vc-firmware-20130711gitba8059e-3.rpfr18.armv6hl ........................... 
# 

インストールされた3つのファイルをエラーになったものと比較すると同じでしたが、ここでリブートすると再起動されました。

しかし、もう一度同じように残りの5つを再インストールして、その後にもう一度 raspberrypi-vc-firmware を再インストールしてもリブートできませんでした。 つまり、3つのファイルが問題なのでは無く、このアップデートを6つ同時に行うと何故か3つのファイルがエラーになりブートできなくなるが、以前動いていたものを一度コピーしてブートしてから、raspberrypi-vc-firmware だけを改めて再インストールすると正常に起動できるようになるようです。

アップデート前に、ブート可能な予備のSDカードを作成して、/boot の中身をどこかに待避しておくことをお勧めします。

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする