Raspberry Pi で SPI, I2C, 1-wire デバイスを使えるようにする

投稿日: Leave a comment

Raspberry PiでI2Cと1-wireデバイスを使えるように設定した.

I2Cはモジュール追加とパッケージ追加,SPIと1-wireはモジュールの追加のみ.I2Cはここ,SPIはここ,1-wireはここを参考にした.

今回は設定のみ.動作確認はまたの機会.

1. デフォルトでデバイスを探しにいかないようなので,/etc/modulesに以下を追加

i2c-dev
spidev
w1-gpio
w1-therm

※参考にしたページにはi2c-bcm2708も追加するよう書いてあったけど,なくても認識した.

2. /etc/modprobe.d/raspi-blacklist.conf の 以下をコメントアウト

i2c-bcm2708

3. i2c-tools パッケージをインストール

$ sudo apt-get install i2c-tools

NOOBS (New Out Of Box Software)

投稿日: Leave a comment

Raspberry Pi で GPIO とか I2C とかを触ろうと思ったら NetBSD だと情報がなさ過ぎてつらいのでDebian Linux ベースの Raspbian を入れることにした.

本家のページに行ったらNOOBS (New Out Of Box Software)と書いてあるのでRaspbianのイメージを直接焼かず,NOOBSからインストールすることにした.

手順:

  1. SD AssociationのSDフォーマッターで論理サイズ調整ONでフォーマット
  2. NOOBS_v1_3.zip をダウンロードして展開
  3. osフォルダの中のraspbian以外のフォルダを削除
  4. フォーマットしたSDにコピー
  5. Raspberry Piに挿して起動

NOOBSはHDMI接続のモニターとUSBキーボード・マウスが必要なので,モニターはHDMI-DVI変換アダプター経由で液晶モニターに接続し,キーボードとマウスはセルフパワーのUSBハブ経由で接続して起動した.

電源を入れるとモニターの最適解像度を自動検出して 1280×1024 で表示.パーティションが自動的に変更され,インストーラーが起動する.そして,Raspbianにチェックを入れて Install を押すとインストールが開始される.

インストールは主にイメージの展開.しばらく待つと終了し,OSが起動し,raspi-configが立ち上がるのでホスト名とか適当に設定して終了.

デフォルトでIPv6が無効になっているようなので有効になるように設定を追加しておいた.

  1. /etc/modprobe に ipv6 を追加 (ipv6有効化)
  2. /etc/sysctl.conf に net.ipv6.conf.eth0.use_tempaddr = 2 を追加 (匿名アドレスの有効化)

 

 

NetBSD/evbarm

投稿日: Leave a comment

Fedora上でNetBSD/evbarmをビルドしたのでその記録.ここを参照した.

Linux上でのクロスコンパイルなんだけど,見た目Linuxで動作させている感じが全く現れていない.というか何の問題もなくクロスビルドできちゃうところがすごい.

ソースの取得

CVSから.コマンドはこんな感じ.

$ cd work/netbsd/current
$ export CVSROOT=anoncvs@anoncvs.NetBSD.org:/cvsroot
$ export CVS_RSH=ssh
$ cvs checkout -P src

クロスビルド環境の構築

$ cd src
$ ./build.sh -O ../objarm -m evbarm -j 4 -u -U tools

./build.sh –help するといろいろ説明が出てくるけど,-uはcleanしない,-Uは非rootユーザーでビルドを実行する,の意味.

リリースビルド

$ cd src
$ ./build.sh -O ../objarm -m evbarm -j 4 -u -U release

初回ビルドだと結構時間がかかるが一度ビルドすると差分ビルドになるので時間はかなり短縮される.

ビルドが完了すると,../objarm/releasedir/evbarm/binary/gzimg/rpi.img.gz に SDカードのイメージができる.

SDカードの作成

Windows環境でイメージファイルをSDに焼くツールはいろいろあるけど,今回使ったのは win32diskimager というツール.USBメモリーやSDカードなどのフラッシュメモリの消去やチェックができるChkFlshというツールでも書き込み可能.

どのツールを使うにせよ,SDにパーティションが切られているとうまくかけないので,Windows標準(Vista以降?)のdiskpartコマンドでパーティションを消去する.

DISKPART> list disk

  ディスク      状態           サイズ   空き   ダイナ GPT
  ###                                          ミック
  ------------  -------------  -------  -------  ---  ---
  ディスク 0    オンライン     298 GB   0 B
  ディスク 1    オンライン     947 MB   0 B

ここでは1GBのSDカードを入れたのでディスク1を選択する.

DISKPART> select disk 1

ディスク 1が選択されました。

削除する前に,念のためパーティションを確認する.

DISKPART> list part

  Partition ###  Type                Size     Offset
  -------------  ------------------  -------  -------
  Partition 1    プライマリ          56 MB    4096 KB

消して良さそうなら削除する (次のコマンドを実行した瞬間に反映されるのでEnterを押すときは慎重に)

DISKPART> clean

DiskPart はディスクを正常にクリーンな状態にしました。

いよいよrpi.imgの焼きこみ.ドライブ文字とファイルのパスを指定して書き込んでおしまい.

ファームウェアの入れ替え

このままSDカードに焼いても手元のRaspberry Piはブートせず.どうやらファームウェアがダメみたいなので,ファームウェアを最新のものに入れ替える.

ファームウェアはSD上のMSDOSファイルシステム(64MB)においてあるので,GitHubから持ってきて差し替える.

具体的には,bootフォルダのkernel.img以外をダウンロードしてSDに突っ込むだけ.

これで無事カーネルが起動してOSが立ち上がった.

以下,おまけ.

ソースを更新するには

$ cvs update -dP

カーネルを作り直すには?

src/sys/arch/evbarm/conf/ にコンフィグレーションファイルをおいて,

./build.sh -O ../objarm -m evbarm -j 4 -u -U kernel=<コンフィグレーションファイル名>

を実行すると,../objarm/sys/arch/evbarm/compile/<コンフィグレーション>/netbsd.bin ができるので,これを kernel.img にリネームしてSDカードに置く.

Raspberry Pi type B

投稿日: Leave a comment

マイクロサーバー的なものを作って遊ぼうと思っていろいろ調べていたら Raspberry Pi type B (Ether付) が良さそうなので買ってみた.

DebianベースのLinuxを入れるのが一般的のようだけど,何となくNetBSDを入れてみることにした.

とりあえずここにあった 2013-07-30-netbsd-raspi.img をSDカードに書き込んでブート.

最初はUSB-UARTが手元になかったので,HDMIコネクタをプラズマテレビにつないで起動.37インチの画面にブートログがたらたら流れ始めた.さすがに,USBキーボードをつないだりというのは鬱陶しいので,組み立てていなかったUSB-UARTボードにピンを立ててRaspberry Piに立っているピンヘッダーのUART端子とつないでブート.

回路図はここ(PDF)を参考に.2列のピンヘッダー(P1)の6番がGND,8番がTXD0,10番がRXD0なので,それぞれUSB-UARTアダプタのGND,RXD,TXDに接続.ボーレートは115200 bpsに設定.

でこんな感じに表示される.

20130831_NetBSD_RPI_BOOT

dmesgはこんな感じ.エラーがパラパラでているけど,何とか動作している(?)

続きを読む Raspberry Pi type B