BeagleBoneBlack の情報

BBB と略す。 BBBについて検索したけれどあまり情報が無かったので調べたことを書く。

お約束とお願い

BeagleBoneBlack はシリコンリナックス社製品ではありませんので、弊社にお問い合わせをいただいても返信することができません。このページの内容も未保障です。メモ程度であることを了承ください。

システムリファレンスマニュアル (SRM)

ここの真ん中辺にある System Reference Manual A5.6 (英文PDF) にいろいろ書いてある。

LED

簡単アクセス方法

起動時はインジケータとしてピカピカしているので、まずそれをを止める

# echo none > /sys/class/leds/beaglebone\:green\:usr0/trigger
# echo none > /sys/class/leds/beaglebone\:green\:usr1/trigger
# echo none > /sys/class/leds/beaglebone\:green\:usr2/trigger
# echo none > /sys/class/leds/beaglebone\:green\:usr3/trigger
# cat /sys/class/leds/beaglebone\:green\:usr0/max_brightness
255

なので 0-255 を受け付けるように見えるが、実際には 0 か 1 。 1-255は同じ。

点灯
# echo 1 > /sys/class/leds/beaglebone\:green\:usr0/brightness
消灯
# echo 0 > /sys/class/leds/beaglebone\:green\:usr0/brightness

GPIO

pic_board.jpg

filebbb_pins_P8.pdf
filebbb_pins_P9.pdf
filebbb_pins.xlsx

電源投入後のデフォルトでpull-upされているピン、またはpull-downされているピンは
上記エクセルとpdfにまとめました。

Pinファンクション

65432-0
SlewControlRX_EnabledPU/PDPU/PDMODE
0=Fast,1=Slow0=Disable,1=Enable0=PullDown,1=PullUp0=enabled,1=disabledmode0-7
GPIO=mode7
プルアップ有り入力 = 0x37  b' 1 1 0 111
プルアップ無し入力 = 0x3F  b' 1 1 1 111
プルアップ有り出力 = 0x17  b' 0 1 0 111
BBBBoxのWDI(WatchDogIn)は P9_30 につながっている
上記 &ref(bbb_pins_P9.pdf); から offset 0x998 と読み取れる
0x44E10000 + 0x998 = 0x44E10998

u-bootでのpin function操作
memory dump(表示)
  U-Boot# md 0x44E10998.l
memory write(書き換え) アドレス 値 長さ
  U-Boot# mw 0x44E10998.l 0x3f 1   (プルアップ無し入力にする)
nameBBB PinoffsetGPIO
LED0RP8_110x834gpio1[13]
LED0GP8_120x830gpio1[12]
LED1RP8_140x828gpio0[26]
LED1GP8_150x83cgpio1[15]
LED2RP8_160x838gpio1[14]
LED2GP8_170x82cgpio0[27]
SW0P9_110x870gpio0[30]
SW1P9_120x878gpio1[28]
SW2P9_130x874gpio0[31]
SW3P9_210x954gpio0[3]
SW4P9_220x950gpio0[2]
SW5P8_260x87cgpio1[29]

GPIOレジスタ

namebase
GPIO00x44E07000
GPIO10x4804C000
GPIO20x481AC000
GPIO30x481AE000
registeroffset
DATA_OE0x134out=0, in=1
DATA_IN0x138
DATA_OUT0x13c
GPIO_CLEARDATAOUT0x190set1 to High
GPIO_SETDATAOUT0x194set1 to Low

GPIO pin入力

SW0は GPIO0_30なので、0x44E07000+0x138 を long で読み bit30 を評価する

U-Boot# md 0x44E07138.l

SW1は GPIO1_28なので、0x4804C000+0x138 を long で読み bit28 を評価する

U-Boot# md 0x4804c138

GPIO pin出力

LED0R は gpio1_13 なので

pin設定を出力にする
writel( 0x17,     0x44E10000+0x834);
つまり
U-Boot# mw 0x44E10834.l 0x17 1

writel( ~(1<<13), 0x4804C000+0x134);  // OE
writel( 1<<13,    0x4804C000+0x194);  // SETDATAOUT
つまり
U-Boot# mw 0x4804c134.l 0xffffdfff 1
U-Boot# mw 0x4804c194.l 0x2000 1
U-Boot# mw 0x4804c190.l 0x2000 1

