ラベル wheezy の投稿を表示しています。 すべての投稿を表示
ラベル wheezy の投稿を表示しています。 すべての投稿を表示

2014/12/23

RaspberryPi B+の立ち上げ

先日RaspberryPi B+を立ち上げた時に、キーボードの設定でつまづいたので備忘録として記録しておきます。

参考資料


1.用意するもの


ここを参考に準備しました。
  • マイクロSDカード(推奨:8GB class 4 SD card) - 手持ち品が2GBだったので近所のコンビニで8GB品を購入
  • キーボード&マウス(USBタイプ) - 手持ち品を利用
  • ディスプレイ&HDMIケーブル - 手持ち品を利用
  • 電源(マイクロUSBタイプ) - 手持ち品を利用

2.OSイメージの準備


RaspberryPiはマイクロSDカードに格納されたOSイメージを読み込むことにより起動する仕組みのようです。従ってマイクロSDカードが必要です。
OSイメージは下記URLからダウンロードできます。 OSイメージは色々あるのですが、普段Debianを使用しているのでDebian/Wheezyベースの"RASPBIAN"にしました。
またSDカードへの書き込みもLinuxPC(Debian)ベースで行うことにしました。

以下、LinuxPC(Debian)での作業です。
$ wget http://downloads.raspberrypi.org/raspbian_latest
→ファイルサイズは934MByte。
$ mv raspbian_latest 2014-09-09-wheezy-raspbian.zip
→wgetがファイル名をraspbian_latestに変更してしまったので元に戻しました。

・SHA1の確認(951a9092dd160ea06195963d1afb47220588ed84)

$ sha1sum 2014-09-09-wheezy-raspbian.zip
951a9092dd160ea06195963d1afb47220588ed84  2014-09-09-wheezy-raspbian.zip
→合っている

・ファイルの解凍

$ unzip 2014-09-09-wheezy-raspbian.zip
Archive:  2014-09-09-wheezy-raspbian.zip
  inflating: 2014-09-09-wheezy-raspbian.img
2014-09-09-wheezy-raspbian.imgは約3.1GB。
マイクロSDカードをSDカードリーダに差し、SDカードリーダをLinuxPC(Debian)に接続。

・マイクロSDカードのデバイス名を確認。

$ dmesg |tail
[6822806.212809] sd 5:0:0:0: [sdb] Write Protect is off
[6822806.212818] sd 5:0:0:0: [sdb] Mode Sense: 03 00 00 00
[6822806.214045] sd 5:0:0:0: [sdb] No Caching mode page found
[6822806.214154] sd 5:0:0:0: [sdb] Assuming drive cache: write through
[6822806.218921] sd 5:0:0:0: [sdb] No Caching mode page found
[6822806.219032] sd 5:0:0:0: [sdb] Assuming drive cache: write through
[6822806.220504]  sdb: sdb1
[6822806.224348] sd 5:0:0:0: [sdb] No Caching mode page found
[6822806.224500] sd 5:0:0:0: [sdb] Assuming drive cache: write through
[6822806.224651] sd 5:0:0:0: [sdb] Attached SCSI removable disk
→SDカードリーダのデバイス名は/dev/sdb