Linuxコマンドラインからの操作方法

例 P9-12番ピン - GND間にスイッチをつないだとき

GPIO1_28 => 32+28 => 60  (上記エクセルまたはpdfの "GPIO NO" 列が早見表です)
# echo 60 > /sys/class/gpio/export
# echo in > /sys/class/gpio/gpio60/direction
# cat /sys/class/gpio/gpio60/value

同様に P9-15番ピンは

GPIO1_16 => 32+16 => 48
# echo 48 > /sys/class/gpio/export
# echo in > /sys/class/gpio/gpio48/direction
# cat /sys/class/gpio/gpio48/value

この2か所は pull up は働いているっぽいのでGND間でSW直結ok。

debian

microSD に debian 7.0 wheezy をインストールする。

用意するもの

  • 2G以上のmicroSD と USB等のカードリーダ
  • debian wheezy をインストールした開発PC

開発PCにて

# apt-get install wget dosfstools parted u-boot-tools git parted uboot-mkimage
# git clone git://github.com/RobertCNelson/netinstall.git
# cd netinstall

microSDが開発PCで /dev/sdb として認識するとして

# ./mk_mmc.sh --mmc /dev/sdb --dtb am335x-boneblack --distro wheezy-armhf --firmware --serial-mode

以下の2つの質問を訊かれるので、よく考えた上で y と答える。
"100% sure" じゃなかったら当然 n にしとく。PCのハードディスク壊すぞ。

Are you 100% sure, on selecting [/dev/sdb] (y/n)? y
Knowing these issues, would you like to continue to install [am335x-boneblack] (y/n)? y

この状態で microSD の中身は次のようになっている。

  Name      Flags    Part Type FS Type       [Label]      Size (MB)
------------------------------------------------------------------
                      Pri/Log  Free Space                      1.0*
  sdb1      Boot      Primary  vfat          [boot]          100.6*
                      Pri/Log  Free Space                   1875.9*

microsD を BBB に挿して起動するとインストーラ起動する。
インストーラは BBBのオンボードetherを認識できないので、netinstの時だけはUSB-ether (eth1)を用意すること。

適宜質問に答えていけば debian wheezy のインストールが完了する。

アーキテクチャ名は armhf (arm hard float)

CPU速度

変更

起動時デフォルト
# performance > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
# echo ondemand > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor

確認

# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq

USBハブ

Debian は USB ホットプラグに対応していない模様。 USBハブまたはその先の機器が認識されない。 機器を繋いだ状態でコールドブートすると全て認識される。※Rev.A5Cにて確認

Babble Interrupt Occurred

のエラーがあらわれてUSBがクラッシュしてしまうのはBBBで顕著な不具合らしく、上記エラーメッセージで検索すると多数の掲示板がヒットする。

# echo 0 > /sys/bus/usb/devices/usb1/authorized
# sleep 2
# echo 1 > /sys/bus/usb/devices/usb1/authorized
# sleep 2
# echo 'on' > /sys/bus/usb/devices/usb1/power/control

でroot hubをリセットすると復活するらしい

ここにpatchっぽいものがある

以下でも討論されている

カーネル

リビジョン

Rev.A6A

ボードの機能と操作に変更は無い。

  1. GND_OSC1 とシステムグランドを繋ぐオプションのゼロオーム抵抗を追加した。
  2. C106 を 1uF キャパシターに変更した。
  3. C24 を 2.2uF キャパシターに変更した。これは一部のボードが電源投入時に起動しない問題を解決するためにリセット信号を拡張する。
  4. R9 を取り外して R8 を実装した。この変更は TI から受けた TPS65217C 電源管理 IC の電源シーケンスが正しくないという警告に基づいたものだ。この変更は VDDS レールと VRTC レールを接続する。我々はこの問題がボードに関する他の様々な問題を引き起こしているとは今のところ考えていない。しかし規則には準じる。

関連

BeagleBoneBlackBox

BeagleBone Black用のケースを作りました。

bbbb1.jpg

bbbb2.jpg

詳しくはこちらへ

社内関連リンク

自動リンク

外部リンク