・OSイメージをマイクロSDカードに書き込む(参考URL

$ sudo dd bs=4M if=2014-09-09-wheezy-raspbian.img of=/dev/sdb
[sudo] password for XXXX:
781+1 レコード入力
781+1 レコード出力
3276800000 バイト (3.3 GB) コピーされました、 758.91 秒、 4.3 MB/秒

これでマイクロSDカードの準備は完了です。

3.RaspberryPiB+起動


マイクロSDカードをRaspberryPiB+に挿入。HDMIコネクタにモニタ、USBポートにキーボードとマウスを接続し、マイクロUSBコネクタにACアダプタを接続して電源投入する。

起動メッセージが流れていくので少し待つ。
しばらくすると、Raspbianの基本的な設定を行う画面が表示されます。

私は、以下の設定をしました

  • ファイルシステム拡張 →実行
  • ユーザ"pi"のパスワード変更 →実行
  • Locale変更 →日本語(UTF-8)を追加
  • timezone変更 →Asia/Tokyo
  • キーボード変更 →106-Keyboardがない!迷った挙句デフォルト設定のままとした。
 →finish
 →再起動
 →ユーザ"pi"に新パスワードでログインする
 →"startx" (X環境に)
 →キーボードのキーアサインがおかしい
 →検索して下記URLを発見

 Raspberry Piクイックスタートアップガイド (日本語)の補足

なるほど、"Generic 105-key (Intl) PC → Other → Japanese"を選択すれば良いのか。。

$ sudo raspi-config
で、もう一度設定画面に入りキーボードの設定を実施。すぐには反映されないようで、RaspberreyPiを再起動したらキーボードのキーアサインが正常になった。

4.rootパスワードの変更


ユーザ"pi"でログイン後、以下のコマンドを実行し、新パスワードを入力するとrootのパスワードが変更されます。
$ sudo passwd

5.OSの最新化


RJ45コネクタにイーサケーブルを接続。(IPアドレスはDHCPで自動設定されるので、DHCPサーバの環境が必要)以下のコマンドを実行する。
$ sudo apt-get update
$ sudo apt-get upgrade

以上

2014/05/28

Deep Mandelbrotの使い方

 Deep Mandelbrotの引数に'-c'があります。これは色の指定ができます。

-c specify color mode (0-255) [default: 0] or 'auto'

 上記によると入力可能な値は0-255,autoに見えますが、実際に入力可能な値は0-21,autoのようです。それ以外の値を指定するとエラーになります。また0とautoは同じ結果になるようです。

 実際にどんな色になるのか試してみたのでご覧ください。

c=auto (default)


c=0 (default)


c=1 (pink on light steel blue)


c=2 (shades of green)


c=3 (mistyrose and midnightblue)


c=4 (mistyrose, red on midnightblue)


c=5 (grey, dark green, mistyrose)


c=6 (dark slate grey and maroon on bright background)


c=7 (White/DarkBlue/Rose/DarkGreen/Gold)


c=8 (Ice/blue/dark-red)


c=9 (Red/White)


c=10 (DarkBlue/DarkRed)


c=11 (Sand, DarkBlue/RedBrick)


c=12 (Ice, DarkRed)


c=13 (shades of dark red)


c=14 (shades of dark red + dark gold)


c=15 (pink+blue on bright)


c=16 (shades of grey)


c=17 (shades of grey + dark blue)


c=18 (shades of grey + magenta)


c=19 (shades of grey + green)


c=20 (shades of grey + red)


c=21 (darkred,steelblue,gold)


c=255 (Linear functions)


2014/05/27

マンデルブロ集合ギャラリー

 Deep Mandelbrotを使って作成した画像です。


centerx = 0.3007100003
centery = 0.02006000303
radius  = 0.00000000001
maxiter = 30000

centerx = 0.3007100002979624312
centery = 0.02006000303424897
radius  = 0.0000000000000000001
maxiter = 30000

centerx = 0.300710000297962431204
centery = 0.020060003034248969999
radius  = 0.000000000000000000001
maxiter = 30000

centerx = 0.005002063072287
centery = 0.849947000274766
radius  = 0.000000000000001
maxiter = 30000

centerx = 0.00500206307228665347
centery = 0.84994700027476510513
radius  = 0.00000000000000000001
maxiter = 30000

centerx = -1.484
centery =  0.0
radius  =  0.00000000000000000000000000000000000000000000001
maxiter = 600000

2014/05/25

Deep Mandelbrotの紹介

Deep Mandelbrot」というソフトを紹介します。

■ソフトの目的


マンデルブロ集合を表示するソフトです。

■特徴


  • マルチスレッド対応
  • libgmpを用いた任意精度計算
  • PNG形式の画像を出力
  • 画像品質を向上させるオーバサンプリング
  • 簡単な動画作成機能(*1)
 *1: 私はまだ試したことがありません。

■入手先


 ページの最後のほうにある"Download"から"mandelbrot-1.0.tar.gz"を入手ずる。

■コンパイル方法


 基本的には"mandelbrot-1.0.tar.gz"の中に入っている"INSTAL"ファイルに記載されている手順を実行すればOKです。私はいつものごとくdebian/wheezy上でコンパイルしました。

(1) ライブラリの準備
 コンパイルには以下のライブラリが必要とのこと。

  • libgd2-xpm-dev
  • libgmp3-dev
 自分のdebianに入っていない場合は以下のコマンドでインストールします。
# apt-get install libgd2-xpm-dev
# apt-get install libgmp3-dev

(2) makeする
 makeが成功すると./docの下に"mandelbrot"という実行ファイルが出来ます。

# cmake .      (cmakeがない場合はapt-get install cmakeを実行)
# make
# make install (必要な場合)

■使い方


 引数"-?"を付けてコマンドを実行すると使用方法が表示されます。
$ mandelbrot -?
Deep Mandelbrot v1.0, (C)2008-2010 by Herbert Haas and Tim Horton
 Started: Sat May 24 19:46:25 2014
Deep Mandelbrot v1.0, (C)2008-2011 by Herbert Haas and Tim Horton

USAGE: mandelbrot [OPTIONS] 

 -?                 print this help
 -v                 be verbose during execution
 -V                 be even more verbose during execution
 -d                 create distance data file for further analysis
 -H                 create histogram file for further analysis
 -g                 create a PNG version with a white grid
 -i        maximum iteration depth (1-999999) [default: 200]
 -t    number of threads to be used (1-30) [default: 4]
 -o        filename for computed image (no file extension needed)
 -f         create PNG with data from this file (no computation)
                    (e.g. the result of a distance file (-d option) can be used)
 -s   amount of oversampling (1-8) [default: 2]
 -w          image pixel width (10-10000) [default: 500]
 -h         image pixel height (10-10000) [default: 500]
 -c     specify color mode (0-255) [default: 0] or 'auto'
 -m      color of Mandelbrot set (if not black) as six hexadecimal
                    digits, e. g. ffa500.

 -M          create movie using  frames
 -x       target of movie on x-axis in percent of current image
 -y       target of movie on y-axis in percent of current image
                 NOTE: valid x/y-parameters: {-100..+100}, with respect to the
                 center of the current frame {0,0}
 -r         radius of last movie frame in percent of first frame

 NOTE:
   Command line parameters overwrite the correspondig settings in .
   If only -w OR only -h is given, then the other parameter is assigned the same value.

■使用例


(1) デフォルト
 引数を何もつけずに実行するとマンデルブロ集合の全体図を出力します。

$ mandelbrot
$ ls
mandelbrot.png
$
図1 mandelbrot.png

(2) コンフィグファイルを指定して実行
 コンフィグファイルのサンプルが./doc/input_files/にあります。

$ ls doc/input_files/
README  neck  satellite  seahorse
$
リスト1 seahorse (コンフィグファイル)
# seahorse
centerx = -0.7435669
centery = 0.1314023
radius = 0.0011439
maxiter = 500
  • 表示したい位置の中心座標(centerx,cenery)
  • 半径(radius)
  • 計算の繰り返し上限値(maxiter)
$ mandelbrot seahorse
$ ls
seahorse.png
図2 seahorse.png

(3) コンフィグファイルと引数の組み合わせ例

$ namdelbrot -g seahorse       // PNG画像に座標目盛を付けます
$ namdelbrot -w 2000 seahorse  // PNG画像を2000x2000ピクセルで出力します
$ namdelbrot -i 3000 seahorse  // 計算の繰り返し上限値を3000にします(*2)
$ namdelbrot -s 3 seahorse     // オーバサンプリング値を3にします
 *2 : コンフィグファイルのmaxiter値と競合しますが、引数の値が優先されます

2014/04/12

PWM制御でLED点滅

 今度はLED点滅にPWM(Pulse Width Modulation)を使ってみます。

ゴール


  • LEDの点滅周期は約2秒(点灯1秒、消灯1秒)
  • PWM制御で「ふわっと点灯」、「ふわっと消灯」を実現する

ふわっと点灯、ふわっと消灯


 「ふわっと」を実現するため、LEDの明るさを制御します。LED輝度制御方法として今回はPWMを使います。PWMは変調方式の一つで、パルス波のDuty比(点灯と消灯の比率)を変化させることにより変調を行う方式です。簡単に言うと、
  • LEDを超高速点滅させる
  • 点滅時のDuty比を変えることにより明るさを調節する
となります。
 「超高速点滅」とは、例えば1秒間に1,000回点滅のように点滅してることが人間に認識できないほど速くします。
 「Duty比を変えることにより明るさを調節」というのは、例えばDuty比=90%(点灯90%,消灯10%)とDuty比=10%(点灯10%,消灯10%)ではDuty比=90%のほうが明るく見えるということです。

AVRでのPWM制御について


 AVRはタイマ/カウンタをPWMモードにすることにより、PWM制御を行うことができます。8bitタイマと16bitタイマがありますが、Duty比の指定は8bit(=256段階)あれば十分なので8bitタイマであるTimer/Counter0を使います。タイマの動作モードはFast PWM Mode (WGM2:0=3)を使います。このモードはパルス波周期が256 timer clock固定で、Duty比はOCR0Aレジスタで指定できます。Timer clockを1MHzにすると、LEDの点滅回数は1秒間に3,900回ぐらいになります。タイマで作ったPWM信号はOC0A(PD6ピン)に出力されます。

LEDとPD6ピンの接続


 参考文献2を見るとマイコンのPB5端子の先にLEDが接続されています。PD6端子でLEDを制御するため、PD6端子とPB5端子を接続する必要があります。どちらの端子もマイコンボードのコネクタに接続されているので、コネクタ上で接続するのが簡単です。
図1 コネクタ上の接続(PB5端子とPD6端子)

 なお、PD6端子とPB5端子がショートしないようにプログラム上でPB5端子をInputに設定しておきます。

プログラム


 例によってdebian環境(avr-gcc+avr-libc)で作成しています。

リスト1 main.c

/*
 * LED点滅プログラム(PWM制御)
 *
 * For AE-ATmega borad
 *
 * Ver0.1 2013/04/12
 */

/*
 * AE-ATmega boardはPORTB bit5にLEDが接続されている。
 * このLEDをPWM制御で点灯させるため、タイマ出力であるPORTD Bit6を
 * LEDに接続する。(ショートしないようにPORTB bit5は入力モードに
 * しておく)
 */

#include <avr/io.h>
#include <util/delay.h>

int main() {
  unsigned char i = 0;

  DDRB = 0x00;          // PORTB bit5を入力モードにする
  DDRD = _BV(DD6);      // PORTD bit6を出力モードにする

  /* Set 8-bit Timer Register */
  TCCR0A = _BV(COM0A1) | _BV(WGM01) | _BV(WGM00);
  TCCR0B = _BV(CS00);

  /* タイマ設定
   * clkI/O      : 1MHz (= 内蔵OSC 8MHz + CLKDIV8)
   * プリスケーラ: なし
   * モード      : Mode3 (高速PWM/0xFF)
   * OC0A端子    : 非反転モードで使用
   */

  while(1) {
    while(i<0xFF) {     // 2mSec間隔で輝度を上げていく
      OCR0A = ++i;
      _delay_ms(2);
    }
    _delay_ms(1000);    // 最高輝度で1秒保持

    while(i>0x00) {     // 2mSec間隔で輝度を下げていく
      OCR0A = --i;
      _delay_ms(2);
    }
    _delay_ms(1000);    // 最低輝度で1秒保持
  }
}

動画1 点滅の様子

参考文献


  1. Atmel ATmega48P/V 88P/V 168P/V datasheet
  2. ATmega168/328マイコンボード回路図

2014/01/22

無線LAN USBアダプタを用いたdebian(wheezy)インストール

インターネット環境のない所でdebianのインストール作業を行ったので、そのメモです。

■方針


     
  • DVD ISOイメージからインストールする。  
  • 手持ちの無線LAN USBアダプタ(PCI GW-US54GXS)からiPhone(テザリング)に接続し、DVDにないもの、更新されたソフトウェアはDebianのミラーサイトから入手する。

■用意するもの


  • 無線LAN USBアダプタ PCI GW-US54GXS
  • USBメモリ (5GB以上)
  • USBメモリ(50MB以上)

■作業


(1)DVD ISOイメージの入手
ここの情報を参考に、DVD ISOイメージ(debian-7.3.0-amd64-DVD-1.iso)を入手します。

(2)USBメモリ(5GB以上)にISOイメージを書き込む

ここの情報を参考にUSBメモリにDVD ISOイメージを書き込みます。
# cp debian-7.3.0-amd64-DVD-1.iso /dev/sdb
# sync

(3)無線LAN USBアダプタのファームウェアを入手

debianのインストール中にPCI GW-US54GXSを使うにはファームウェアが必要なようです。ファームウェアを準備せずにインストールを始めると、途中で「zd1211/ad1211b_ubというファームウェアが必要」と言われます。
 ここを参考にファームウェアを入手します。
# wget http://cdimage.debian.org/cdimage/unofficial/non-free/firmware/wheezy/current/firmware.tar.gz

(4)USBメモリ(50MB以上)にファームウェアを書き込む

# mount /dev/sdb1 /media
# cd /media
# tar xvf hogehoge/firmware.tar.gz
# cd /
# umount /media

(5)PCをUSBメモリから起動できるように設定する

BIOSまたはUEFIの設定メニューから起動デバイス選択メニューを選び、内臓HDDよりUSBメモリのほうが優先度が高くなるように設定します。詳しくはここを参照

(6)PCを起動する

PCのUSBポートに下記を接続し、電源投入する。
  • USBメモリ(ISOイメージ)
  • USBメモリ(ファームウェア)
  • 無線LAN USBアダプタ

(7)インストールする

PCの電源を入れてインストーラが起動したら画面の指示に従ってインストール作業を進める。
  • ネットワークインターフェースはwlan0を選択する
  • その前にiPhoneのテザリングをONにしておく。
  • iphoneのSSIDが見つかったら、WPA2を選択してパスフレーズを入力する
これ以外の作業は普通のインストール作業と同じです。 ちなみにiPhoneテザリング時の通信量は数十MB程度でした。

2014/01/06

Debianのアップグレード(squeeze→wheezy)

自宅サーバで稼働しているDebianをアップグレードしたので、そのメモです。

■前提条件


ハードウェア: Intel D510MO
OS: Debian squeeze amd64

■参考文献


以下の文献を参考にしました。
Debian 7.0 (wheezy) リリースノート (64 ビット PC 用)
 -第4章 Debian 6.0 (squeeze) からのアップグレード

■パッケージの最新化


バックアップする前にパッケージを最新化します。
# apt-get update
# apt-get upgrade

■バックアップ


必要なファイルをバックアップします。

■アップグレードの準備


telnet接続、X window systemからの操作はダメとのことなので、サーバにディスプレイとキーボードを接続して直接ログインします。(X windowはインストールしていない)

★文字化けするので環境変数LANGを変更しておく。
# export LANG=C
★システムの状態をチェックする。
# aptitude
→ "g"を押して更新&インストールする。
# dpkg --audit
# dpkg -l | pager
# dpkg --get-selections "*"
# aptitude search "~ahold"
# dpkg --get-selections | grep 'hold$'
→以下の状態がないことを確認
 ・未完了のパッケージ (Half-Installed)
 ・設定に失敗したパッケージ (Failed-Config)
 ・hold 状態
★proposed-updates セクション
 →/etc/apt/sources.list ファイルに proposed-updates セクションがないことを確認。

★非公式なソースとバックポートパッケージ
 →該当なしを確認

★APT の取得先 (ソース) の準備
  • /etc/apt/sources.listを編集。
  • squeezeのある行をコピーして、squeezeをwheezyに置換する。
  • squeezeのある行は先頭に#を付けて無効化する。

■パッケージのアップグレード


# script -t 2> upgrade-wheezy_1.time -a upgrade-wheezy_1.script
# apt-get update
# apt-get -o APT::Get::Trivial-Only=true dist-upgrade
→空きスペースあり。

# apt-get upgrade
# apt-get dist-upgrade (エラーで止まったので-fを付けて再実行)
# apt-get -f dist-upgrade

■カーネルと関連パッケージのアップグレード


# dpkg -l "linux-image*" | grep ^ii
→あった。

再起動
# sync
# /sbin/telinit 6

バーニングシップフラクタル

bsf.knit 今回は『バーニングシップフラクタル』についての備忘録です。 バーニングシップフラクタルとは? Wikipedia ...